我遇到了这样的情况:
- 隔离的千兆以太网 LAN,上面有少量的 Linux 机器和 Mac
- Airport Extreme 无线接入点也连接到 LAN
- 两台 iPad 通过 Airport Extreme 和 Wifi 与系统通信
- iPad 设置为使用静态 IP 地址设置。一台 iPad 的 IP 地址设置为 192.168.8.38,另一台设置为 192.168.8.39。
- 其中一个 Linux 机器定期运行 arp-scan 并报告 LAN 上是否存在任何重复的 IP 地址。
问题是,有时(并非总是),arp-scan 进程会报告两台 iPad 的 MAC 地址使用相同的 IP 地址。发生这种情况时,arp-scan 的输出会显示两台 iPad 的 MAC 地址都与 IP 地址 192.168.8.39 相关联。(尽管我们通过查看屏幕上的网络设置页面手动验证了两台 iPad 具有不同的 IP 地址和 MAC 地址,但结果仍然如此)
除了来自 arp-scan 的报告之外,与 iPad 的通信似乎正常。
有人知道是什么原因导致这种现象吗?我能想到的可能是 iPad 的 MAC 地址可能以某种方式散列为相同的值,因此它们在某些数据结构中互相覆盖……或者设置为地址 192.168.8.38 的 iPad 偶尔会“漫游”并使用隔壁的地址,尽管设置为静态 IP 地址。不过这两种假设在我看来都不太可能。:^(
答案1
这似乎是 Apple Sleep Proxy Service 的一个案例。
http://en.m.wikipedia.org/wiki/Sleep_Proxy_Service
“当睡眠代理看到针对睡眠设备地址之一的 IPv4 ARP 或 IPv6 ND 请求时,它会代表睡眠设备进行应答,而不会唤醒它,并将其自己的 MAC 地址作为该地址的当前(临时)所有者。”
答案2
ARP 扫描通常通过向特定子网中的每个 IP 地址发送 ARP 请求来工作,因此我不明白 MAC 地址被散列的可能性(我甚至不确定这意味着什么)并且我也不认为这是一个缓存问题,因为我假设启动 ARP 扫描的机器在扫描期间不会使用它自己的 ARP 缓存,如果它这样做,它会在扫描之前刷新它。
我唯一能想到的是 WAP 正在为连接的客户端执行某种类型的代理 ARP?