我对 Linux 下以下奇怪的桥接/arp 行为感到困惑。它似乎以某种方式过滤了定向 ARP 请求,而它应该将它们转发到桥接的另一端。为了测试,我在同一网络中的工作站上运行以下命令:
arping -t 00:de:ad:be:ef:00 xx.xx.xx.102
地址 xx.xx.xx.102 在网络上的任何地方都不存在,MAC 地址也不存在(显然:P)
如果服务器配置为不带桥接,则会出现预期结果:tcpdump
混杂模式下的计算机会在接口上看到传入的 ARP 请求。网络中的其他计算机也是如此。这确定网络基础设施正在运行,即交换机没有问题。
现在,如果我添加eth0
到桥接接口,它就会停止工作:tcpdump
不再显示这些 ARP 请求,不在eth0
,也不在br0
!就好像请求在某处被过滤了,但我完全不知道这应该发生在哪里。
更有趣的是,这是一台 Debian wheezy 机器。squeeze 机器没有显示此行为。两者都有使用tg3
驱动程序的 Broadcom 卡。与 2.6 系列相比,3.2 系列内核在桥接或 MAC 过滤或类似方面有什么变化吗?
答案1
所以,我终于发现了这个问题的根本原因。禁用网卡的 IMPI 支持可以让一切顺利运行!因此,对于所有在谷歌上搜索此问题的沮丧的系统管理员:下载 Broadcom 诊断工具(请参阅这里),尝试找到可以启动到 DOS 的东西(事实证明这是一个挑战),然后运行b57udiag -c 0 -ipmi 0
并b57udiag -c 1 -ipmi 0
关闭两张卡上的 IMPI,它就解决了!请注意,关闭 BMC 中的 IPMI 是不够的,必须在网卡本身中将其关闭。