我有一个面向公众的标准 sku,Azure 负载平衡器,它使用负载平衡规则将某个端口的传入请求转发到虚拟机。此虚拟机在子网级别定义了一个 NSG,允许该端口的传入流量,源设置为“Internet”。
目前,此设置有效,但我需要实施白名单 - 仅允许特定 IP 地址集能够通过负载平衡器连接到此虚拟机。但是,如果我在 NSG 规则中删除“Internet”源类型,则无法再通过负载均衡器访问 VM。
有没有其他人遇到过类似的用例,在可通过负载均衡器访问的虚拟机上设置 IP 白名单的最佳方法是什么。谢谢!
编辑:提供更多细节
这些是在子网中定义的顶级 NSG。
我们有一个公共负载平衡器,位于应用上述 NSG 的虚拟机前面。此虚拟机没有特定的公共 IP,并且依赖于负载均衡器的公共 IP。
公共负载均衡器将端口 8443 和端口 8543 上的所有流量转发到此虚拟机,没有会话持久性,并且出站和入站使用相同的 IP。
以下是我到目前为止所做的观察:
- 除非我将 NSG 规则 Port_8443(在上表中)的源指定为“Internet”,否则无法通过负载平衡器的公共 IP 在此端口上访问此虚拟机。
- 当我保留仅将特定 IP 地址列入白名单的 NSG 规则 Port_8543 时,无法通过负载平衡器的公共 IP 在此端口上访问此虚拟机,即使其中一个列入白名单的客户端尝试连接到此端口也是如此。
- 我尝试将 NSG 规则 Custom_AllowAzureLoadBalancerInBound 添加到比 port_8543 更高的优先级,但它仍然没有打开此访问权限。
- 我还尝试将 Azure 负载均衡器 VIP (168.63.129.16) 添加到 Port_8543 NSG,但这也没有打开负载均衡器公共 IP 上对端口 8543 的访问。
我也玩过负载平衡规则选项,但似乎没有什么能实现我想要的——即:
- 目标 1:仅开放虚拟机在端口 8443 和端口 8543 上的访问权限给白名单的客户端 IP,并且
- 目标 2:允许列入白名单的客户端 IP 能够使用负载均衡器的公共 IP 连接到此虚拟机上的这些端口
我只能实现上述目标之一,但不能同时实现这两个目标。
我还尝试使用分配给虚拟机的专用公共 IP 进行相同的白名单;这也失去了与端口的连接,我没有分配“互联网”源标签。