linux上透明橋的arp問題
我一直在嘗試通過將虛擬機放在具有 2 個介面(一個在前面,一個在後面)的透明網橋後面來保護我的 esx 伺服器上的虛擬機。
我的意圖是將所有防火牆規則放在一個地方(而不是在每個虛擬伺服器上)。
我一直在使用基於 arch linux 的空白新虛擬機作為橋樑(但我懷疑它是哪個品牌的 linux 並不重要)。
我擁有的是 2 個虛擬交換機(因此是兩個虛擬網路,VN_front 和 VN_back),每個都有 2 種類型的埠(交換/分離或混雜/機器可以看到所有數據包)。
在我的橋接機器上,我設置了 2 個虛擬 NIC,一個在 VN_front,一個在 VN_back,兩者都處於混雜模式。
我創建了一個包含兩個 NIC 的網橋 br0:
brctl addbr br0 brctl stp br0 off brctl addif br0 front_if brctl addif br0 back_if
然後把它們帶上來:
ifconfig front_if 0.0.0.0 promisc ifconfig back_if 0.0.0.0 promisc ifconfig br0 0.0.0.0
(我使用 promisc 模式,因為我不確定我是否可以不用,認為數據包可能沒有到達 NIC)
然後我將我的一個虛擬伺服器放在 VN_front 上,並將其插入到 VN_back(這是我正在考慮的漂亮案例,只需更改它們插入的 VN 就可以移動我的伺服器,而無需更改任何內容在配置中)。
然後我查看了我的無地址網橋“看到”的macs
brctl showmacs br0
,它確實從兩邊顯示了我的伺服器:我得到的東西看起來像這樣:
port no mac addr is local? ageing timer 2 00:0c:29:e1:54:75 no 9.27 1 00:0c:29:fd:86:0c no 9.27 2 00:50:56:90:05:86 no 73.38 1 00:50:56:90:05:88 no 0.10 2 00:50:56:90:05:8b yes 0.00 << FRONT VN 1 00:50:56:90:05:8c yes 0.00 << BACK VN 2 00:50:56:90:19:18 no 13.55 2 00:50:56:90:3c:cf no 13.57
問題是插入前/後的伺服器未顯示在正確的埠上。
我懷疑 ARP 世界中發生了一些可怕的事情…… :-/
如果我從前端虛擬伺服器 ping 到後端虛擬伺服器,則只有後端機器在前端 ping 某些東西時,我才能看到後端機器。一旦我停止來自後面機器的 ping,來自前面機器的 ping 就停止通過……
我注意到,如果後端機器 ping,那麼它在網橋上的埠是正確的……
我嘗試使用 /proc/sys 的 arp_ 開關,但對最終結果沒有明顯影響… /proc/sys/net/ipv4/ip_forward 在使用時似乎沒有任何用處橋(似乎這一切都由 brctl 處理)/proc/sys/net/ipv4/conf// *arp_*似乎也沒有太大變化……(嘗試將 arp_announce 設置為 2 或 8 - 就像其他地方建議的那樣 - 和 arp_ignore 到0 或 1)
我見過的所有範例在兩側都有不同的子網,例如 10.0.1.0/24 和 10.0.2.0/24 …在我的情況下,我希望兩側都有 10.0.1.0/24(就像透明開關一樣 - 除了這是一個隱藏的韌體)。
打開/關閉 stp 似乎對我的問題沒有任何影響。
就好像 arp 數據包通過網橋,用虛假數據破壞另一端……我試圖
-arp
在每個介面上使用 br0,前,後……它完全破壞了這件事……我懷疑這與雙方在同一子網中有關…我曾考慮將我的所有機器放在 fw 後面,以便在後面有所有相同的子網……但我被我的提供商的網關卡在前面,我的子網的一部分(實際上是 3 個設備)路由整個子網),所以無論我做什麼,我總是有來自同一子網的 ips ……(我在我的委派子網上使用固定的前端 IPs)。
我很茫然…… -_-’’ 謝謝你的幫助。
(有人嘗試過這樣的事情嗎?在 ESXi 中?)
(這不僅僅是一個噱頭,其想法是在某些伺服器上執行類似 fail2ban 的東西,將他們被禁止的 IP 發送到網橋/防火牆,以便它也可以禁止它們 - 一次性從同一個攻擊者手中拯救所有其他伺服器,允許一些honeypot從任何合適的響應中觸發 fw,以及類似的東西……
我知道我可以使用像 snort 這樣的東西,但它以完全不同的方式解決了一些完全不同類型的問題……)
如果我理解正確,您所需的網路是:
+----------+ +-----+ +---------+ <--inet--+ VN_front +--+ br0 +--+ VN_back | +--+-------+ +-----+ +------+--+ | | | | +--+----------+ +----------+--+ | VM | | VM | | 10.0.1.2/24 | | 10.0.1.3/24 | +-------------+ +-------------+
通過左側箭頭使用 Internet 網關?
您在網橋上使用 ebtables 或 iptables 來防火牆網路“後端”部分的內容?
我確信這可以工作,但我不會這樣做。這是一個複雜且不常見的設置。就像程序員說的那樣,總有兩個人會調試你創建的任何東西——你,以及六個月後你忘記這一切的你。
您在兩個子網中看到的所有範例(可能更簡單的防火牆)都是常見的做法,這是有原因的——它們第一次工作,配置、更改、維護和故障排除都很明顯。
簡單就是網路中的一切。避免建構複雜的網路。為訓練有素的猴子(甚至 MCSE)可以執行的簡單而穩定的網路感到自豪。讓你的老闆給你關於你沒有產生的票數的 KPI,以證明並為這種穩定性提供激勵。
(如果您的 MAC 出現在錯誤的網橋埠後面,那是因為您創建了一個網路環路,並且 ARP 請求正在廣播到網橋的兩個介面,並且收到的最後一個介面了解 MAC 的位置。從您的後來的評論,聽起來你已經這樣做了。)