Linux

為什麼將非 VLAN 介面添加到網橋會破壞 VLAN 介面?

  • August 11, 2011

我正在使用 briges 上的 VLAN,發現如果我向任何網橋添加非 VLAN 介面,它會破壞所有 VLAN 介面 - 數據包離開就好了,但返回的數據包(經過適當的 VLAN 標記)被丟棄某處。從網橋中刪除非 VLAN 介面的那一刻,VLAN 介面又開始工作。

這是什麼原因?它是一個錯誤嗎?

要清除任何可能的問題:

#setup bridges and vlans
vconfig add eth0 2
vconfig add eth0 3
brctl addbr br2
brctl addbr br3
brctl addif br2 eth2.2
brctl addif br3 eth2.3
ip link set dev br2 up
ip link set dev br3 up

#wait for forwarding state and test
arping -I br2 10.10.10.1
#this works - I get replies
arping -I br3 192.168.1.1
#this works - I get replies

brctl addbr br0
brctl addif eth0

arping -I br2 10.10.10.1
#broken - no replies. Wireshark shows reply packets coming in exactly as before.
arping -I br3 192.168.1.1
#also broken

ip link set br0 up
#wait for forwarding mode, then...
arping -I br3 192.168.1.1
#still broken

brctl delif br0 eth0
arping -I br3 192.168.1.1
#working again!

在您的特定範例中,br0正在消耗數據包,eth0而 VLAN 程式碼沒有獲取它們。這可能是正確的行為。

如果要將中繼埠添加到網橋,則應在網橋之外執行 VLAN:

brctl addbr br0
brctl addif br0 eth0
ip link set br0 up

vconfig add br0 2
brctl addbr br2
brctl addif br2 br0.2
ip link set br2 up

vconfig add br0 3
brctl addbr br3
brctl addif br3 br0.3
ip link set br3 up

我沒有方便的網橋和 vlan 設置,所以我無法對此進行測試,但這對我來說是合乎邏輯的。它消除了VLAN或網橋是否消耗來自eth0的數據包之間的衝突,並使分層清晰。

引用自:https://unix.stackexchange.com/questions/18576