我有这样的网络设置:
当我arp -d
在笔记本电脑上执行以清除 ARP 缓存,然后ping 10.0.0.30
ping 嵌入式设备 1 时,它应该显示“我不知道如何从这里到达 10.0.0.30。让我询问一下网络。”,或者更具体地说,笔记本电脑应该从其 MAC 08:BE:AC:21:86:36 广播出一个 ARP 数据包“谁有 10.0.0.30?告诉 10.0.0.55”。它应该将响应放入 ARP 缓存中(可以使用 查看arp -a
),然后执行实际的 ping。
相反,笔记本电脑会询问“Who has 10.0.0.3 5 ? Tell 10.0.0.55”,这是嵌入式设备 2 的 IP 地址,它会正确响应。Windows 将“10.0.0.35 00-24-bd-05-06-23”放入 ARP 缓存中,然后继续 ping quote-unquote-10.0.0.30,但 MAC 为 10.0.0.35: ping 请求永远不会到达那里,并且不用说,ping 失败。
这怎么可能?什么可能导致 Windows 使用错误的 IP 地址?
附加信息:
- 所有这些地址都是通过 DHCP 分配的。
- 为笔记本电脑和/或嵌入式设备 1 提供静态地址不会改变其行为。
- 我的主机文件是空的(默认注释除外)
- 从网络中的其他 Windows 计算机到这两个嵌入式设备的 Ping 工作正常。
- 从嵌入式设备 1 到笔记本电脑的 ping 操作也不起作用。笔记本电脑看到来自嵌入式设备 1 的 IP 和 MAC 的请求,但响应嵌入式设备 2 的 MAC。
- 当在笔记本电脑上使用不同的网络适配器时也会发生这种情况(它有不同的 IP(在同一子网上)和 MAC,但除此之外行为是相同的)。
- 当我在笔记本电脑、嵌入式设备 1 和网络的其余部分之间插入不同的交换机时,ping 成功。我很快切换回第一个交换机,ping 再次失败。然后我尝试了第三个开关,它也根本不起作用。然后我切换回第二个开关,大约一分钟内 ping 成功,但随后它在没有任何明显原因的情况下中断,现在它不再工作了。
- 当将嵌入式设备 1 直接连接到笔记本电脑并分配静态 10.0.0.55 IP 地址,然后执行
arp -d
和 时ping 10.0.0.30
,我仍然看到“谁是 10.0.0.35?” 多次外出(现在从未得到答复,这是预期的),但最终还是“谁是 10.0.0.30?”,由嵌入式设备 1 答复,“10.0.0.30 00-24-bd-03-a5- 25" 已添加到 ARP 缓存中,并且 ping 成功。 - 当为嵌入式设备 1 提供静态 IP 10.0.0.140 时,可以立即 ping 10.0.0.140。Ping 10.0.0.30 仍然具有与解析 10.0.0.35 相同的损坏行为。
这似乎是笔记本电脑的问题。重新启动完全有可能解决此问题,但也完全有可能在几周内再次随机损坏。我现在想诊断出真正的原因,这样我将来就可以减少担心的不确定性。
这可能以前没有发生过。如果是这样,做一些看似无关的事情就可以解决问题。
编辑:
昨天我将笔记本电脑置于休眠状态,将其唤醒,再次尝试,问题仍然相同。
然后我再次将其发送到休眠状态,回家并在连接到我的家庭网络时将其唤醒,再次将其发送到休眠状态,进入睡眠状态,今天在连接到公司网络时再次将其唤醒,再次尝试,现在出现问题神奇地消失了。因此,不幸的是,我现在无法进一步诊断,但仍然感谢对未来不可避免地再次出现的建议。
编辑2:
一位朋友建议查看以下输出route print
:
[...]
IPv4-Routentabelle
===========================================================================
Aktive Routen:
Netzwerkziel Netzwerkmaske Gateway Schnittstelle Metrik
10.0.0.0 255.255.255.0 Auf Verbindung 10.0.0.55 281
10.0.0.30 255.255.255.255 10.0.0.35 10.0.0.55 26
10.0.0.55 255.255.255.255 Auf Verbindung 10.0.0.55 281
10.0.0.255 255.255.255.255 Auf Verbindung 10.0.0.55 281
127.0.0.0 255.0.0.0 Auf Verbindung 127.0.0.1 331
127.0.0.1 255.255.255.255 Auf Verbindung 127.0.0.1 331
127.255.255.255 255.255.255.255 Auf Verbindung 127.0.0.1 331
192.168.56.0 255.255.255.0 Auf Verbindung 192.168.56.1 281
192.168.56.1 255.255.255.255 Auf Verbindung 192.168.56.1 281
192.168.56.255 255.255.255.255 Auf Verbindung 192.168.56.1 281
224.0.0.0 240.0.0.0 Auf Verbindung 127.0.0.1 331
224.0.0.0 240.0.0.0 Auf Verbindung 192.168.56.1 281
224.0.0.0 240.0.0.0 Auf Verbindung 10.0.0.55 281
255.255.255.255 255.255.255.255 Auf Verbindung 127.0.0.1 331
255.255.255.255 255.255.255.255 Auf Verbindung 192.168.56.1 281
255.255.255.255 255.255.255.255 Auf Verbindung 10.0.0.55 281
===========================================================================
Ständige Routen:
Netzwerkadresse Netzmaske Gatewayadresse Metrik
10.0.0.30 255.255.255.255 10.0.0.35 1
===========================================================================
[...]
10.0.0.35(嵌入式设备 2)以某种方式被指定为到达 10.0.0.30(嵌入式设备 1)的网关。
它恰好按照编辑 1 中的说明工作,因为嵌入式设备 2 已关闭和/或由 DHCP 分配了不同的 IP 地址。第一次 ping 到 10.0.0.30 超时(因为无法到达 10.0.0.35),之后 Windows 会执行不同的操作,直接到达 10.0.0.30。我之前没有注意到这一点。现在,我再次为嵌入式设备 2 提供了 10.0.0.35,但我无法再次 ping 通 10.0.0.30,正如预期的那样。
请注意,虚假路由并不特定于接口。它同时显示在笔记本电脑的集成以太网端口和 USB 转以太网适配器上。
那么现在的问题是:10.0.0.35 是如何成为网关的?