Linux-Networking
是否可以在 Linux 網橋上啟用埠隔離?
在大多數託管交換機上,您可以啟用第 2 層埠隔離。實施和術語因供應商而異,但一般來說,您將一個或多個埠保持在預設混雜 (Cisco) 或上行鏈路 (HP) 狀態,並將其他埠配置為隔離 (Cisco) 或專用 (HP)。之後,隔離埠只能與混雜埠通信,而不能相互通信。
有沒有辦法通過 Linux 橋來實現這一點,例如。將虛擬機相互隔離?也許通過ebtables?
您可以嘗試使用ebtables並創建自己的涉及輸入/輸出橋埠的規則。
我手頭沒有帶網橋的伺服器,但我會做這樣的事情:
ebtables -P FORWARD DROP ebtables -F FORWARD ebtables -A FORWARD -i $uplinkPort -j ACCEPT # let the traffic flow from uplink to any ports ebtables -A FORWARD -o $uplinkPort -j ACCEPT # let the traffic flow from any ports to uplink
正如@pQd 所要求的,當主機是上行鏈路並且所有虛擬機應該相互隔離時,這是一個與虛擬機進行埠隔離的工作範例(這裡:基於Proxmox VE )。我將其用於內部服務網路(DNS、更新等)。網橋是
vmbr1
,虛擬乙太網設備是vethNNN.1
(NNN
VID 在哪裡)。如果您只想隔離,這應該足夠了:ebtables --append FORWARD --logical-in vmbr1 --jump DROP
如果要配置多個網橋並且其他虛擬機也應該是上行鏈路(此處:
veth100.1
和veth102.1
),則這樣的內容更合適(未經測試):for br in $(seq 0 1); do br=vmbr$br ebtables --new-chain $br ebtables --policy $br DROP ebtables --append FORWARD --logical-in $br --jump $br done for if in 100.1 102.1; do br=vmbr$(echo $if | cut -d. -f2) if=veth$if ebtables --append $br --in-if $if ebtables --append $br --out-if $if done
如果主機不應該是上行鏈路,這應該可以工作(雖然我也沒有嘗試過):
ebtables --append INPUT --logical-in vmbr1 --jump vmbr1 ebtables --append OUTPUT --logical-out vmbr1 --jump vmbr1