可以为虚拟 WAN VPN 网关配置静态一对一 NAT 规则。 NAT 规则提供了一种机制,用于设置 IP 地址的一对一转换。 NAT 可用于将 IP 地址不兼容或 IP 地址重叠的两个 IP 网络互连。 一个典型的应用场景是包含重叠 IP 且需要访问 Azure VNet 资源的分支。
此配置使用流表将流量从外部(主机)IP 地址路由到与虚拟网络中的终结点(虚拟机、计算机、容器等)关联的内部 IP 地址。 为使用 NAT,VPN 设备需要使用任意到任意(通配符)流量选择器, 不支持将基于策略(窄)的流量选择器与 NAT 配置结合使用。
- 确保拥有 Azure 订阅。 如果还没有 Azure 订阅,可以激活 MSDN 订户权益。
- 本教程将在与 VPN 站点连接关联的 VPN 网关上创建 NAT 规则。 其中的步骤假设已将某个现有的虚拟 WAN VPN 网关连接到具有重叠地址空间的两个分支。
可以在计算机本地安装并运行 Azure PowerShell cmdlet。 PowerShell cmdlet 经常更新。 如果尚未安装最新版本,说明中指定的值可能会失败。 若要查找计算机上安装的 Azure PowerShell 版本,请使用 Get-Module -ListAvailable Az
cmdlet。 若要进行安装或更新,请参阅安装 Azure PowerShell 模块。
使用提升的权限打开 PowerShell 控制台,并连接到 Azure 帐户。
Connect-AzAccount -Environment AzureChinaCloud
cmdlet 将提示你输入凭据。 进行身份验证后,它会下载帐户设置,以便 Azure PowerShell 可以使用这些设置。 可以使用 Get-AzSubscription
和 Select-AzSubscription -SubscriptionName "Name of subscription"
更改订阅。
可以使用 Azure PowerShell 随时配置和查看 VPN 网关设置中的 NAT 规则。
为现有资源声明变量。
$resourceGroup = Get-AzResourceGroup -ResourceGroupName "testRG" $virtualWan = Get-AzVirtualWan -ResourceGroupName "testRG" -Name "myVirtualWAN" $virtualHub = Get-AzVirtualHub -ResourceGroupName "testRG" -Name "chinaeast2hub" $vpnGateway = Get-AzVpnGateway -ResourceGroupName "testRG" -Name "testvpngw"
创建新的 NAT 规则,以确保站点到站点 VPN 网关能够将两个具有重叠地址空间的分支区别开来。
可为以下值设置以下参数:
- 名称: NAT 规则的唯一名称。
- 类型:静态数据或动态数据。 静态一对一 NAT 可在内部地址和外部地址之间建立一对一关系。 内部和外部映射的子网大小对于静态而言必须相同。
-
模式: IngressSnat 或 EgressSnat。
- IngressSnat 模式(也称为“入口源 NAT”)适用于进入 Azure 中心的站点到站点 VPN 网关的流量。
- EgressSnat 模式(也称为“出口源 NAT”)适用于离开 Azure 中心的站点到站点 VPN 网关的流量。
- 内部映射:内部网络上要映射到一组外部 IP 的源 IP 的地址前缀范围。 换句话说,就是你的 NAT 前地址前缀范围。
- 外部映射:源 IP 要映射到的外部网络上的目标 IP 的地址前缀范围。 换句话说,就是你的 NAT 后地址前缀范围。
- 链接连接:连接资源,用于以虚拟方式将 VPN 站点连接到 Azure 虚拟 WAN 中心的站点到站点 VPN 网关。
语法
New-AzVpnGatewayNatRule -ResourceGroupName <String> -ParentResourceName <String> -Name <String> [-Type <String>] [-Mode <String>] -InternalMapping <String[]> -ExternalMapping <String[]> [-InternalPortRange <String[]>] [-ExternalPortRange <String[]>] [-IpConfigurationId <String>] [-AsJob] [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>]
$natrule = New-AzVpnGatewayNatRule -ResourceGroupName "testRG" -ParentResourceName "testvpngw" -Name "testNatRule" -InternalMapping "10.0.0.0/24" -ExternalMapping "1.2.3.4/32" -IpConfigurationId "Instance0" -Type Dynamic -Mode EgressSnat
声明变量以便为新的 NAT 规则创建新对象。
$newruleobject = New-Object Microsoft.Azure.Commands.Network.Models.PSResourceId $newruleobject.Id = $natrule.Id
声明变量以获取现有 VPN 连接。
$conn = Get-AzVpnConnection -Name "Connection-VPNsite1" -ResourceGroupName "testRG" -ParentResourceName "testvpngw"
在 VPN 连接中为 NAT 规则设置适当的索引。
$conn.VpnLinkConnections $conn.VpnLinkConnections[0].EgressNatRules = $newruleobject
使用新的 NAT 规则更新现有 VPN 连接。
Update-AzVpnConnection -Name "Connection-VPNsite1" -ResourceGroupName "testRG" -ParentResourceName "testvpngw" -VpnSiteLinkConnection $conn.VpnLinkConnections
有关站点到站点配置的详细信息,请参阅配置虚拟 WAN 站点到站点连接。