令Azure VM的公共ip开放外部访问

HyriKuma

对于刚创建的Azure VM(VPS)来说,由于Azure防火墙的存在,默认情况下只有少数几个端口(如SSH服务的22端口)可供外部访问使用。而要想将更多的端口开放出来,则需要额外添加入站的端口规则。

1. Azure VPS在默认情况下无法ping通的原因

通常来说,我们在对远程主机进行连通性测试时,都习惯使用ping命令,而最开始我将Azure VPS创建出来之后,首先就是遇到了Azure主机无法ping通的问题。经过了解才知道,Azure存在一道防火墙,使得ICMP协议下的数据包被阻拦,以下是官方文档的说明:

在 Azure 中,ICMP 包无法通过防火墙和负载均衡器,所以不能直接使用 ping 来测试 Azure 中的虚拟机和服务的连通性(VPN 和 Express Route 通道中的流量不经过负载均衡器,所以只要链路上的防火墙允许 ICMP 包传递,ping 依然可用)。

而ping实际上就是向目标主机发送一个ICMP Echo的请求数据包,然后等待目标主机返回响应数据包,重复多次来计算网络时延和丢包率的一个过程。显然由于Azure防火墙的存在,ping命令下的ICMP请求数据包被防火墙拒绝,也就解释了默认状态下为什么对Azure主机ping只会返回请求超时。

2. 自定义入站端口规则

知道Azure防护墙对外部访问的限制后,我们需要做的就是去修改其网络安全组规则。首先打开Azure VM的控制台,进入到主机资源组中的NSG配置,可以看到最后有一条”DenyAllInBound”的默认规则,它将所有的外部访问都给拒绝了,而我们需要对入站端口规则进行添加设置,把端口从防火墙中开放出来。

2.1 设定拒绝外网访问的特定端口

在入站安全规则的设置界面中点击添加,这里将源保持默认设定”Any”,源端口范围保持默认设定”*”即任意端口,修改目标为”Service Tag”,将目标服务标记为”Internet”,这表示限定与互联网之间的通信规则。然后修改目标端口范围,这里可以以逗号分隔的形式来定义多个目标端口,也可以设定范围。在操作上选择 “拒绝”,规则名称自定,保存修改。

2.2 设定开放外部访问的端口

在下一优先级中,添加一条新的开放外部访问端口的规则。将源和目标均保持默认设定”Any”,可以将目标端口范围设定为”*”即任意范围,代表全部端口放开。建议以最小权限原则自定义范围,开放真正需要的端口。操作上选择 “允许”,规则名称自定,保存修改。

这样就可以将其余端口开放出来,供外部访问使用。

3. 重新进行ping测试

最后在本地对Azure主机ip再次进行ping测试,可以看到成功连通。