你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
可以为虚拟 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
本文使用 PowerShell cmdlet。 若要运行 cmdlet,可以使用 Azure Cloud Shell。 Cloud Shell 是免费的交互式 shell,可以使用它运行本文中的步骤。 它预安装有常用 Azure 工具并将其配置与帐户一起使用。
要打开 Cloud Shell,只需从代码块的右上角选择“打开 Cloudshell”。 也可以在单独的浏览器标签页中通过转到 https://shell.azure.com/powershell 打开 Cloud Shell。 选择“复制”以复制代码块,将其粘贴到 Cloud Shell 中,然后选择“Enter”键来运行这些代码。
还可以在计算机本地安装并运行 Azure PowerShell cmdlet。 PowerShell cmdlet 经常更新。 如果尚未安装最新版本,说明中指定的值可能会失败。 若要查找计算机上安装的 Azure PowerShell 版本,请使用 Get-Module -ListAvailable Az cmdlet。 若要进行安装或更新,请参阅安装 Azure PowerShell 模块。
登录
如果使用的是 Azure Cloud Shell,则系统会在你打开 Cloudshell 后自动指示你登录到帐户。 无需运行 Connect-AzAccount。 登录后,仍可根据需要使用 Get-AzSubscription 和 Select-AzSubscription 来更改订阅。
如果在本地运行 PowerShell,请使用提升的权限打开 PowerShell 控制台,然后连接到 Azure 帐户。 Connect-AzAccount cmdlet 将提示你输入凭据。 进行身份验证后,它会下载帐户设置,以便 Azure PowerShell 可以使用这些设置。 可以使用 Get-AzSubscription 和 Select-AzSubscription -SubscriptionName "Name of subscription" 更改订阅。
配置 NAT 规则
可以使用 Azure PowerShell 随时配置和查看 VPN 网关设置中的 NAT 规则。
为现有资源声明变量。
$resourceGroup = Get-AzResourceGroup -ResourceGroupName "testRG" $virtualWan = Get-AzVirtualWan -ResourceGroupName "testRG" -Name "myVirtualWAN" $virtualHub = Get-AzVirtualHub -ResourceGroupName "testRG" -Name "westushub" $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 站点到站点连接。
