Compartir a través de

使用 PowerShell 创建 VPN 网关

本文可帮助你使用 PowerShell 创建 Azure VPN 网关。 创建与本地网络的 VPN 连接时使用 VPN 网关。 还可以使用 VPN 网关连接虚拟网络。 有关本文中某些设置的更全面信息,请参阅创建 VPN 网关 - 门户

显示虚拟网络和 VPN 网关的示意图。

  • 关系图左侧显示了使用本文中的步骤创建的虚拟网络和 VPN 网关。
  • 你稍后可以添加不同类型的连接,如关系图右侧所示。 例如,可以创建站点到站点连接和点到站点连接。 若要查看可以构建的不同设计体系结构,请参阅 VPN 网关设计

本文中的步骤使用第 2 代 VpnGw2AZ SKU 创建虚拟网络、子网、网关子网和基于路由的、区域冗余的主动-主动模式 VPN 网关(虚拟网络网关)。 创建网关后,可以配置连接。

  • 如果要改用基本 SKU 创建 VPN 网关,请参阅创建基本 SKU VPN 网关
  • 建议尽可能创建主动-主动模式 VPN 网关。 与标准模式 VPN 网关相比,主动-主动模式 VPN 网关可提供更好的可用性和性能。 有关主动-主动网关的详细信息,请参阅关于主动-主动模式网关
  • 有关可用性区域和区域冗余网关的详细信息,请参阅什么是可用性区域

注意

本文中的步骤使用支持 Azure 可用性区域的网关 SKU“VpnGw2AZ”。 如果你的区域不支持可用性区域,请改用非 AZ SKU。 有关 SKU 的详细信息,请参阅关于网关 SKU

开始之前

执行这些步骤需要 Azure 订阅。 如果没有 Azure 订阅,可在开始前创建一个试用帐户

可以在计算机本地安装并运行 Azure PowerShell cmdlet。 PowerShell cmdlet 经常更新。 如果尚未安装最新版本,说明中指定的值可能会失败。 若要查找计算机上安装的 Azure PowerShell 版本,请使用 Get-Module -ListAvailable Az cmdlet。 若要进行安装或更新,请参阅安装 Azure PowerShell 模块

创建资源组

使用 New-AzResourceGroup 命令创建 Azure 资源组。 资源组是在其中部署和管理 Azure 资源的逻辑容器。 使用提升的权限打开 PowerShell 控制台,并使用 Connect-AzAccount -Environment AzureChinaCloud 命令连接到 Azure。

New-AzResourceGroup -Name TestRG1 -Location ChinaNorth3

创建虚拟网络

如果还没有虚拟网络,请使用 New-AzVirtualNetwork 创建一个。 创建虚拟网络时,请确保指定的地址空间不与本地网络的任一个地址空间相重叠。 如果 VPN 连接的两侧存在重复的地址范围,则流量不会按预期的方式路由。 此外,如果要将此虚拟网络连接到另一个虚拟网络,则地址空间不能与其他虚拟网络重叠。 请注意对网络配置进行相应的计划。

以下示例在“ChinaNorth 3”位置创建一个名为“VNet1”的虚拟网络

$virtualnetwork = New-AzVirtualNetwork `
  -ResourceGroupName TestRG1 `
  -Location ChinaNorth3 `
  -Name VNet1 `
  -AddressPrefix 10.1.0.0/16

使用 New-AzVirtualNetworkSubnetConfig cmdlet 创建子网配置。 本练习中不使用 FrontEnd 子网。 可以替换你自己的子网名称。

