答案1
不同区域的两个 VNet 之间的通信就像 Azure 本地通信一样。正如 Sam 所说,两个 VNet 之间没有直接连接。根据您的描述,您使用公共 IP 进行 VM 通信。我建议您按以下方式检查:
1.请使用将端口 32000-32200 从一个 Azure VM 连接到另一个 VM,以便进行telnet
测试。
2.检查结果netstat -ant|grep 32000
(Linux),请确保您的端口正在监听tcp
和0.0.0.0
。
3.在 Azure NSG 上打开端口,按照你说的,已经添加好了。注意 Azure NSG 可以关联到虚拟机的网卡或者 Vnet 的子网。
4.检查虚拟机的防火墙。如果您的虚拟机是 Windows 操作系统,则需要在 Windows 防火墙上打开端口(入站规则)。
更新:
对于经典虚拟机,您应该在 Endpoint 上打开端口,更多信息请参阅此处关联。
答案2
您希望如何在它们之间建立连接?由于您的机器位于不同的区域,因此它们位于不同的虚拟网络中,因此它们之间没有开箱即用的直接连接。您可以通过以下两种方式之一进行设置:
如果您的应用程序旨在通过互联网在客户端和服务器之间进行通信,那么您需要做的就是使用公共 IP 设置您的服务器,然后在网络安全组和您的机器防火墙中打开所需的端口。所有通信都将通过公共互联网进行,因此您可能需要使用 SSL 等。
如果您希望通过专用网络进行通信,则需要使用 VNet 到 VNet VPN 将它们连接起来。由于您的 Vnet 位于不同的区域,因此您无法使用 VNet 对等连接。设置 VPN 后,您将能够通过机器的专用 IP 进行通信。您仍然需要在 NSG 和防火墙中打开端口。请参阅本文有关如何创建 VPN。
答案3
首先检查应用程序端口连接。如果无法进行 telnet,则在 Linux 的防火墙中打开该端口。之后,您可以检查应用程序配置,检查是否使用了正确的地址和端口。