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

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

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

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

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

Diagram that shows a virtual network and a VPN gateway.

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

如果没有 Azure 订阅,请在开始之前创建一个 Azure 免费帐户

先决条件

  • 本文需要 Azure CLI 版本 2.0.4 或更高版本。 如果使用 Azure Cloud Shell,则最新版本已安装。

创建资源组

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

az group create --name TestRG1 --location eastus

创建虚拟网络

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

az network vnet create \
  -n VNet1 \
  -g TestRG1 \
  -l eastus \
  --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 eastus \
  --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": "eastus",
  "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 之间的连接。 或者,创建虚拟网络与本地位置之间的连接。