将入站流量限制为仅通过 Azure 负载均衡器

Restrict inbound traffic to only come through Azure Load Balancer

请有人建议如何限制端口 80/443 对某些 Azure VM 的访问,以便它们只能通过与 Azure 负载均衡器关联的 public IP 地址进行访问。

我们当前的设置有负载平衡规则,通过来自 public IP 80=>80 和 443=>443 的流量到 2 个虚拟机的后端池。我们在端口 80 上设置了运行状况探测。会话持久性设置为客户端 IP,浮动 IP 已禁用。

我认为答案是拒绝(通过网络安全组)访问 80/443 上的互联网(服务标签)。然后添加规则以允许相同端口上的服务标记 (AzureLoadBalancer)。但这似乎没有效果。阅读更多内容后,AzureLoadBalancer 标签似乎只允许运行状况探测访问,而不是专门允许来自该负载均衡器的入站流量。

我也尝试添加规则以允许负载均衡器的 public IP 地址,但还是没有效果。

我想知道是否需要开始研究 Azure 防火墙?并以某种方式限制访问 到通过它的入站流量?

我能让 VM 在这些端口上响应的唯一方法是添加规则以允许 80/443 从任何到任何....

阅读你的问题后,我的理解是你有一个 Public 负载平衡器,后端虚拟机也有与之关联的实例级 Public IP,因此对虚拟机的直接入站访问是可能的。但是您希望确保仅通过负载均衡器限制对 VM 的直接入站访问。

实现此目的的简单解决方案是取消 VM 的实例级别 public IP 的关联,这将使 LB public IP 成为您的 VM 的唯一联系点。 请记住,LB 不是代理,它只是转发流量的第 4 层资源,因此,您的后端 VM 仍将看到客户端的源 IP 而不是 LB IP,因此,您仍然需要允许使用“任何”作为源的 NSG 级别的流量。

但是,如果您的要求是启用 Azure VM 的出站连接,同时避免 SNAT 耗尽,我建议您创建 NAT 网关,您可以在其中为 SNAT 分配多个 Public IP 地址并删除 Public 来自虚拟机的IP。此设置将确保入站访问仅由 Public 负载均衡器提供,出站访问由 NAT 网关提供,如下所示:

参考:https://docs.microsoft.com/en-us/azure/virtual-network/nat-gateway/nat-gateway-resource#nat-and-vm-with-standard-public-load-balancer

https://docs.microsoft.com/en-us/azure/virtual-network/nat-gateway/tutorial-nat-gateway-load-balancer-public-portal

您还可以在 Azure 负载均衡器中为与各个实例的 RDP/SSH 连接配置端口转发。 参考:https://docs.microsoft.com/en-us/azure/load-balancer/manage#-add-an-inbound-nat-rule

https://docs.microsoft.com/en-us/azure/load-balancer/tutorial-load-balancer-port-forwarding-portal