$subnetConfig = Add-AzVirtualNetworkSubnetConfig `
  -Name FrontEnd `
  -AddressPrefix 10.1.0.0/24 `
  -VirtualNetwork $virtualnetwork

使用 Set-AzVirtualNetwork cmdlet 设置虚拟网络的子网配置。

$virtualnetwork | Set-AzVirtualNetwork

添加网关子网

虚拟网络网关资源部署到一个名为“GatewaySubnet”的特定子网。 网关子网是虚拟网络 IP 地址范围的一部分,该范围是在配置虚拟网络时指定的。

如果没有名为“GatewaySubnet”的子网,则无法创建 VPN 网关。 我们建议创建使用 /27(或更大)的网关子网。 例如 /27 或 /26。 有关详细信息,请参阅 VPN 网关设置 - 网关子网

重要

不支持网关子网上的网络安全组 (NSG)。 将网络安全组关联到此子网可能会导致虚拟网络网关(VPN 和 ExpressRoute 网关)停止按预期方式工作。 有关网络安全组的详细信息,请参阅什么是网络安全组?

为虚拟网络设置变量。

$vnet = Get-AzVirtualNetwork -ResourceGroupName TestRG1 -Name VNet1

使用 Add-AzVirtualNetworkSubnetConfig cmdlet 创建网关子网。

Add-AzVirtualNetworkSubnetConfig -Name 'GatewaySubnet' -AddressPrefix 10.1.255.0/27 -VirtualNetwork $vnet

使用 Set-AzVirtualNetwork cmdlet 设置虚拟网络的子网配置。

$vnet | Set-AzVirtualNetwork

请求公共 IP 地址

VPN 网关必须使用公共 IP 地址。 创建与 VPN 网关的连接时,这是你指定的 IP 地址。 对于主动-主动模式网关,每个网关实例都有自己的公共 IP 地址资源。 请先请求 IP 地址资源,并在创建虚拟网关时参阅该资源。 此外,对于任何以 AZ 结尾的网关 SKU,还必须指定区域设置。 此示例指定了区域冗余配置,因为它指定了所有 3 个区域区域。

创建 VPN 网关时,将会向资源分配 IP 地址。 公共 IP 地址只在删除或重新创建网关时会更改。 该地址不会因为 VPN 网关大小调整、重置或其他内部维护/升级而更改。

使用以下示例为每个网关实例请求一个静态公共 IP 地址。

$gw1pip1 = New-AzPublicIpAddress -Name "VNet1GWpip1" -ResourceGroupName "TestRG1" -Location "ChinaNorth3" -AllocationMethod Static -Sku Standard -Zone 1,2,3

要创建主动-主动网关(建议),可请求第二个公共 IP 地址:

$gw1pip2 = New-AzPublicIpAddress -Name "VNet1GWpip2" -ResourceGroupName "TestRG1" -Location "ChinaNorth3" -AllocationMethod Static -Sku Standard -Zone 1,2,3

创建网关 IP 地址配置

网关配置定义要使用的子网和公共 IP 地址。 使用以下示例创建网关配置。

$vnet = Get-AzVirtualNetwork -Name VNet1 -ResourceGroupName TestRG1
$subnet = Get-AzVirtualNetworkSubnetConfig -Name 'GatewaySubnet' -VirtualNetwork $vnet

$gwipconfig1 = New-AzVirtualNetworkGatewayIpConfig -Name gwipconfig1 -SubnetId $subnet.Id -PublicIpAddressId $gw1pip1.Id
$gwipconfig2 = New-AzVirtualNetworkGatewayIpConfig -Name gwipconfig2 -SubnetId $subnet.Id -PublicIpAddressId $gw1pip2.Id

创建 VPN 网关

创建网关通常需要 45 分钟或更长的时间,具体取决于所选的网关 SKU。 创建网关后,可以创建虚拟网络与本地位置之间的连接。 也可以创建虚拟网络与另一个虚拟网络的连接。

使用 New-AzVirtualNetworkGateway cmdlet 创建 VPN 网关。 请注意,这些示例引用了两个公共 IP 地址,并且通过使用 EnableActiveActiveFeature 开关将网关配置为了主动-主动模式。 在本示例中,我们添加了可选的 -Debug 开关。 如果要使用不同的 SKU 创建网关,请参阅关于网关 SKU,以确定最符合你配置要求的 SKU。

New-AzVirtualNetworkGateway -Name VNet1GW -ResourceGroupName TestRG1 `
-Location "ChinaNorth3" -IpConfigurations $gwipconfig1,$gwipconfig2 -GatewayType "Vpn" -VpnType RouteBased `
-GatewaySku VpnGw2AZ -VpnGatewayGeneration Generation2 -EnableActiveActiveFeature -Debug

查看 VPN 网关

可使用 Get-AzVirtualNetworkGateway cmdlet 查看 VPN 网关。

Get-AzVirtualNetworkGateway -Name Vnet1GW -ResourceGroup TestRG1

查看网关 IP 地址

为每个 VPN 网关实例分配一个公共 IP 地址资源。 要查看与资源关联的 IP 地址,请使用 Get-AzPublicIpAddress。 对每个网关实例重复此操作。 主动-主动网关具有分配给每个实例的不同公共 IP 地址。

Get-AzPublicIpAddress -Name VNet1GWpip1 -ResourceGroupName TestRG1

清理资源

如果不再需要所创建的资源,请使用 Remove-AzResourceGroup 命令删除资源组。 这会删除资源组及其包含的所有资源。

Remove-AzResourceGroup -Name TestRG1

后续步骤

创建网关后,可以配置连接。