我们有一个盒子刚刚开始出现故障,我们不太清楚原因。它的 IP 地址(虚拟示例)为 eth0 上的 199.199.199.1、eth1 上的 127.0.0.2 和 eth1:0 上的 199.199.199.2。
最近,出于某种原因,eth0 开始发送声称 199.199.199.2 的免费 arp。这会对需要通过 eth1 路由的 199.199.199.2 流量造成各种破坏。我正在阅读有关 arp flux 的内容,但似乎这不是问题所在,因为据我所知,这只是对 arp 请求的回复,而不是免费 arp。在发送这些免费 arp 的进程中没有看到任何明显的东西。
我的问题是,有什么方法可以找出发送这些请求的人吗?类似于netstat -p
arp 的方法?
这是一个运行 Linux 内核 2.6.18 的盒子。
答案1
听起来你正在运行一个经典的虚拟服务器设置。将以下 2 个选项放入 /etc/sysctl.conf,然后运行sysctl -p
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
这些将阻止盒子向非该接口主 IP 的接口发送任何 arp。
答案2
这两个地址是否如您的示例所示位于同一子网中?这两个网卡是否也连接到同一交换机?
那么这很可能会混淆盒子的 TCP/IP 堆栈......