为什么 arp -a 只显示我网络上的某些机器?

为什么 arp -a 只显示我网络上的某些机器?

arp -a在 Linux 服务器上运行,这是输出:

[root@trnsrv1 ~]# arp -a
? (10.223.8.82) at 00:50:56:B5:75:08 [ether] on bond0
? (10.223.11.254) at E0:5F:B9:66:A6:00 [ether] on bond0

10.223.11.254 - 这是网关

10.223.8.82 - 这是另一台服务器,并且它不是 LAN 上唯一的服务器。

为什么它出现了而其他的没有出现?

答案1

为什么它出现了而其他的没有出现?

因为它们是过去 60 秒内与您的服务器交换网络流量的唯一两台计算机,或者在 中指定的系统上的任何 arp 缓存值(/proc/sys/net/ipv4/neigh/default/gc_stale_time如果与默认值 60 不同)。

arp -a报告 arp 缓存中的内容;它不会尝试用尽可能多的条目填充缓存。

答案2

在有效解释 arp 缓存的输出之前,您需要了解一些有关 arp 缓存的知识

arp 缓存包含IP:MAC地址映射:

  • 托管您的服务器交换流量在自己的子网内

  • 路由器接口用于在您的主机和其他主机之间路由流量不同的子网

这些的arp缓存知识产权MAC地址映射做不是存活:

  • 联网重新开始。

  • 服务器重启。

虽然垃圾收集(“GC”)应该清除 arp 缓存中超出指定范围的映射GC阈值,现实是他们坚持不懈,尽管记录为“陈旧

所以你不会看到IP地址:MAC地址与您的服务器交换流量的主机的映射不同的子网,或者如果网络或服务器本身重新启动,甚至是主机自己的子网内的子网。

顺便说一句,如果您想测试超出范围的映射的持久性GC间隔,ping同一子网内的另一台主机在停止后ping定期执行:

ip -statistics neighbour

你会看到IP:MAC地址对于你的主人来说,你ping仍然过去了GC间隔。

相关内容