如何在含VM的Azure虚拟网络中添加网关子网(解决网段冲突)
解决Azure虚拟网络添加网关子网的冲突问题
这个问题我之前帮不少用户处理过,核心原因是你的虚拟网络(VNet)当前的地址空间应该只包含10.0.1.0/24,而默认子网直接占用了整个地址空间,导致没有多余的不重叠网段来创建网关子网。毕竟Azure要求网关子网必须是VNet地址空间内的独立子网,不能和其他子网重叠,而且名称必须是GatewaySubnet,大小至少要/27(建议用/24更方便后续扩展)。
给你一套实操方案,不用迁移现有VM就能搞定:
1. 先扩展VNet的地址空间
你需要给VNet新增一个不重叠的私有网段,比如10.0.0.0/24(和现有10.0.1.0/24同属私有地址块,不会冲突)。
- 如果用Azure门户操作:找到你的VNet -> 左侧菜单选“地址空间” -> 点击“添加”,输入
10.0.0.0/24-> 保存。 - 如果用Azure CLI命令(更高效):
az network vnet update --name <你的VNet名称> --resource-group <你的资源组名称> --address-prefixes 10.0.1.0/24 10.0.0.0/24
这个操作完全不会影响现有VM的运行,不需要重启,也不会改变现有子网和VM的IP。
2. 创建合规的网关子网
现在VNet有了额外的地址空间,就可以创建网关子网了:
- 门户操作:进入VNet的“子网”页面 -> 点击“+ 网关子网” -> 地址范围填
10.0.0.0/24(或者更小的比如10.0.0.0/27,但/24留的余地更大) -> 名称必须是GatewaySubnet(Azure会自动识别这个名称作为网关专用子网) -> 保存。 - CLI命令:
az network vnet subnet create --name GatewaySubnet --vnet-name <你的VNet名称> --resource-group <你的资源组名称> --address-prefixes 10.0.0.0/24
3. 配置Web应用与VNet的连接
网关子网创建好后,根据你的需求部署VPN网关或ExpressRoute网关,然后给Web应用配置虚拟网络集成:
- 在Web应用的门户页面,找到“网络” -> “虚拟网络集成” -> 选择你刚才配置的VNet,完成集成后,Web应用就能直接通过私有IP
10.0.1.8访问VM了。
如果实在不想扩展VNet地址空间,那只能重新划分现有子网(比如把默认子网改成10.0.1.0/25,腾出10.0.1.128/25作为网关子网),但这种方式需要迁移VM到新子网,操作麻烦且有停机风险,显然不如扩展地址空间来得稳妥。
内容的提问来源于stack exchange,提问作者Allen Zhang
相关产品推荐
相关产品推荐

