Solaris不loggingARP表中的MAC地址

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

DNS服务器应答其MAC地址,但Solaris 9不loggingARP表中的地址。 您可以很好地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/24networking中的所有其他IP地址都可以正常工作。 他们的MAC地址被caching在ARP表中,但是这个不是。

在/etc/resolv.conf中指定为DNS服务器的IP地址有什么特别之处,会使ARP的行为如此? 其他2个DNS服务器不在同一个子网中,所以我无法testing是否发生其他地址。

 # ndd -get /dev/arp arp_cleanup_interval 60000 

原来系统丢失了一些重要的补丁:

  • 4157198 arp和ip模块之间的ARPcaching不一致
  • 4978063 SO_DONTROUTE选项导致每个帧的ARPstream量
  • 4653899 ARP数据包处理问题