是否可以在Azure Pipeline虚拟机上打开ICMP?我的CI单元测试有望将ping请求发送到Google DNS(8.8.8.8)
答案 0 :(得分:1)
根据您的描述,您正在尝试使用Ping通过Azure VM终结点访问一个外部IP。 不允许。
请访问我们的Azure VM团队工程师写的这个官方博客:HOW TO ALLOW PING FUNCTIONALITY TO WINDOWS AZURE MACHINES?
默认情况下,Windows Azure VM上的Ping功能被阻止 安全原因。
众所周知,Ping使用的 ICMP 协议可以测量本地计算机和远程计算机之间的连接延迟。超过默认延迟的任何连接均被视为不可用。请参见下面的图片,该Azure虚拟机的唯一可能连接是通过 Internet 。任何试图进入虚拟网络的互联网流量都必须通过负载均衡器,并且此均衡器正在过滤ICMP流量,允许 UDP 和<强大的> TCP 流量。
默认情况下,Azure拒绝并阻止所有公共入站流量到 Azure虚拟机,包括ICMP通信。这是一件好事 因为它可以通过减少攻击面来提高安全性。
注意:此限制仅适用于通过已配置的终结点通过外部IP的网络流量。但是,如果网络流量发生在同一虚拟网络或同一云服务中的VM的内部IP之间,则将允许使用ICMP。
此限制不是永久性的。我们可以设置失火或 azure security group 来允许此操作。但是,不幸的是,对于Azure Devops Pipeline,托管代理正在使用虚拟机DS2_V2
和DS3_V2
,外部用户无法通过防火墙和安全组对它们进行配置/修改。如果使用私有代理进行版本\发行,则ICMP不受限制。您可以设置私人代理,然后在其中执行ping测试。
(有时可以使用 VPN 或 ExpressRoute 跳过负载均衡器过滤器和限制。但我不建议使用这种方式)
由于Ping是用于解决连接问题的非常方便且关键的工具,因此我们正在审查并考虑在Azure VM中扩展此功能。我们的用户语音论坛中提出了这样的建议通知单:Enable ICMP traffic to Azure VMs over the Internet。您也可以对其投票,以将其更快地推入开发队列。