我们有一个 Linux (debian) 服务器,它有两个连接到同一交换机的 NIC。(我们曾经有一个专用于服务器之间流量的交换机,但是当我们的大多数服务器移至 colo 设施时,该交换机也移动了。)这些 NIC 具有不同的静态 IP 地址,但大约每个月一次 arpwatch 会发送一对触发器消息作为 IP 之一从一个接口反弹到另一个接口并返回。什么可能导致这种情况?
这可能与在同一网络上具有多个 NIC 的 Linux ARP 行为有关,并且已在此服务器故障问题中进行了讨论。基本上你需要设置一些sysctl参数:
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2
Run Code Online (Sandbox Code Playgroud)
这些将导致 ARP 回复仅在实际拥有 ARP 请求中请求的 IP 地址的网络接口上发出。
正如上面提到的问题中提到的,这是因为在 Linux 中默认情况下主机拥有一个 IP,而不是一个特定的接口,所以回复将在它选择的任何接口上发出。当您在同一网络上有多个接口时,这可能会导致问题,这正是上述 sysctl 参数修改的内容。