使用 CLI 创建基于路由的 VPN 网关

本文可帮助你使用 Azure CLI 快速创建基于路由的 Azure VPN 网关。 创建与本地网络的 VPN 连接时使用 VPN 网关。 还可以使用 VPN 网关连接 VNet。

本文介绍如何创建 VNet、子网、网关子网和基于路由的 VPN 网关(虚拟网络网关)。 创建网关通常需要 45 分钟或更长的时间,具体取决于所选的网关 SKU。 完成网关创建后,可以创建连接。 执行这些步骤需要 Azure 订阅。

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

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

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

如果没有 Azure 试用版订阅,请在开始前创建一个试用版订阅

先决条件

  • 如需在本地运行 CLI 参考命令,请安装 Azure CLI。 如果在 Windows 或 macOS 上运行,请考虑在 Docker 容器中运行 Azure CLI。 有关详细信息,请参阅如何在 Docker 容器中运行 Azure CLI

    • 如果使用的是本地安装,请使用 az login 命令登录到 Azure CLI。 若要完成身份验证过程,请遵循终端中显示的步骤。 有关其他登录选项,请参阅使用 Azure CLI 登录

    • 出现提示时,请在首次使用时安装 Azure CLI 扩展。 有关扩展详细信息,请参阅使用 Azure CLI 的扩展

    • 运行 az version 以查找安装的版本和依赖库。 若要升级到最新版本,请运行 az upgrade

  • 本文需要 Azure CLI 版本 2.0.4 或更高版本。

创建资源组

使用 az group create 命令创建资源组。 资源组是在其中部署和管理 Azure 资源的逻辑容器。

az group create --name TestRG1 --location chinanorth

创建虚拟网络

使用 az network vnet create 命令创建虚拟网络。 以下示例在“ChinaNorth”位置创建一个名为“VNet1”的虚拟网络

az network vnet create \
  -n VNet1 \
  -g TestRG1 \
  -l chinanorth \
  --address-prefix 10.1.0.0/16 \
  --subnet-name Frontend \
  --subnet-prefix 10.1.0.0/24

添加网关子网

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

az network vnet subnet create \
  --vnet-name VNet1 \
  -n GatewaySubnet \
  -g TestRG1 \
  --address-prefix 10.1.255.0/27 

请求公共 IP 地址

VPN 网关必须使用公共 IP 地址。 公共 IP 地址分配给你为虚拟网络创建的 VPN 网关。 参照以下示例,使用 az network public-ip create 命令请求公共 IP 地址:

az network public-ip create \
  -n VNet1GWIP \
  -g TestRG1 \

创建 VPN 网关

使用 az network vnet-gateway create 命令创建 VPN 网关。

如果使用 --no-wait 参数运行该命令,则不会显示任何反馈或输出。 --no-wait 参数允许在后台创建网关。 但并不意味着 VPN 网关会立即创建。

az network vnet-gateway create \
  -n VNet1GW \
  -l chinanorth \
  --public-ip-address VNet1GWIP \
  -g TestRG1 \
  --vnet VNet1 \
  --gateway-type Vpn \
  --sku VpnGw2 \
  --vpn-gateway-generation Generation2 \
  --no-wait

创建 VPN 网关可能需要 45 分钟或更长时间。

查看 VPN 网关

az network vnet-gateway show \
  -n VNet1GW \
  -g TestRG1

响应类似于以下内容:

{
  "activeActive": false,
  "bgpSettings": {
    "asn": 65515,
    "bgpPeeringAddress": "10.1.255.30",
    "bgpPeeringAddresses": [
      {
        "customBgpIpAddresses": [],
        "defaultBgpIpAddresses": [
          "10.1.255.30"
        ],
        "ipconfigurationId": "/subscriptions/<subscription ID>/resourceGroups/TestRG1/providers/Microsoft.Network/virtualNetworkGateways/VNet1GW/ipConfigurations/vnetGatewayConfig0",
        "tunnelIpAddresses": [
          "20.228.164.35"
        ]
      }
    ],
    "peerWeight": 0
  },
  "disableIPSecReplayProtection": false,
  "enableBgp": false,
  "enableBgpRouteTranslationForNat": false,
  "enablePrivateIpAddress": false,
  "etag": "W/\"6c61f8cb-d90f-4796-8697\"",
  "gatewayType": "Vpn",
  "id": "/subscriptions/<subscription ID>/resourceGroups/TestRG1/providers/Microsoft.Network/virtualNetworkGateways/VNet1GW",
  "ipConfigurations": [
    {
      "etag": "W/\"6c61f8cb-d90f-4796-8697\"",
      "id": "/subscriptions/<subscription ID>/resourceGroups/TestRG1/providers/Microsoft.Network/virtualNetworkGateways/VNet1GW/ipConfigurations/vnetGatewayConfig0",
      "name": "vnetGatewayConfig0",
      "privateIPAllocationMethod": "Dynamic",
      "provisioningState": "Succeeded",
      "publicIPAddress": {
        "id": "/subscriptions/<subscription ID>/resourceGroups/TestRG1/providers/Microsoft.Network/publicIPAddresses/VNet1GWIP",
        "resourceGroup": "TestRG1"
      },
      "resourceGroup": "TestRG1",
      "subnet": {
        "id": "/subscriptions/<subscription ID>/resourceGroups/TestRG1/providers/Microsoft.Network/virtualNetworks/VNet1/subnets/GatewaySubnet",
        "resourceGroup": "TestRG1"
      }
    }
  ],
  "location": "chinanorth",
  "name": "VNet1GW",
  "natRules": [],
  "provisioningState": "Succeeded",
  "resourceGroup": "TestRG1",
  "resourceGuid": "69c269e3-622c-4123-9231",
  "sku": {
    "capacity": 2,
    "name": "VpnGw2",
    "tier": "VpnGw2"
  },
  "type": "Microsoft.Network/virtualNetworkGateways",
  "vpnGatewayGeneration": "Generation2",
  "vpnType": "RouteBased"
}

查看公共 IP 地址

若要查看分配给网关的公共 IP 地址,请使用以下示例:

az network public-ip show \
  --name VNet1GWIP \
  --resource-group TestRG1

ipAddress 字段关联的值是 VPN 网关的公共 IP 地址。

示例响应:

{
  "dnsSettings": null,
  "etag": "W/\"69c269e3-622c-4123-9231\"",
  "id": "/subscriptions/<subscription ID>/resourceGroups/TestRG1/providers/Microsoft.Network/publicIPAddresses/VNet1GWIP",
  "idleTimeoutInMinutes": 4,
  "ipAddress": "13.90.195.184",
  "ipConfiguration": {
    "etag": null,
    "id": "/subscriptions/<subscription ID>/resourceGroups/TestRG1/providers/Microsoft.Network/virtualNetworkGateways/VNet1GW/ipConfigurations/vnetGatewayConfig0",

清理资源

如果不再需要所创建的资源,请使用 az group delete 删除资源组。 这会删除资源组及其包含的所有资源。

az group delete --name TestRG1 --yes

后续步骤

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