Solaris 不在 ARP 表中记录 MAC 地址

Solaris 不在 ARP 表中记录 MAC 地址

我注意到 Solaris 9 服务器不断向我们的 DNS 服务器拥有的 IP 地址发送 ARP 请求。

DNS 服务器会用其 MAC 地址进行应答,但 Solaris 9 不会在 ARP 表中记录该地址。您可以从 DNS 服务器顺利地 ping DNS 服务器,但对于发出的每个数据包,它都需要一次又一次地请求 MAC 地址。

以下是监听的输出:

10.0.0.12 -> (broadcast)  ARP C Who is 10.0.0.4, 10.0.0.4 ?
10.0.0.4 -> 10.0.0.12 ARP R 10.0.0.4, 10.0.0.4 is 0:14:4f:ac:cf:2e
10.0.0.12 -> (broadcast)  ARP C Who is 10.0.0.4, 10.0.0.4 ?
10.0.0.4 -> 10.0.0.12 ARP R 10.0.0.4, 10.0.0.4 is 0:14:4f:ac:cf:2e
10.0.0.12 -> (broadcast)  ARP C Who is 10.0.0.4, 10.0.0.4 ?
10.0.0.4 -> 10.0.0.12 ARP R 10.0.0.4, 10.0.0.4 is 0:14:4f:ac:cf:2e

即使它正在应答,10.0.0.4 也从未显示在 ARP 表中,但 ping 始终有效(大概是因为它每次请求时都请求 MAC 地址,因此可以发送 ICMP 数据包)。

我已确认请求中的源 MAC 地址确实来自 Solaris 9 服务器,并且回复也具有来自 DNS 服务器的正确源地址。基本上一切似乎都运行正常,除非... ARP 中毒?

更奇怪的是,10.0.0.0/24 网络中的所有其他 IP 地址都可以正常工作。它们的 MAC 地址缓存在 ARP 表中,但这个没有。

/etc/resolv.conf 中指定为 DNS 服务器的 IP 地址是否有任何特殊之处,导致 ARP 出现这种情况?其他 2 个 DNS 服务器不在同一个子网上,因此我无法测试其他地址是否也会出现这种情况。

# ndd -get  /dev/arp arp_cleanup_interval
60000

答案1

事实证明系统缺少一些重要补丁:

  • 4157198 arp 和 ip 模块之间的 ARP 缓存不一致
  • 4978063 SO_DONTROUTE 选项导致每个帧都产生 ARP 流量
  • 4653899 ARP 数据包处理问题

相关内容