我正在尝试诊断昨晚设置新的基于 PC 的路由器时遇到的一些连接问题。
有一段时间一切都运行正常,但后来我突然发现无法 ping 新 PC,也无法从该 PC ping 其他机器。最后,我在我的机器上设置了 wireshark 进行收集,并从新 PC ping 该机器。我看到 ping 请求到达我的机器并发送了响应,但在新 PC 上仍然看不到任何东西。(它运行的是嵌入式版本的 pfSense - FreeBSD 发行版)
回想起来,我唯一能想到的可能性是,这与我一直为新 PC 分配与现有路由器相同的 IP 地址 (192.168.1.1) 以及为旧路由器分配另一个 IP 地址 (192.168.1.42) 有关。我最终这样做了几次,但从未重新启动过主 PC,所以我想知道 ARP 表是否以某种方式被弄乱了。
那么,如果数据包的 IP 地址匹配,但 MAC 地址不匹配(或相反),该怎么办?它们会被忽略吗?
此外,还有其他诊断工具或方法我可以使用吗?(除了再次打开和关闭不同的东西......)
答案1
您所描述的情况表明:
- 路由器知道在 L2 网络上您的 PC 的寻址位置以便发送 ping 请求 - 因此它的 ARP 缓存被认为是正确的。
- 但是您的 PC 不知道该向路由器寻址以便发送 ping 响应 - 因此它的 ARP 缓存可能不正确。
首先要排除的两个明显问题是:
- 您的旧路由器没有继续尝试调出 IP 地址 192.168.1.1
- 当您的新路由器收到 ping 请求(ICMP 回显)时,它不会对其进行防火墙保护。
假设不是这两件事,那么您可以继续检查 ARP 条目是否正确。请记住,除非您使用静态 ARP 条目(我假设您没有使用静态 ARP 条目),否则它们会根据需要动态存储,并在一段时间后过期。这意味着它们不会在重新启动或长时间内持续存在。因此,如果您的旧路由器肯定不再使用旧 IP 地址,那么它不应该是问题的原因。
- 记下您的 PC 和新路由器的正确 MAC 地址。您可以从
ifconfig
或获得此信息ipconfig
(取决于操作系统)。 - 对照每个设备上的 ARP 条目仔细检查。您可以使用
arp -a
或查看 ARP 缓存中的当前条目以arp -an
跳过名称解析。 - 如果一台机器的 ARP 缓存与另一台机器的 MAC 地址不一致,反之亦然,则尝试使用 删除它
arp -d <ip>
。如果返回相同的地址,那么网络上可能确实有一台恶意机器。
顺便说一句,您还可以确保 Wireshark 捕获的请求和响应中显示的 MAC 地址与您从机器接口记录的 MAC 地址相匹配。