Linux 桥接器在错误的接口上响应 arp 吗?

Linux 桥接器在错误的接口上响应 arp 吗?

我正在尝试构建一个用于监控目的的静默桥。我的计算机运行的是 Linux 2.6、brctl 1.4,有 3 个 NIC:
eth0,已分配 IP,用于 SSH 维护
eth1 和 eth2,即桥 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 的 mac 地址为 00:01:02:ab:00:00,eth1 的 mac 地址为 00:01:02:ab:00:01:这是我在本地站运行 wireshark 得到的结果:

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 接口在几毫秒后才做出响应,但事实可能并非如此......我该如何解决这个问题?

答案1

http://kb.linuxvirtualserver.org/wiki/Using_arp_announce/arp_ignore_to_disable_ARP如果您要求网桥不应答 arp 请求,应该会对您有所帮助。

答案2

除了使用 /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

就我个人而言,我认为这在概念上简化了一些,因为接口直接在桥上。

相关内容