我有许多 Azure Linux VM。我可以使用公共 Azure 连接信息通过 ssh 连接到所有 VM,但是无法使用私有信息从一个 VM 通过 ssh 连接到另一个 VM。
我发现虚拟机上有不同的网关,我想这可能是问题所在。
虚拟机 1
$ route -n
Destination Gateway Genmask Flags Metric Ref Use Iface
xx.xx.xx.16 xx.xx.xx.25 255.255.255.255 UGH 0 0 0 eth0
xx.xx.xx.24 0.0.0.0 255.255.255.248 U 0 0 0 eth0
yy.yy.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0
yy.yy.0.0 0.0.0.0 255.240.0.0 U 0 0 0 eth1
0.0.0.0 xx.xx.xx.25 0.0.0.0 UG 0 0 0 eth0
0.0.0.0 xx.xx.xx.25 0.0.0.0 UG 0 0 0 eth0
虚拟机 2
$ route -n
Destination Gateway Genmask Flags Metric Ref Use Iface
xx.xx.xx.16 xx.xx.xx.33 255.255.255.255 UGH 0 0 0 eth0
xx.xx.xx.32 0.0.0.0 255.255.255.248 U 0 0 0 eth0
yy.yy.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0
yy.yy.0.0 0.0.0.0 255.240.0.0 U 0 0 0 eth1
0.0.0.0 xx.xx.xx.33 0.0.0.0 UG 0 0 0 eth0
0.0.0.0 xx.xx.xx.33 0.0.0.0 UG 0 0 0 eth0
我尝试在一台虚拟机上设置路由以匹配另一台虚拟机上的路由。
我怎样才能让这些虚拟机相互通信?
编辑:
错误信息是:
ssh: connect to host xxxxxxx port 22: No route to host
编辑:
事实证明我的虚拟网络配置了地址空间 172.21.0.0/25,但有两个子网 172.21.0.0/28 和 172.21.0.16/29。
我很确定子网是问题所在,一旦我使子网空间与地址空间匹配,我就会更新。
编辑:
我在 172.21.0.64/26 上创建了一个新的子网,这样我就可以让我的所有虚拟机加入单个子网。
由于某种原因,Azure 网络门户不允许我将 VM 连接到子网。
答案1
您需要在所有机器之间设置一个专用网络。Azure 虚拟网络 (VNet) 是您在云中的网络的代表。
Windows Azure 虚拟网络在 Windows Azure 云中部署为覆盖网络,可以配置为独立的、仅用于云的网络。您可以选择使用虚拟网络和站点到站点 VPN 轻松地将您的本地网络扩展到云。由于目前实施的虚拟网络在配置后很难进行更改,因此最好仔细规划您给定的部署方案。例如,如果您现在实施 Windows Azure 虚拟网络,后来选择添加站点到站点 VPN 连接,则必须在添加站点到站点网关之前删除与虚拟网络关联的任何虚拟机。此外,IP 地址分配由 DHCP 处理。但是,租约期限是无限的,因此除非您完全停止(取消分配)虚拟机,否则系统应在 VM 的整个生命周期内保留其分配的 IP 地址。因此,手动为 Windows Azure 虚拟机分配静态 IP 地址是没有必要的,而且也不支持这样做。
希望这可以帮助。