I have this network setup:When I execute
arp -d
on the laptop to clear the routing table and then ping 10.0.0.30
to ping embedded device 1, it should go "I don't know how to get from here to 10.0.0.30. Let me ask out into the network.", or to be more specific, the laptop should broadcast out an ARP packet "Who has 10.0.0.30? Tell 10.0.0.55" from its MAC 08:BE:AC:21:86:36. It should put the response from that into the routing table (can be viewed with arp -a
and then perform the actual ping.
Instead, the laptop asks "Who has 10.0.0.35? Tell 10.0.0.55", which is the IP address of embedded device 2, which responds correctly. Windows puts "10.0.0.35 00-24-bd-05-06-23" into the routing table and then proceeds to ping quote-unquote-10.0.0.30 but with the MAC of 10.0.0.35:The ping request never gets there and, needless to say, the ping fails.
How is this possible? What could cause Windows to use the wrong IP address?
Additional info:
- All of these addresses are assigned via DHCP.
- Giving the laptop and/or embedded device 1 static addresses does not change the behavior.
- My hosts file is empty (except for the default comments)
- Pinging works fine from other Windows computers in the network to both embedded devices.
- Pinging from embedded device 1 to the laptop also does not work. The laptop sees the request from the IP and MAC of embedded device 1, but responds to the MAC of embedded device 2.
- This also happens when using a different network adapter on the laptop (it has a different IP (on the same subnet) and MAC then, but other than that the behavior is the same).
- When I plugged in a different switch between the laptop, embedded device 1 and the rest of the network, pings succeeded. I quickly swapped back to the first switch, where pings failed again. I then tried a third switch, which also did not work at all. Then I switched back to the second switch where pings succeeded for about a minute, but then it broke without any apparent reason and now it's not working again.
- When connecting embedded device 1 directly to the laptop and assigning a static 10.0.0.55 IP address, then doing
arp -d
andping 10.0.0.30
, I still see "Who is 10.0.0.35?" going out multiple times (which is now never answered, which is expected), but eventually also "Who is 10.0.0.30?", which is answered by embedded device 1, "10.0.0.30 00-24-bd-03-a5-25" is added to the routing table and the pings succeed. - When giving embedded device 1 a static IP 10.0.0.140, pinging 10.0.0.140 instantly works. Pinging 10.0.0.30 still has the same broken behavior of resolving 10.0.0.35.
It seems to be a problem with the laptop. It's entirely possible that rebooting fixes this, but it's also entirely possible that it will randomly break again in a few weeks. I want to diagnose the actual cause now so I have less uncertainty to worry about in the future.
This probably has not happened before. If it has, doing something seemingly unrelated has resolved the issue.