请教Azure负载均衡器与VM(含规模集/后端池)间逻辑防火墙的配置方法
如何正确配置Azure负载均衡器与后端VM/规模集的流量互通
嗨,我来帮你理清这个Azure LB和NSG配置的困惑——毕竟从AWS转Azure,确实会有一些概念上的小坑需要踩平😉
首先得澄清你之前的一个关键误解,然后给你两种更合理的配置方案,贴合你已经在使用的ASG分组逻辑:
1. 先搞懂AzureLoadBalancer服务标签到底管什么
你觉得这个标签只用于健康探测,其实它管两类流量:
- LB健康探测流量:源是Azure内部的LB专用IP,用来检测后端VM的可用性
- VM出站SNAT流量:当后端VM主动往外发流量时,LB会把VM的源IP转换成自己的前端IP(公网/内网),回包会通过LB返回,这个标签涵盖了这类场景的LB IP
但它确实不包含客户端通过LB转发到VM的业务流量——因为这类流量的源IP是客户端自己的IP,不是LB的IP,这就是你用这个标签没法让业务流量通的核心原因。
2. 两种更合理的配置方案
场景一:只允许经过LB的流量(拒绝直接访问VM)
如果你的需求是让VM只能接收LB转发的流量,不让外部直接访问VM,用ASG+NSG的组合就很合适,和你之前管控VM间流量的思路一致:
- 第一步:创建一个ASG(比如叫
ASG-LB-Backend),把所有需要通过该LB访问的VM/规模集实例都加入这个组 - 第二步:在VM所在子网或VM绑定的NSG里添加两条核心规则:
- 入站规则1:允许
AzureLoadBalancer标签访问VM的健康探测端口(比如TCP 8080),优先级设高一点(比如100),专门给LB健康探测使用 - 入站规则2:允许你要开放的客户端IP段(如果是公网LB且允许所有公网访问,就用
Internet标签)访问VM的业务端口(比如TCP 80),同时把「目标」设为你刚创建的ASG-LB-Backend,优先级设为200 - 最后保留默认的拒绝所有入站规则(或手动配置更严格的规则),这样直接访问VM的流量就会被拦截
- 入站规则1:允许
场景二:区分多个LB的流量(只让特定LB访问对应VM)
如果你有多个LB,需要精准控制某个LB对应访问特定VM组,那就结合LB的前端IP来配置:
- 第一步:获取目标LB的前端IP(公网LB是公网IP,内网LB是VNet内的私有IP)
- 第二步:在NSG的入站规则中,针对业务端口,把「源」设为该LB的前端IP(如果是动态IP,就用它的IP范围),「目标」设为对应VM所在的ASG
- 别忘了同时保留允许
AzureLoadBalancer标签的健康探测规则,否则LB会判定VM不可用
3. 纠正你之前的操作误区
你之前通过允许LB公网IP访问VNet让LB工作,其实是个误解:业务流量的源是客户端IP,不是LB的IP,所以这个配置实际上是允许了来自LB公网IP的直接访问(比如你直接用LB的IP去ping VM),而不是经过LB转发的客户端流量。正确的做法是开放客户端IP段到VM的流量,同时用AzureLoadBalancer标签处理健康探测。
额外提一下内网LB的情况
如果是内网LB,客户端在同一个VNet或者对等VNet里,NSG的入站规则源可以设为对应的VNet地址空间、对等VNet地址空间,或者客户端所在的ASG,结合目标ASG实现精准管控,逻辑和公网LB一致。
内容的提问来源于stack exchange,提问作者Ashish Ranjan
相关产品推荐
相关产品推荐

