答案1
如果这些设备有多个网络接口,并且这些接口的 IP 地址位于同一子网中,那么你的设备可能会遇到ARP 流量:
当 Linux 机器连接到具有多个网卡的网段时,可能会出现链路层地址到 IP 地址映射的潜在问题。机器可能会从两个以太网接口响应 ARP 请求。
在创建 ARP 请求的机器上,这些多个答案可能会造成混乱,甚至更糟的是,导致 ARP 缓存的填充不确定。这被称为 ARP 通量 [13],可能会导致 IP 在多个链路层地址之间不确定地迁移,从而产生令人困惑的效果。
重要的是要了解 ARP 通量通常只影响与同一介质或广播域有多个物理连接的主机。
如果您有一个系统可以检测 IP > MAC 地址映射何时发生变化,则对同一 IP 地址公布两个不同 MAC 地址的设备可能会导致该系统触发。
作为测试,您可以修改arp_ignore
sysctl 变量在接口上查看是否停止警告。将该变量的值设置为 1(默认值为 0)将确保只有拥有 ARP 请求的目标 IP 地址的接口才会响应。
要临时修改该值,请为每个接口设置变量。例如:
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/default/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
...
echo 1 > /proc/sys/net/ipv4/conf/eth6/arp_ignore
上述更改将在重新启动时恢复,因此如果它解决了您的问题,您可以通过添加新的 sysctl conf 文件使更改持久:
user@host: ~$ cat /etc/sysctl.d/90-no-arp-flux.conf
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.default.arp_ignore=1
net.ipv4.conf.eth0.arp_ignore=1
net.ipv4.conf.eth1.arp_ignore=1
使用以下命令加载新的配置文件sysctl -p /etc/sysctl.d/90-no-arp-flux.conf