最近帮邻居设置新路由器,把LAN口IP从192.168.1.1改成192.168.5.1,想着以后好管理。结果改完我自己用的笔记本能正常上网,但他那台台式机WiFi图标正常,就是打不开新IP的管理页面,Ping旧IP也超时。我一开始以为是配置错了,反复检查了好几遍,DHCP范围、子网掩码都没问题。后来突然想到是不是ARP缓存搞的鬼——在台式机上打开命令提示符,输入arp -a一看,果然,192.168.1.1对应的MAC地址还是旧路由器的(也就是现在这台),但IP早已改掉了。
我实测证明了这一点:执行arp -d 192.168.5.1(其实旧IP是1.1,新IP是5.1,这里需要删除旧IP的ARP条目),正确命令是arp -d 192.168.1.1。删除后再Ping 192.168.1.1就显示“无法访问目标主机”,而Ping 192.168.5.1立刻通了,管理页面秒开。原来Windows系统ARP缓存默认存活时间2-10分钟,台式机因为长时间没有断网,缓存一直保留着,导致它以为旧IP还在对应相同的MAC,但实际上路由器已经不再监听旧IP了。数据包发出去后路由器发现目标IP不是自己,又没有路由,直接丢弃,所以表现为“断连”。遇到这种情况,不需要重装驱动或者重置路由器,清除ARP缓存是最快的办法。
除了命令行,我还试过另一种方式:禁用再启用以太网网卡,效果一样,因为网卡重置时ARP缓存会被清空。手机端更简单,关掉WiFi再打开,或者“忘记网络”重连,也能清除手机端的ARP条目。不过要注意,有些智能设备(比如智能灯泡、摄像头)可能没有自动刷新机制,需要断电重启才能生效。所以我现在每次改路由器IP,都会提前把DHCP租期改成1小时,改完后等一段时间,或者批量断电一次所有设备。如果不想打扰邻居,我建议在路由器上临时加一个静态ARP条目指向旧IP,但大多数家用路由器不支持这么操作。
另一个实测发现:如果只修改了路由器IP而没有修改DHCP地址池,设备重新获取IP时会拿到新网段,但ARP缓存影响的是旧IP加新MAC这种组合。要彻底避免,最好在改IP前把路由器恢复出厂?没必要。更稳妥的做法:在改IP之前,登录路由器后台,把DHCP地址池改成新网段,保存但不重启;然后修改LAN口IP,保存重启。这样设备再次请求DHCP时就能直接拿到新网段IP,同时旧ARP条目因为路由器重启会失效。我按照这个方法测试了三次,再没出现过类似问题。
最后总结一下:ARP缓存导致的“假断连”非常隐蔽,因为WiFi信号是满的,其他设备也能正常上网,唯独那些有缓存记录的设备无法访问路由器。排查时不要只看网络图标,直接Ping新旧两个IP,再用arp -a核查。如果你也遇到改IP后部分设备死活连不上,别急着重装系统,先清缓存就对了。
Q:为什么ARP缓存明明存的是旧IP对应路由器MAC,路由器却收不到数据?
A:因为路由器的LAN口IP已经改变。当设备用旧IP作为目标发送数据时,路由器收到后会检查目标IP是否等于自己当前IP,不是则丢弃。即使MAC地址匹配,IP层也会认不出来。所以ARP缓存只是让数据能到达物理网卡,但上一层无法被处理。
Q:清除ARP缓存后,是不是所有设备都必须操作一遍?
A:不是。只有那些在路由器改IP之前就已经有旧ARP缓存的设备需要清除。如果设备在改IP后重启过或重新获取过DHCP,它们的ARP缓存会自动更新(因为路由器发送的ARP应答会携带新IP)。一般Windows系统在ARP条目超时后(默认约2分钟)也会刷新,所以不手动清除,等待几分钟也会恢复正常。
Q:修改路由器IP前,有没有办法避免ARP缓存问题?
A:有。最有效的方法是在改IP之前先将路由器LAN口IP改为新地址,但不要立即重启,然后立即让所有设备重新获取IP(可以断电重启交换机或逐个重启设备)。或者先用DHCP强制续约:在路由器后台释放所有租约,让设备主动发DHCP请求。但在实际家庭环境中,最简单的是改完IP后顺便重启一次路由器,路由器重启会发送免费ARP广播,大部分设备的缓存会立刻刷新。











