来自具有多个接口的主机的 ARP 响应

来自具有多个接口的主机的 ARP 响应

我有一个(实验性的)设置,其中主机myhost.mydomain有三个网络接口,所有网络接口都连接到与其默认网关相同的 VLAN mygateway.mydonain。设置如下:

interface MAC               IP address
--------- ----------------- ---------------
eth0      aa:aa:aa:aa:aa:aa myhost.mydomain
eth1      bb:bb:bb:bb:bb:bb 192.168.0.7
eth2      cc:cc:cc:cc:cc:cc 192.168.1.7

我观察到,大约每4个小时默认网关收到一个 ARP 请求,所有三个接口都会发出 ARP 响应。tcpdump所有三个接口都会接收到 ARP 请求(根据 ),内容如下:

who-has myhost.mydomain tell mygateway.mydomain

ARP 响应如下:

myhost.mydomain is aa:aa:aa:aa:aa:aa # on eth0
myhost.mydomain is bb:bb:bb:bb:bb:bb # on eth1
myhost.mydomain is cc:cc:cc:cc:cc:cc # on eth2

在这样的设置下应该如此吗?我有点惊讶,因为myhost.mydomain显然“是”只有aa:aa:aa:aa:aa:aa,因为该地址绑定到eth0。我还看到,在这些响应之后,默认网关会发送进一步的 TCP 流量eth2(而不是eth0),这会导致其他复杂情况。

我知道这个问题可以通过arptables将主机的接口连接到不同的网络来解决,但在继续之前,我还想了解这种具体情况。主机运行 Debian 8.9。

更新好像我遇到过地址解析协议 通量这里。

答案1

这被证明是 ARP 流量的情况。适用以下描述:

Linux 的一个独特功能是它愿意响应绑定到任何接口的任何 IP 的 ARP 请求。这可能会导致 ARP 流量,即有时通过一个 MAC 地址访问给定 IP,有时通过另一个 MAC 地址访问给定 IP 的情况。(这里

同一来源建议采取以下补救措施:

防止 ARP 流量的一种方法是使用 net/ipv4/conf/$DEV/arp_filter。简而言之,使用arp_filter会导致接收方(在下面的例子中是真实服务器)执行路由查找以确定发送回复的接口,而不是默认行为(如上所示),即从接收请求的所有以太网接口进行回复。(这里

为了找到一个可以在重启后继续存在的解决方案,myhost.mydomain我选择了以下方法:

echo "net.ipv4.conf.all.arp_filter = 1" > /etc/sysctl.d/arp_filter.conf
sysctl -p /etc/sysctl.d/arp_filter.conf

与此同时,我也注意到,这种情况是其他本论坛中最近出现的问题。

相关内容