我用谷歌搜索并执行了其他命令(我只留下了我认为更有用的命令)。大多数搜索都向我指出了有关如何关闭/关闭接口的解释,但没有关于此行为的提示。
鉴于:
enp3s0
具有两个 NIC(和)的小型服务器 (Lubuntu 20.04)wlp9s0
。- 路由器通过 DHCP 设置中的 MAC/地址保留分别将
192.168.1.78
和分配.79
给enp3s0
和。wlp9s0
- 最初,服务器仅通过 WiFi 连接(
wlp9s0
),因此仅接受连接192.168.1.79
。
什么时候:
- 几小时后:Eth 电缆 (
enp3s0
) 连接,192.168.1.78
开始接受连接。 - WiFi 接口通过 关闭
sudo ifconfig wlp9s0 down
。
然后:
- 连接尝试
192.168.1.79
失败(预期,正常) - 但是......几个小时后:连接尝试
192.168.1.79
再次开始工作(?)
更多数据:
从另一台机器运行arp -a
显示两个 IP 映射到相同的 MAC 地址(?):
d (192.168.1.78) at d3:cf:47:c8:a:a9 on en0 ifscope [ethernet]
? (192.168.1.79) at d3:cf:47:c8:a:a9 on en0 ifscope [ethernet]
ip address
在服务器上运行确认 WiFi 链接已关闭且192.168.1.79
仍分配给它。
1: lo: <LOOPBACK,UP,LOWER_UP> ...
2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether d3:cf:47:c8:a:a9 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.78/24 brd 192.168.1.255 scope global dynamic noprefixroute enp3s0
valid_lft 82801sec preferred_lft 82801sec
3: wlp9s0: <BROADCAST,MULTICAST> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether f1:bf:5c:ac:4c:6d brd ff:ff:ff:ff:ff:ff
inet 192.168.1.79/24 brd 192.168.1.255 scope global dynamic noprefixroute wlp9s0
valid_lft 12983sec preferred_lft 12983sec
为什么enp3s0
现在接受两个 IP 中的流量?
答案1
事实上,这在 Linux 中是一个并不罕见的问题。第三个接口 (wlp9s0) 有一个地址。所有接口都会对该地址进行 ARP 应答,并且该地址将接受在错误接口上收到的数据包。
关闭接口后可能失败的原因是远程计算机的 ARP 表中已经有无线 MAC 地址。一旦超时,就可以找到另一个地址。
为了防止这种情况发生,请从关闭的接口中彻底删除该地址。这可以使用 ifconfig 为其指定不同的地址,或者:
ip address del 192.168.1.79/24 dev wlp9s0