我在Azure中创build了两个虚拟机。 其中一个在澳大利亚南部,另一个在印度中部。 我在一台机器上运行客户端程序,在其他机器上运行服务器程序 有没有能够连接到对方。 在谷歌search后,我在两个虚拟机中创build了Network Security Group,并添加了以下入站和出站规则。
来源 – 任何
目的地 – 任何
服务 – 自定义(任何/ 32000-32200)
行动 – 允许
我在我的程序中连接到32000-32200之间的端口,但是机器仍然没有连接到对方。 我正在使用Ubuntu Server 16.04和经典的部署模型。 我恳请您帮助我..我附上我的networking安全组的屏幕截图和netstat命令的输出。
networking安全组
netstat的
两个Vnet在不同地区的交stream就像Azure的前提一样。 正如Sam所说,两个VNet之间没有直接的连接。 根据您的描述,您使用公共IP进行VM的通信。 我build议你可以检查如下:
1.使用你可以连接32000-32200端口从一个Azure虚拟机到另一个虚拟机,你可以使用telnet来testing。
2.检查netstat -ant|grep 32000 (Linux)的结果,请确保你的端口正在监听tcp和0.0.0.0 。
3.打开Azure NSG上的端口,根据你的说法,你已经添加了它。 请注意,Azure NSG可以关联到VM的NIC或Vnet的子网。
4.检查你的虚拟机的防火墙。 如果您的虚拟机是Windows操作系统,则需要在Windows防火墙上打开端口(入站规则)。
更新:
对于一个典型的虚拟机,你应该在端点上打开端口,更多的信息请参考这个链接 。
你想如何连接它们? 由于您的机器位于不同的地区,因此它们位于不同的虚拟networking中,因此它们之间没有直接的连接。 您可以通过以下两种方式之一来设置:
如果您的应用程序devise为通过互联网在客户端和服务器之间进行通信,那么您只需使用公共IP设置您的服务器,然后在Network Security Group和机器防火墙中打开所需的端口。 所有的沟通都将通过公共互联网,所以你可能想要使用SSL等。
如果你想让通信通过专用networking,那么你需要将它们连接到VNet到VNet VPN。 由于您的Vnet在不同的地区,您不能使用VNet对等。 一旦你设置VPN,你将能够通过机器的私有IP进行通信。 你仍然需要在NSG和防火墙上打开端口。 请参阅这篇文章以了解如何创buildVPN。
先检查您的应用程序端口连接。 如果你不能做telnet,那么打开Linux上防火墙的端口。 之后,您可以检查您的应用程序configuration,检查您是否使用正确的地址和端口。