Почему добавление не-VLAN-интерфейса к мосту нарушает VLAN-интерфейсы?

Я работаю с 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, и делает выравнивание четким.