Добрый день. Сеть настроена следующим образом: два физических порта eth0 и eth1. На eth0 настроены два vlan (vlanid 2 и 3), трафик без vlan-ов на нём не нужен. + есть мост между eth1 и одним из vlan-ов.
port eth1 bridge br0 vlan eth0.2
ip 0.0.0.0 ---- ip 192.168.1.103 ---- ip 0.0.0.0 ----
mac 0a:81:c7:64:2c:8b mac 0a:81:c7:64:2c:8b mac 0a:81:c7:64:2c:8b | port eth0
|---- ip 0.0.0.0
vlan eth0.3 | mac d2:37:d1:13:3c:42
ip 100.255.255.0 ----
mac d2:37:d1:13:3c:42
В системе видится так:
br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.103 netmask 255.255.255.0 broadcast 192.168.1.255
ether 0a:81:c7:64:2c:8b txqueuelen 1000 (Ethernet)
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether d2:37:d1:13:3c:42 txqueuelen 1000 (Ethernet)
eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether 0a:81:c7:64:2c:8b txqueuelen 1000 (Ethernet)
eth0.2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether 0a:81:c7:64:2c:8b txqueuelen 1000 (Ethernet)
eth0.3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 100.255.255.2 netmask 255.255.255.0 broadcast 0.0.0.0
ether d2:37:d1:13:3c:42 txqueuelen 1000 (Ethernet)
и соответствующая этим настройкам routing table:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 br0
100.255.255.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0.3
При выполнении ping 192.168.1.1 я ожидаю, что система обратится к routing table, там увидит что для этой подсети указан интерфейс br0. В этот интерфейс отправится широковещательный arp запрос «who has 192.168.1.0 ?». И если я буду смотреть wireshark-ом снаружи трафик с порта eth0, я должен увидеть, что этот запрос выйдет с VLAN_tag_id=2 и dst=0a:81:c7:64:2c:8b. Но вылетает пакет без тега vlan и dst=d2:37:d1:13:3c:42. Как будто пакет был отправлен не в br0, а в eth0, которого в routing вообще нет. Чтобы убедиться в этом, пробую сделать arpping, явно указав интерфейс.
arping 192.168.1.1 -I br0
Так всё работает - вылетает пакет с VLAN_tag_id=2 и dst=0a:81:c7:64:2c:8b. Вопрос - почему система игнорирует routing table и посылает arp пакеты не в br0 а в eth0 когда я делаю обычный пинг? Как изменить это поведение?