我有2个虚拟机(CentOS),运行在同一个VNET(和子网)中。 他们都有静态公共IP。
我有一个网络安全组,它定义入站和出站规则,连接到两个NIC以及VNET。
其中一个入站规则是default-allow-ssh规则。 到目前为止一切顺利,使用SSH,我可以从外部Azure访问这两个虚拟机,也可以从我自己的计算机上访问网络上的任何虚拟机。
在我运行网络服务器的其中一个虚拟机上。
在端口80上公开Web服务器并在端口80上添加新的NSG入站安全规则(src:any,src端口范围:*,dest:any,port:80,protocol:any)允许met从以下位置访问Web服务器任何地方:从我的电脑到网络上的任何地方,从我在Azure中的其他虚拟机,就像我期待的那样。
现在,当我将网络服务器的端口从80更改为例如7181时:
我仍然可以做" curl http://[PUBLIC_IP]:7181"从服务器我在AS WELL AS上托管网络服务器,从位于同一个VNET(子网)的其他CentOS服务器,但不再是我的电脑或Azure领域之外的任何电脑(网络)。
Firewalld没有在网络服务器上运行,也没有设置iptables,只有NSG规则定义了入站和出站流量。
始终可以使用ssh从Azure外部的任何位置访问Web服务器的主机。端口80上的Web服务本身,包括适当的入站NSG规则,在Azure外部和内部的任何地方也可以正常工作。自定义端口,与NSG中的端口80或22配置相同(当然端口号除外),只能从同一个VNET内部访问。
任何?
(我得到的错误是众所周知的:ERR_CONNECTION_REFUSED)
NSG截图: enter image description here
答案 0 :(得分:0)
问道:您是否在NSG中为端口7181添加了规则?
我的测试说:这种错误来自NSG。
网络内的CURL可能会导致错误的意见。在端口7181上连接IP时,应该跟踪路由。
答案 1 :(得分:0)
为要打开的每个端口创建单独的规则。据我所知,您无法在“端口”字段中指定端口列表。只有单个端口,端口范围或*。
仅供参考:VNET中其他机器的连接正在运行,因为存在“AllowVnetInBound”规则。
答案 2 :(得分:0)
重新启动VM实例解决了这个问题。因此,在运行中添加/更新NSG规则似乎不会立即影响正在运行的实例,或者其他需要花费大量时间同步并生效的内容。我一定忘记了我早期的Windows时代,在更改配置或安装新东西时重新启动非常标准。无论如何,谢谢大家在这个问题上花费的时间和精力。