Em seu exemplo específico, br0
está consumindo os pacotes de eth0
e o código da VLAN não os está obtendo. Esse é provavelmente o comportamento certo.
Se você está adicionando uma porta de tronco a uma ponte, você deve executar as VLANs fora da ponte:
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
Eu não tenho minha bridge & vlan configuração acessível, então eu não posso testar isso, mas faz sentido lógico para mim. Ele elimina o conflito entre se a VLAN ou bridge consome pacotes da eth0 e deixa as camadas claras.