你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 PowerShell 创建 VPN 网关

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

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

VPN 网关是连接体系结构的一部分,可帮助安全地访问虚拟网络中的资源。

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

本文中的步骤使用第 2 代 VpnGw2AZ SKU 创建虚拟网络、子网、网关子网和基于路由的、区域冗余的主动-主动 VPN 网关(虚拟网络网关)。 如果要改用基本 SKU 创建 VPN 网关,请参阅创建基本 SKU VPN 网关。 网关创建完成后,可以创建连接。

主动-主动网关在以下方面与主动-备用网关不同:

  • 主动-主动网关有两个网关 IP 配置和两个公共 IP 地址。
  • 主动-主动网关已启用主动-主动设置。
  • 虚拟网络网关 SKU 不能为基本或标准 SKU。

有关主动-主动网关的详细信息,请参阅高可用性跨界连接和 VNet 到 VNet 连接。 有关可用性区域和区域冗余网关的详细信息,请参阅什么是可用性区域

开始之前

执行这些步骤需要 Azure 订阅。 如果没有 Azure 订阅,请在开始之前创建一个免费帐户

使用 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 模块

创建资源组

使用 New-AzResourceGroup 创建 Azure 资源组。 资源组是在其中部署和管理 Azure 资源的逻辑容器。 如果在本地运行 PowerShell,请使用提升的权限打开 PowerShell 控制台,然后使用 Connect-AzAccount 命令连接到 Azure。

New-AzResourceGroup -Name TestRG1 -Location EastUS

创建虚拟网络

使用 New-AzVirtualNetwork 创建虚拟网络。 以下示例在“EastUS”位置创建一个名为“VNet1”的虚拟网络

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

使用 New-AzVirtualNetworkSubnetConfig cmdlet 创建子网配置。

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

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

$virtualnetwork | Set-AzVirtualNetwork

添加网关子网

网关子网包含虚拟网络网关服务使用的保留 IP 地址。 使用下面的示例添加网关子网:

为虚拟网络设置变量。

$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 地址。 在本练习中,我们将创建主动-主动区域冗余 VPN 网关环境。 这意味着需要两个标准公共 IP 地址,每个网关一个,我们还必须指定区域设置。 此示例指定区域冗余配置,因为它指定了所有 3 个区域区域。

使用以下示例为每个网关请求公共 IP 地址。 分配方法必须是静态的。

$gw1pip1 = New-AzPublicIpAddress -Name "VNet1GWpip1" -ResourceGroupName "TestRG1" -Location "EastUS" -AllocationMethod Static -Sku Standard -Zone 1,2,3
$gw1pip2 = New-AzPublicIpAddress -Name "VNet1GWpip2" -ResourceGroupName "TestRG1" -Location "EastUS" -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 地址都被引用,并且网关配置为主动-主动。 在本示例中,我们添加了可选的 -Debug 开关。

New-AzVirtualNetworkGateway -Name VNet1GW -ResourceGroupName TestRG1 `
-Location "East US" -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 地址,请使用 Get-AzPublicIpAddress cmdlet。 示例:

Get-AzPublicIpAddress -Name VNet1GWpip1 -ResourceGroupName TestRG1

清理资源

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

Remove-AzResourceGroup -Name TestRG1

后续步骤

完成创建网关后,可以创建你的虚拟网络与另一个虚拟网络之间的连接。 或者,创建虚拟网络与本地位置之间的连接。