考虑一下这个场景,我在 Azure 中创建了 2 个虚拟机,即“主”和“从”,静态 IP 分别为“10.0.0.5”和“10.0.0.6”。两台机器的防火墙均已禁用。
主服务器(10.0.0.5)能够 ping 从服务器(10.0.0.6),反之亦然。
在主服务器中添加一个额外的 IP“10.0.0.7”(同一子网),它在主虚拟机中工作。
它没有被从属服务器(10.0.0.6)解决,每当我在从属服务器上 ping 10.0.0.7 时,都会得到这个
C:\Users\arun>ping 10.0.0.7
Pinging 10.0.0.7 with 32 bytes of data:
Reply from 10.0.0.6: Destination host unreachable.
Reply from 10.0.0.6: Destination host unreachable.
Reply from 10.0.0.6: Destination host unreachable.
Reply from 10.0.0.6: Destination host unreachable.
Ping statistics for 10.0.0.7:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
对于 tracert
C:\Users\arun>tracert 10.0.0.7
Tracing route to 10.0.0.7 over a maximum of 30 hops
1 Slave [10.0.0.6] reports: Destination host unreachable.
我错过了什么?
答案1
我以前遇到过同样的问题。然后我尝试在 Azure VM 上执行网络捕获,发现了一些有趣的东西。
VNET 的工作方式与物理以太网设备不同。Azure VM 之间的所有通信均由网关处理。(包括同一子网中的 VM,这与物理网络不同。)
ARP 请求不会被目的地接收。网关会拦截该请求,并用一个假的 MAC 地址 12:34:56:78:9a:bc 回复。然后发送方会将数据包发送给网关,网关会为发送方转发该数据包。
如果我们在虚拟机上添加 Azure 未知的额外 IP 地址,猜猜会发生什么?没错,网关将不会响应包含未知目标的 ARP 请求。因此,发送者的 ARP 请求将失败,并显示错误消息“目标主机不可访问”。
这是我的实验室的屏幕截图:
希望我的经历能有所帮助。