Linux
為什麼將非 VLAN 介面添加到網橋會破壞 VLAN 介面?
我正在使用 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的數據包之間的衝突,並使分層清晰。