Azure 中虚拟机的路由行为很奇怪

Azure 中虚拟机的路由行为很奇怪

我有三台 Ubuntu 机器,机器 A、B、C。我还创建了一个 VNet 10.3.0.0/16,并创建了三个子网 SubN1:10.3.0.0/24 SubN2:10.3.1.0/24 SubN3:10.3.2.0/24

机器 A 有 3 个网卡,eth0、eth1、eth2 机器 B 有 2 个网卡,eth0、eth1 机器 C 有 2 个网卡,eth0、eth1

我让每台机器的 eth0 连接到 SubN1 以便进行管理。机器 A eth1 和机器 B eth1 属于 SubN2 机器 A eth2 和机器 C eth1 属于 SubN3 我想让机器 B 通过接口 eth1 连接到机器 C,这意味着我需要在机器 B 和 C 之间添加一条路由,我已经验证 B 和 C 没有连接。

然后,在机器 B 路由表中,我输入命令:ip route add {SubN3}/24 via {机器 A 的 eth1 的 IP 地址} dev eth1 在机器 C 路由表中,我输入命令:ip route add {SubN2}/24 via {机器 A 的 eth2 的 IP 地址} dev eth1

我甚至没有在机器 A 中设置 IP 转发,然后机器 B 可以通过其 eth1 成功连接到机器 C。

太棒了!但是问题来了。

当机器 B 和 C 已连接(相互 ping 或 ssh)时,我看不到机器 A(eth1 或 eth2)中的任何流量

即使我关闭了机器 A,机器 B 和 C 仍然连接着!这很奇怪。

我想要的是:机器 B 和 C 连接,但流量应该通过机器 A。

你能告诉我哪里出了问题或者我需要设置什么吗?

谢谢

答案1

我认为您需要等待更多时间才能看到 ping 输出。

我和你有同样的测试。

vm1 has nic0 10.0.0.4, nic1 10.0.1.4, nic2 10.0.2.4;
vm2 has nic0 10.0.0.5, nic1 10.0.1.5;
vm3 has nic0 10.0.0.6, nic2 10.0.2.5.
nic0s join into subnet0 10.0.0.0/24; 
nic1s join into subnet1 10.0.1.0 24; 
nic2s join into subnet2 10.0.2.0/24.

然后我向vm2添加一条路由:sudo ip route add 10.0.2.0/24 via 10.0.1.4 dev eth1 在此处输入图片描述

向 vm3 添加一条路由:sudo ip route add 10.0.1.0/24 via 10.0.2.4 dev eth1 在此处输入图片描述

因此,我可以使用 eth1 从 vm2 ping 到 vm3。一旦我在门户上停止 vm1。我发现响应:目标主机不可访问。 在此处输入图片描述

一旦我重新启动 vm1,ping 连接就会恢复。 在此处输入图片描述

所以我认为你的设置正确,只是在这种情况下需要更多时间。

相关内容