0

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

我有一个网络安全组,它定义了入站和出站规则,连接到 NIC 和 VNET。

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

在其中一台虚拟机上,我正在运行一个网络服务器。

在端口 80 上暴露 webserver 并在端口 80 上添加新的 NSG 入站安全规则(src:any,src 端口范围:*,dest:any,端口:80,protocol:any)允许 met 从任何地方访问 webserver:从我的电脑来自网络上的任何地方,来自我在 Azure 中的其他 VM,正如我所期望的那样。

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

我仍然可以从服务器上执行“curl http://[PUBLIC_IP]:7181 ” 我在同一个 VNET(子网)中的其他 CentOS 服务器上托管网络服务器,但不再来自我的电脑或任何Azure 领域(网络)之外的 pc。

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

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

任何人?

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

NSG 截图: 在此处输入图片描述

4

3 回答 3

1

重启虚拟机实例解决了这个问题。所以看起来动态添加/更新 NSG 规则不会立即影响正在运行的实例,否则其他东西需要大量时间同步才能生效。我一定忘记了我早期的 Windows 时代,在更改配置或安装新东西时,重新启动是相当标准的。无论如何,感谢大家在这个问题上花费的时间和精力。

于 2018-04-07T21:34:18.010 回答
0

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

仅供参考:来自 VNET 中其他机器的连接正在工作,因为存在“AllowVnetInBound”规则。

于 2018-04-06T10:49:27.957 回答
0

问obious:您是否在NSG中为端口7181添加了规则?

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

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

于 2018-04-06T08:11:56.797 回答