Azure同一VNet下不同子网VM通信失败,默认AllowVnetInBound规则不生效咨询
规则失效的核心原因及遗漏配置项
更高优先级的拒绝规则覆盖了默认放行规则
NSG规则按照优先级数值越小、优先级越高的逻辑匹配,默认的AllowVnetInBound规则优先级为65000,属于全局最低优先级的默认规则。如果Data子网NSG中存在优先级高于65000的入站拒绝规则(比如全局拒绝所有入站、拒绝VNet内非指定IP的流量规则),流量会优先匹配拒绝规则,导致默认的VNet放行规则完全不生效。你手动添加的规则优先级远高于默认规则和中间的拒绝规则,因此可以正常放行流量。
从你提供的NSG入站规则截图也可以验证,手动添加的放行规则优先级数值远小于默认的AllowVnetInBound规则,符合上述优先级覆盖的特征。
NSG关联配置错误
请确认带AllowVnetInBound规则的NSG确实关联到了Data子网,而非仅关联到其他子网或单台VM网卡。如果NSG没有正确绑定Data子网,规则不会对SQL VM的入站流量生效。
默认规则被手动禁用
Azure支持手动禁用NSG默认规则,请检查AllowVnetInBound的状态是否为「已启用」,如果被误关会导致VNet内流量默认被拦截。
自定义路由引流导致VNet标签不匹配
如果Front或Data子网配置了用户自定义路由(UDR),把跨子网流量转发到了第三方防火墙、网络虚拟设备(NVA),流量的源地址会被转换,或者来源不再被NSG识别为VirtualNetwork服务标签的覆盖范围,导致默认规则无法匹配流量。
SQL VM网卡附加了额外NSG
VM入站流量的匹配顺序为「子网NSG → 网卡NSG」,如果SQL VM的网卡单独绑定了其他NSG,且该NSG存在更高优先级的拒绝规则,就算子网NSG放行了流量,也会被网卡层的NSG拦截。
排查优化方案
- 将Data子网NSG的所有入站规则按优先级升序排列,确认是否存在优先级介于手动规则和
AllowVnetInBound之间的拒绝规则,如有则调整规则优先级或内容即可。 - 确认NSG的关联对象包含Data子网,同时确认SQL VM网卡未附加额外的NSG规则。
- 检查
AllowVnetInBound规则的启用状态。 - 查看VNet内所有子网的路由表,确认是否存在引流到NVA的UDR规则,如有则调整NVA的放行策略即可。
- 后续无需针对动态IP单独加规则,调整完成后删除手动添加的临时规则即可正常通信。
内容的提问来源于stack exchange,提问作者Hathors
相关产品推荐
相关产品推荐

