将我们的开发团队从 7 升级到 Windows 10 后,我们遇到了 ARP 缓存问题,其中一台机器缓存了正确的 IP-MAC 映射,但由于在目标机器的电源循环期间连接失败,类型无效。在 Windows 10 上,但不是 Windows 7,在清除 ARP 缓存之前无法连接到目标计算机。我可以按如下方式重现该问题,其中 10.10.10.10 是正确的 IP 地址,01:23:45:67:89:AB 是相关目标机器的正确 MAC 地址:
从关闭目标机器的电源开始,并通过整个测试对其进行 ping:
ping -t 10.10.10.10
Run Code Online (Sandbox Code Playgroud)Ping 正在回复“请求超时”并且 ARP 缓存包含,正如预期的那样
10.10.10.10 00:00:00:00:00:00 invalid
Run Code Online (Sandbox Code Playgroud)
打开目标机器的电源。Ping 开始收到回复,并且 ARP 缓存更新为
10.10.10.10 01:23:45:67:89:AB dynamic
Run Code Online (Sandbox Code Playgroud)到现在为止还挺好。
关闭目标机器。Ping 开始报“Request timed out”,ARP 缓存依然存在
10.10.10.10 01:23:45:67:89:AB dynamic
Run Code Online (Sandbox Code Playgroud)大约40秒后,ping 1次请求回复“Destination host unreachable”,然后返回上报“Request timed out”,ARP缓存变为
10.10.10.10 01:23:45:67:89:AB invalid
Run Code Online (Sandbox Code Playgroud)打开目标机器的电源,在您清除 ARP 缓存或至少删除具有无效类型的正确 IP-MAC 映射的违规条目之前,ping(以及任何其他连接)将无法找到它。
考虑到开发环境中的目标机器在开发过程中确实需要重启电源,我该如何防止 ARP 缓存进入这种状态?手动操作 ARP 缓存是不可持续的,在迁移到 Windows 10 之前没有人报告过这个问题。
Windows 7 的功能正如人们所期望的那样,也就是说,我们想要的是:ARP 缓存经历与上述相同的阶段。Ping 在目标启动前回复“目标主机无法访问”,这与 Windows …