You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Set-AzVirtualNetwork无法将Nat Gateway附加到Azure子网,求解决方案

问题分析与解决方案

原代码核心问题

你的代码存在两个关键错误,导致NAT网关无法成功关联子网:

  1. 资源组不统一:创建公网IP、NAT网关使用natgateway_test资源组,但创建虚拟网络用的是TestResourceGroup,跨资源组的资源无法直接关联。
  2. 区域不匹配:NAT网关部署在eastus2,虚拟网络在centralus,Azure要求NAT网关与虚拟网络必须处于同一区域。

修正后的完整代码(创建新子网时关联NAT网关)

# 统一资源组和区域参数
$resourceGroupName = "natgateway_test"
$location = "eastus2"

# 创建标准SKU公网IP
$pip = New-AzPublicIpAddress -Name "pip" -ResourceGroupName $resourceGroupName -Location $location -Sku "Standard" -IdleTimeoutInMinutes 4 -AllocationMethod "static"

# 创建标准SKU NAT网关并关联公网IP
$natGateway = New-AzNatGateway -ResourceGroupName $resourceGroupName -Name "nat_gateway" -IdleTimeoutInMinutes 4 -Sku "Standard" -Location $location -PublicIpAddress $pip

# 创建子网时直接关联NAT网关,再创建虚拟网络
$frontendSubnet = New-AzVirtualNetworkSubnetConfig -Name frontendSubnet -AddressPrefix "10.0.1.0/24" -NatGateway $natGateway
$virtualNetwork = New-AzVirtualNetwork -Name MyVirtualNetwork -ResourceGroupName $resourceGroupName -Location $location -AddressPrefix "10.0.0.0/16" -Subnet $frontendSubnet

现有子网关联NAT网关的步骤

如果要给已存在的子网绑定NAT网关,执行以下脚本:

# 定义参数
$resourceGroupName = "natgateway_test"
$vnetName = "MyVirtualNetwork"
$subnetName = "frontendSubnet"
$natGatewayName = "nat_gateway"

# 获取现有虚拟网络和NAT网关对象
$virtualNetwork = Get-AzVirtualNetwork -Name $vnetName -ResourceGroupName $resourceGroupName
$natGateway = Get-AzNatGateway -Name $natGatewayName -ResourceGroupName $resourceGroupName

# 更新子网配置并生效
$virtualNetwork | Set-AzVirtualNetworkSubnetConfig -Name $subnetName -AddressPrefix "10.0.1.0/24" -NatGateway $natGateway | Set-AzVirtualNetwork

注意事项

  • 确保NAT网关和虚拟网络的SKU匹配:标准SKU NAT网关只能关联标准SKU的公网IP,不能使用基本SKU资源。
  • 子网不能同时配置NAT网关和负载均衡的出站规则,需避免冲突。

内容的提问来源于stack exchange,提问作者Ayanda ezekiel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 03:32:43