Я пытаюсь построить бесшумный мост для мониторинга. Мой компьютер работает под управлением Linux 2.6, brctl 1.4 и имеет 3 сетевых адаптера:
eth0 с назначенным IP-адресом, используемый для обслуживания SSH
eth1 и eth2, 2 порта моста br0
все устанавливается в etc / network / interfaces:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.1.120
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.254
auto br0
iface br0 inet manual
bridge_ports eth1 eth2
bridge_maxwait 0
bridge_stp off
Таким образом, как eth0, так и eth1 подключены к моей локальной сети (eth2 подключен к моему шлюзу) Но только eth0 имеет IP-адрес.
Мост работает нормально, и я могу отслеживать трафик с помощью tcpdump -i br0 или других инструментов.
Поскольку у моста нет IP-адреса, он не должен передавать трафик. Однако иногда он отвечает на запрос arp вместо eth0.
Предполагая, что eth0 имеет 00: 01: 02: ab: 00: 00, а eth1 имеет 00: 01: 02: ab: 00: 01 для MAC-адреса: это то, что я получаю на моей локальной станции, на которой запущен wirehark:
packet no time source dest protocol info
4303 1063.539943 00:01:02:ab:00:01 Giga-Byt_46:d9:fe ARP 192.168.1.120 is at 00:01:02:ab:00:01
4305 1063.539958 00:01:02:ab:00:00 Giga-Byt_46:d9:fe ARP 192.168.1.120 is at 00:01:02:ab:00:00
Поскольку мой «настоящий» IP-интерфейс отвечает на миллисекунды позже, но это не могло быть так ... Как я могу решить эту проблему?
http://kb.linuxvirtualserver.org/wiki/Using_arp_announce/arp_ignore_to_disable_ARP должен помочь вам, если вы попросите мост не отвечать на запросы arp.
Другой вариант помимо использования / proc / * / arp_ignore - избавиться от интерфейса eth0 и поместить IP-адрес на мост:
auto br0
iface br0 inet manual
bridge_ports eth1 eth2
bridge_maxwait 0
bridge_stp off
address 192.168.1.120
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.254
Лично я думаю, что это несколько упрощает концептуально, потому что тогда интерфейс напрямую подключается к мосту.