为什么服务器在禁用网络接口后仍接受连接?

为什么服务器在禁用网络接口后仍接受连接?

我用谷歌搜索并执行了其他命令(我只留下了我认为更有用的命令)。大多数搜索都向我指出了有关如何关闭/关闭接口的解释,但没有关于此行为的提示。

鉴于:

  • enp3s0具有两个 NIC(和)的小型服务器 (Lubuntu 20.04) wlp9s0
  • 路由器通过 DHCP 设置中的 MAC/地址保留分别将192.168.1.78和分配.79enp3s0和。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 

相关内容