如何将 Azure 负载均衡器前面的 Azure VM 上的源 IP 列入白名单
How to whitelist source IPs on Azure VMs fronted by Azure Load Balancer
我有一个面向 public 的标准 sku Azure 负载均衡器,它使用负载均衡规则将对某个端口的传入请求转发到虚拟机。此虚拟机有一个在子网级别定义的 NSG,它允许该端口的传入流量,源设置为 'Internet'.
目前,此设置有效,但我需要实施白名单 - 仅允许一组特定的 IP 地址能够通过负载平衡器连接到此虚拟机。但是,如果我在 NSG 规则中删除 'Internet' 源类型,则无法再通过负载均衡器访问 VM。
有没有其他人遇到过类似的用例?在可通过负载均衡器访问的 VM 上设置 IP 白名单的最佳方法是什么。谢谢!
编辑:提供更多细节
Screenshot of NSGs
这些是在子网中定义的顶级 NSG。
我们有一个 public 负载平衡器,位于应用上述 NSG 的虚拟机前面。此虚拟机没有特定的 public IP,依赖于负载均衡器的 public IP。
public 负载均衡器将端口 8443 和端口 8543 上的所有流量转发到此虚拟机,没有会话持久性,并且出站和入站使用相同的 IP。
以下是我到目前为止所做的观察:
- 除非我将 NSG 规则 Port_8443(在上面 table)的源指定为“Internet”,否则无法通过负载均衡器的 [=60= 在此端口访问此虚拟机] IP.
- 当我保留仅将特定 IP 地址列入白名单的 NSG 规则 Port_8543 时,无法通过负载均衡器的 public IP 在此端口访问此虚拟机 – 即使其中之一列入白名单的客户端尝试连接到此端口。
- 我尝试将 NSG 规则 Custom_AllowAzureLoadBalancerInBound 添加到比 port_8543 更高的优先级,但它仍然没有打开此访问权限。
- 我还尝试将 Azure 负载均衡器 VIP (168.63.129.16) 添加到 Port_8543 NSG,但这也没有打开对负载均衡器 [=60] 上的端口 8543 的访问=] IP.
我也使用过负载平衡规则选项,但似乎没有任何东西可以实现我正在寻找的东西——即:
- 目标 1:将虚拟机对端口 8443 和端口 8543 的访问权限仅开放给列入白名单的客户端 IP,并且
- 目标 2:使用负载均衡器的 public IP
允许列入白名单的客户端 IP 能够连接到此虚拟机上的这些端口
我只能实现上述目标之一,但不能同时实现这两个目标。
我也尝试过使用分配给虚拟机的专用 public IP 进行相同的白名单;这也失去了与端口的连接,我没有在其中分配 'Internet' 源标记。
Azure 在每个网络安全组中都有默认规则。它允许来自 Azure 负载均衡器资源的入站流量。
如果您想限制客户端访问您的客户端,您只需添加一个新的入站端口规则,将您客户端的public IP地址作为Source
并指定Destination port ranges
和 Protocol
在您的特定入站规则中。您可以通过在客户端计算机上打开 URL 来检查客户端的 public IPv4 here。
只是想为在这里绊倒的其他人添加注释:
如果您希望为少数特定客户端 IP 将 Azure VM(public单独或私下可用)列入白名单,则必须执行以下步骤:
- 为 VM(或子网)创建 NSG - 如果尚不可用
- 添加 NSG 规则以允许来自特定端口上特定客户端 IP 的入站流量
- 添加 NSG 规则以拒绝来自所有其他来源的入站流量[这确实是可选的,但有助于确保设置的安全]
此外,请注意查看您的客户端计算机计划连接的所有 public 个 IP。特别是在测试时,使用 public IP 而不是 VPN 网关地址范围 - 这是我们使用的并且最终得到了我们的白名单测试的假阴性。
我有一个面向 public 的标准 sku Azure 负载均衡器,它使用负载均衡规则将对某个端口的传入请求转发到虚拟机。此虚拟机有一个在子网级别定义的 NSG,它允许该端口的传入流量,源设置为 'Internet'.
目前,此设置有效,但我需要实施白名单 - 仅允许一组特定的 IP 地址能够通过负载平衡器连接到此虚拟机。但是,如果我在 NSG 规则中删除 'Internet' 源类型,则无法再通过负载均衡器访问 VM。
有没有其他人遇到过类似的用例?在可通过负载均衡器访问的 VM 上设置 IP 白名单的最佳方法是什么。谢谢!
编辑:提供更多细节
Screenshot of NSGs
这些是在子网中定义的顶级 NSG。
我们有一个 public 负载平衡器,位于应用上述 NSG 的虚拟机前面。此虚拟机没有特定的 public IP,依赖于负载均衡器的 public IP。
public 负载均衡器将端口 8443 和端口 8543 上的所有流量转发到此虚拟机,没有会话持久性,并且出站和入站使用相同的 IP。
以下是我到目前为止所做的观察:
- 除非我将 NSG 规则 Port_8443(在上面 table)的源指定为“Internet”,否则无法通过负载均衡器的 [=60= 在此端口访问此虚拟机] IP.
- 当我保留仅将特定 IP 地址列入白名单的 NSG 规则 Port_8543 时,无法通过负载均衡器的 public IP 在此端口访问此虚拟机 – 即使其中之一列入白名单的客户端尝试连接到此端口。
- 我尝试将 NSG 规则 Custom_AllowAzureLoadBalancerInBound 添加到比 port_8543 更高的优先级,但它仍然没有打开此访问权限。
- 我还尝试将 Azure 负载均衡器 VIP (168.63.129.16) 添加到 Port_8543 NSG,但这也没有打开对负载均衡器 [=60] 上的端口 8543 的访问=] IP.
我也使用过负载平衡规则选项,但似乎没有任何东西可以实现我正在寻找的东西——即:
- 目标 1:将虚拟机对端口 8443 和端口 8543 的访问权限仅开放给列入白名单的客户端 IP,并且
- 目标 2:使用负载均衡器的 public IP 允许列入白名单的客户端 IP 能够连接到此虚拟机上的这些端口
我只能实现上述目标之一,但不能同时实现这两个目标。
我也尝试过使用分配给虚拟机的专用 public IP 进行相同的白名单;这也失去了与端口的连接,我没有在其中分配 'Internet' 源标记。
Azure 在每个网络安全组中都有默认规则。它允许来自 Azure 负载均衡器资源的入站流量。
如果您想限制客户端访问您的客户端,您只需添加一个新的入站端口规则,将您客户端的public IP地址作为Source
并指定Destination port ranges
和 Protocol
在您的特定入站规则中。您可以通过在客户端计算机上打开 URL 来检查客户端的 public IPv4 here。
只是想为在这里绊倒的其他人添加注释:
如果您希望为少数特定客户端 IP 将 Azure VM(public单独或私下可用)列入白名单,则必须执行以下步骤:
- 为 VM(或子网)创建 NSG - 如果尚不可用
- 添加 NSG 规则以允许来自特定端口上特定客户端 IP 的入站流量
- 添加 NSG 规则以拒绝来自所有其他来源的入站流量[这确实是可选的,但有助于确保设置的安全]
此外,请注意查看您的客户端计算机计划连接的所有 public 个 IP。特别是在测试时,使用 public IP 而不是 VPN 网关地址范围 - 这是我们使用的并且最终得到了我们的白名单测试的假阴性。