ARP流量如何解决

ARP流量如何解决

我有一台具有 2 个 NIC 的服务器,其 IP 地址在同一个子网中,我的 /etc/network/interfaces 如下所示:

auto eth0
iface eth0 inet static
  address 192.168.2.155
  gateway 192.168.2.51
  netmask 255.255.255.0
  dns-nameservers 192.168.2.180
  dns-domain exaple.com

auto eth1
iface eth1 inet static
  address 192.168.2.156
  netmask 255.255.255.0

因此,我们的想法是,ip 为 192.168.2.155 的 eth0 是具有互联网连接的“管理”接口。ip 为 192.168.2.156 的 eth1 NIC 将用于与内部设备通信。

现在,当我使用默认系统进行配置,并尝试使用 LAN 上的其他设备对 192.168.2.156 上的 eth1 进行 ping 操作时,这些数据包并没有像预期的那样被 eth1 接收,而是被 eth0 接收,我通过运行验证了这一点tcpdump -i eth1 icmp,并且看不到任何数据包进来。执行 ping 的客户端收到了回复,但来自错误的 NIC/MAC 地址。

现在我发现这种现象被称为“ARP 通量”,甚至有很好的文章描述如何解决它,但问题是,这些解决方案似乎都不适合我。 本文通过运行以下命令似乎可以给出最好的解释和修复:

sudo sysctl -w net.ipv4.conf.all.arp_announce=1
sudo sysctl -w net.ipv4.conf.all.arp_ignore=2
sudo sysctl -w net.ipv4.conf.all.rp_filter=0

这似乎起了作用,因为我开始在 eth1 上接收数据包,但它完全禁用 eth0 和 IP 地址 192.168.2.155 上的任何通信。

还有什么其他想法我可以尝试吗?

答案1

基于这个帖子这个帖子您尝试过吗?:

net.ipv4.conf.default.rp_filter = 2

你修好了吗?

编辑:我的意思是......一切:

sudo sysctl -w net.ipv4.conf.all.arp_announce=1
sudo sysctl -w net.ipv4.conf.all.arp_ignore=2
sudo sysctl -w net.ipv4.conf.all.rp_filter=2

答案2

基于本文改成:

sysctl -w net.ipv4.conf.all.arp_ignore=1
sysctl -w net.ipv4.conf.all.arp_announce=2
sysctl -w net.ipv4.conf.all.arp_filter=1

相关内容