Azure创建SQLMI DR子网遇NetcfgSubnetRangesOverlap错误,如何排查重叠?
排查Azure子网IP范围重叠问题的实用步骤
1. 先摸清目标VNet的现有子网IP段
要解决重叠问题,首先得明确vnet1里已存在的所有子网及其IP范围:
- Azure Portal操作:直接进入vnet1的资源页面,切换到「子网」标签,把所有已创建子网的地址范围逐一记录下来。
- Azure CLI命令:用以下命令快速导出子网列表:
az network vnet subnet list --resource-group <你的资源组名称> --vnet-name vnet1 --query "[].{Name:name, AddressPrefix:addressPrefix}" -o table - Terraform状态检查:如果用Terraform管理资源,可通过状态文件查看现有子网配置:
# 列出所有子网相关资源 terraform state list | grep subnet # 查看具体子网的详细配置 terraform state show <子网资源路径,比如module.primarysubnet.azurerm_subnet.subnet>
2. 算出目标子网的IP范围边界
你要创建的子网是100.90.69.64/26,先手动明确这个网段的起止IP:
- /26的子网掩码为
255.255.255.192,该网段包含64个IP(可用IP为62个) - 起始IP:
100.90.69.64 - 结束IP:
100.90.69.127
把这个范围和第一步记录的所有现有子网逐一对比,就能定位到重叠的网段。
3. 核对phpipam记录与Azure实际配置的一致性
虽然你在phpipam中添加了记录,但大概率存在两边配置不一致的情况:
- 先确认Azure中vnet1的总地址空间(比如是否为
100.90.68.0/22这类),和phpipam里的VNet配置是否匹配。 - 检查phpipam里的子网记录,是否存在未及时更新的旧子网、或手动输入错误的IP段,导致你误以为目标网段可用,但实际Azure中已被占用。
- 排查是否有“漏记”的子网:比如有人通过Portal/CLI手动创建了子网,或Terraform其他模块创建了子网但未同步到phpipam。
4. 检查易被忽略的IP占用资源
除了普通子网,以下Azure资源也会占用VNet的IP段,容易被遗漏:
- 网关子网:如果vnet1配置了VPN网关或ExpressRoute网关,默认会有一个名为
GatewaySubnet的子网,需检查其IP段是否与目标子网重叠。 - Azure Bastion子网:如果部署了Bastion服务,会占用
AzureBastionSubnet的IP段,也要确认范围是否冲突。 - 残留子网状态:极少数情况下,子网删除后可能存在残留状态,可刷新Portal页面或重新用CLI列出子网确认。
5. 验证Terraform配置的正确性
从报错信息看你使用了secondarysubnet模块创建子网,重点检查这几点:
- 模块中配置的
address_prefix是否确实为100.90.69.64/26,有没有变量传递错误的情况。 - 模块是否关联到了正确的vnet1,有没有误关联到其他VNet资源。
- 执行
terraform plan查看输出,确认要创建的子网参数和你预期的一致。
内容的提问来源于stack exchange,提问作者Pratztr
相关产品推荐
相关产品推荐

