为什么我的网络之外的地址会有这些 arp 缓存条目?

为什么我的网络之外的地址会有这些 arp 缓存条目?
$ ip -4 neigh show dev eno1
209.132.181.16  FAILED
152.19.134.142  FAILED
85.236.55.6  FAILED
152.19.134.198  FAILED
8.43.85.67  FAILED
140.211.169.206  FAILED

这些奇怪的 IP 邻居(ARP)条目怎么会出现在我的以太网接口上?

eno1是一个以太网接口。目前尚未连接。根据journalctl -b | grep eno1,我认为我在这次启动过程中根本没有连接它!我不使用静态IP。在此启动过程中我没有手动更改 IP 设置。网络设置全部由 NetworkManager 管理。我仅连接到我的家庭网络,该网络仅使用专用范围 172.16.0.0 - 172.31.255.255 中的地址。

例如,在我当前的无线连接上,我看到我的地址是 172.16.8.139/24。这表示网络前缀为 24 位,因此 ARP 分辨率应限制在 172.16.8.0 - 172.16.8.255 范围内。

$ ip -4 addr show dev wlp2s0
4: wlp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    inet 172.16.8.139/24 brd 172.16.8.255 scope global dynamic noprefixroute wlp2s0
       valid_lft 39441sec preferred_lft 39441sec

$ ip -4 neigh show dev wlp2s0
172.16.8.1 lladdr 74:44:01:86:42:d6 REACHABLE

$ lsb_release -d
Description:    Fedora release 29 (Twenty Nine)
$ rpm -q NetworkManager dhcp-client
NetworkManager-1.12.6-5.fc29.x86_64
dhcp-client-4.3.6-28.fc29.x86_64

我的路由器是OpenWRT 18.06.1,所以DHCP服务器是dnsmasq

答案1

“邻居”怎么称呼? - 我的第一个想法。

$ ip -r -4 neigh show dev eno1
proxy01.fedoraproject.org  FAILED
vm3.fedora.ibiblio.org  FAILED
6-55-236-85.rev.customer-net.de  FAILED
vm18.fedora.ibiblio.org  FAILED
proxy13-rdu02.fedoraproject.org  FAILED
proxy14.fedoraproject.org  FAILED
proxy09.fedoraproject.org  FAILED

它正在尝试连接到特定于 Fedora 的服务。即系统使用一些网络服务。 Fedora 正在提供它。 (和/或 ibiblio.org 正在向 Fedora 捐赠服务,使用特定的主机名等)这些主机很可能主要提供一些 Web 服务(HTTP / HTTPS)。主机名中的“代理”往往表示某种形式的 Web 代理,并且出于各种原因(例如缓存或负载平衡),这些代理可以用作前端。

为什么我会看到此类超出范围的 ARP 条目? - 最大的问题。

我在StackOverflow上找到了答案:为什么 ARP 请求非本地地址?

当一个接口根本没有地址/路由,但你明确告诉 Linux 使用它进行传输时,Linux 会假设你的目标地址是在线的。[*] 在内核源代码。这是一个明显的例子:

$ sudo traceroute --udp -i eno1 8.8.8.8
traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
^C
$ ip neigh show dev eno1 | grep 8.8.8.8
8.8.8.8  INCOMPLETE

我希望我看到这些由于 NetworkManager 而尝试的连接。我没有任何其他可能尝试使用特定接口联系 Web 服务的软件。 (请注意,此操作需要特权。在上面的示例中,我必须使用sudo通过特定接口来运行traceroute)。

NetworkManager 使用 Web 服务来检查互联网连接并检测强制门户。这在连接部分提到man NetworkManager.conf

看起来 NetworkManager 一直在检查这个接口,尽管知道它没有连接:-)。


[*] 这意味着发件人 IP 地址ARP数据包,取自不同的界面:-)。或者,如果我关闭其他接口(WiFi 和virbr0),则 ARP 请求将使用 0.0.0.0 作为源地址:-)。我使用tcpdump和第二台计算机直接通过以太网电缆连接进行了测试。

相关内容