Azure,从 Internet 访问时某些端口上的连接被拒绝

Azure, connection refused on some ports when accessed from the internet

我有 2 个虚拟机 (CentOS),运行 在同一 VNET(和子网)中。 他们都有静态 public IP。

我有一个定义入站和出站规则的网络安全组,附加到两个 NIC 和 VNET。

入站规则之一是 default-allow-ssh 规则。 到目前为止一切都很好,使用 SSH,我可以从 Azure 外部访问这两个 VM,从我自己的计算机上的网络上的任何地方。

我在 1 个虚拟机上 运行 网络服务器。

在端口 80 上公开网络服务器并在端口 80 上添加新的 NSG 入站安全规则(src: any, src port range: *, dest: any, port: 80, protocol: any)允许 met 访问来自任何地方的网络服务器:来自网络上任何地方的我的电脑,来自我在 Azure 中的其他虚拟机,正如我所期望的那样。

现在,当我将网络服务器的端口从 80 更改为例如 7181 时:

我仍然可以从我正在托管网络服务器的服务器以及位于同一 VNET(子网)中的其他 CentOS 服务器上执行 "curl http://[PUBLIC_IP]:7181",但不再从我的电脑或外部的任何电脑上执行Azure 领域(网络)。

Firewalld 不在网络服务器上 运行,我也没有设置 iptables,只有 NSG 规则定义入站和出站流量。

始终可以使用 ssh 从 Azure 之外的任何地方访问 Web 服务器的主机。 Web 服务本身,在端口 80 上,包括适当的入站 NSG 规则,也可以在 Azure 内外的任何地方正常工作。自定义端口与 NSG 中的端口 80 或 22 配置相同(当然端口号除外),只能从同一 VNET 内部访问。

有人吗?

(我得到的错误是众所周知的:ERR_CONNECTION_REFUSED)

NSG 截图: enter image description here

问大佬:NSG 7181 端口添加规则了吗?

我的测试说:这种错误来自 NSG。

来自网络内部的 CURL 可能会导致错误的意见。在7181端口连接IP时应该跟踪路由。

为您要打开的每个端口创建单独的规则。据我所知,您不能在 "port" 字段中指定端口列表。仅单个端口、端口范围或 *.

仅供参考:VNET 中来自其他计算机的连接正常工作,因为存在 "AllowVnetInBound" 规则。

重启虚拟机实例解决了问题。所以看起来 adding/updating NSG 规则 on-the-fly 不会立即影响 运行 个实例,或者其他东西需要很多时间同步才能生效。我一定忘记了我早期 Windows 的日子,那时更改配置或安装新东西时重启是非常标准的。无论如何,感谢大家在这个问题上付出的时间和精力。