练习 - 使用 Azure CLI 命令创建站点到站点 VPN 网关
现已准备好通过创建公共 IP 地址、虚拟网络网关和连接来完成站点到站点 VPN 网关的创建。 请记住,在创建本地网络网关时,你使用了公共 IP 地址引用的占位符,因此现在的任务之一是使用分配给虚拟网络网关的实际公共 IP 地址更新这些网关。
理想情况下,应在创建本地网络网关之前创建公共 IP 地址和虚拟网络网关。 在本练习中,你将了解如何更新本地网络网关。 可以使用相同的命令来更新本地网络网关中的任何配置元素,例如远程网络地址空间。
注意
本练习可选做。 若要完成本练习,则需要在开始之前创建 Azure 订阅。 如果没有 Azure 帐户或不想暂时创建一个帐户,可以通读说明,以便了解所显示的信息。
注意
在本练习中,请将示例中的 myResourceGroupName 替换为现有资源组的名称或为此练习创建的资源组的名称。
创建 Azure 端 VPN 网关
首先,为连接的 Azure 端创建 VPN 网关。 最多需要 45 分钟就可创建虚拟网络网关。 为节省时间,请使用带有 --no-wait 参数的 Azure CLI 命令。 此参数允许同时创建两个虚拟网络网关,最大限度地缩短创建这些资源所需的总时间。
在 Cloud Shell 中运行以下命令,创建 PIP-VNG-Azure-VNet-1 公共 IP 地址:
az network public-ip create \ --resource-group "myResourceGroupName" \ --name PIP-VNG-Azure-VNet-1 \ --allocation-method Static在 Cloud Shell 中运行以下命令,创建 VNG-Azure-VNet-1 虚拟网络:
az network vnet create \ --resource-group "myResourceGroupName" \ --name VNG-Azure-VNet-1 \ --subnet-name GatewaySubnet在 Cloud Shell 中运行以下命令,创建 VNG-Azure-VNet-1 虚拟网络网关:
az network vnet-gateway create \ --resource-group "myResourceGroupName" \ --name VNG-Azure-VNet-1 \ --public-ip-addresses PIP-VNG-Azure-VNet-1 \ --vnet VNG-Azure-VNet-1 \ --gateway-type Vpn \ --vpn-type RouteBased \ --sku VpnGw1 \ --no-wait
创建本地 VPN 网关
接下来,创建一个 VPN 网关来模拟本地 VPN 设备。
在 Cloud Shell 中运行以下命令,创建 PIP-VNG-HQ-Network 公共 IP 地址:
az network public-ip create \ --resource-group "myResourceGroupName" \ --name PIP-VNG-HQ-Network \ --allocation-method Static在 Cloud Shell 中运行以下命令,创建 VNG-HQ-Network 虚拟网络:
az network vnet create \ --resource-group "myResourceGroupName" \ --name VNG-HQ-Network \ --subnet-name GatewaySubnet在 Cloud Shell 中运行以下命令,创建 VNG-HQ-Network 虚拟网络网关:
az network vnet-gateway create \ --resource-group "myResourceGroupName" \ --name VNG-HQ-Network \ --public-ip-addresses PIP-VNG-HQ-Network \ --vnet VNG-HQ-Network \ --gateway-type Vpn \ --vpn-type RouteBased \ --sku VpnGw1 \ --no-wait创建网关大约需要至少 30 分钟才能完成。 若要监视网关创建的进度,请运行以下命令。 我们将使用 Linux
watch命令定期运行az network vnet-gateway list该命令,以便监视进度:watch -d -n 5 az network vnet-gateway list \ --resource-group "myResourceGroupName" \ --output table在每个 VPN 网关的“ProvisioningState”显示为“Succeeded”之后,便可以继续操作。 按 Ctrl+C 在创建网关后停止命令。
ActiveActive EnableBgp EnablePrivateIpAddress GatewayType Location Name ProvisioningState ResourceGroup ResourceGuid VpnType -------------- ----------- ------------------------ ------------- -------------- ---------------- ------------------- ----------------------------- ------------------------------------ ---------- False False False Vpn southcentralus VNG-Azure-VNet-1 Succeeded "myResourceGroupName" 48dc714e-a700-42ad-810f-a8163ee8e001 RouteBased False False False Vpn southcentralus VNG-HQ-Network Succeeded "myResourceGroupName" 49b3041d-e878-40d9-a135-58e0ecb7e48b RouteBased
更新本地网络网关 IP 引用
重要说明
在开始接下来的练习之前,必须已成功部署虚拟网络网关。 部署网关可能需要 30 分钟或更长时间才能完成。 如果 ProvisioningState 还未显示“已成功”,则需要等待。
在本节中,更新本地网络网关中定义的远程网关 IP 地址引用。 在创建 VPN 网关、为其分配 IPv4 地址并将其与之关联之前,无法更新本地网络网关。
运行以下 Azure CLI 命令以检查是否已创建两个虚拟网络网关。 初始状态显示“正在更新”。 你希望看到 VNG-Azure-VNet-1 和 VNG-HQ-Network 均成功。
az network vnet-gateway list \ --resource-group "myResourceGroupName" \ --output tableName Location GatewayType VpnType VpnGatewayGeneration EnableBgp EnablePrivateIpAddress Active ResourceGuid ProvisioningState ResourceGroup ---------------- ---------- ------------- ---------- ---------------------- ----------- ------------------------ -------- ------------------------------------ ------------------- ------------------------------------------ VNG-Azure-VNet-1 westus Vpn RouteBased Generation1 False False False 9a2e60e6-da57-4274-99fd-e1f8b2c0326d Succeeded learn-cfbcca66-16fd-423e-b688-66f242d8f09e VNG-HQ-Network westus Vpn RouteBased Generation1 False False False c36430ed-e6c0-4230-ae40-cf937a102bcd Succeeded learn-cfbcca66-16fd-423e-b688-66f242d8f09e记住,要等待网关列表成功返回。 另外还要记住,本地网络网关资源定义以它们命名的远程网关和网络设置。 例如, LNG-Azure-VNet-1 本地网络网关包含 Azure-VNet-1 的 IP 地址和网络等信息。
在 Cloud Shell 中运行以下命令,检索分配给 PIP-VNG-Azure-VNet-1 的 IPv4 地址并将其存储在变量中:
PIPVNGAZUREVNET1=$(az network public-ip show \ --resource-group "myResourceGroupName" \ --name PIP-VNG-Azure-VNet-1 \ --query "[ipAddress]" \ --output tsv)在 Cloud Shell 中运行以下命令,更新 LNG-Azure-VNet-1 本地网络网关,使其指向附加到 VNG-Azure-VNet-1 虚拟网络网关的公共 IP 地址:
az network local-gateway update \ --resource-group "myResourceGroupName" \ --name LNG-Azure-VNet-1 \ --gateway-ip-address $PIPVNGAZUREVNET1在 Cloud Shell 中运行以下命令,检索分配给 PIP-VNG-HQ-Network 的 IPv4 地址并将其存储在变量中:
PIPVNGHQNETWORK=$(az network public-ip show \ --resource-group "myResourceGroupName" \ --name PIP-VNG-HQ-Network \ --query "[ipAddress]" \ --output tsv)在 Cloud Shell 中运行以下命令以更新 LNG-HQ-Network 本地网络网关,使其指向附加到 VNG-HQ-Network 虚拟网络网关的公共 IP 地址:
az network local-gateway update \ --resource-group "myResourceGroupName" \ --name LNG-HQ-Network \ --gateway-ip-address $PIPVNGHQNETWORK
创建连接
在此,您可以通过创建连接,将每个 VPN 网关与包含该网关远程网络的公共 IP 地址引用的本地网络网关连接起来,从而完成配置。
创建用于连接的共享密钥。 在以下命令中,将
<shared key>替换为用于 IPSec 预共享密钥的文本字符串。 预共享密钥是一个由可打印 ASCII 字符组成的字符串,长度不得超出 128 个字符。 它不能包含特殊字符,例如连字符和波形符。 同时对两个连接使用此预共享密钥。注意
在此示例中,任何一组数字都将用于共享密钥:SHAREDKEY=123456789。 在生产环境中,建议使用长度不超过 128 个字符的可打印 ASCII 字符串,不带有特殊字符,如连字符或波形符。
SHAREDKEY=<shared key>请记住, LNG-HQ-Network 包含对模拟本地 VPN 设备上的 IP 地址的引用。 在 Cloud Shell 中运行以下命令,以创建从 VNG-Azure-VNet-1 到 LNG-HQ-Network 的连接:
az network vpn-connection create \ --resource-group "myResourceGroupName" \ --name Azure-VNet-1-To-HQ-Network \ --vnet-gateway1 VNG-Azure-VNet-1 \ --shared-key $SHAREDKEY \ --local-gateway2 LNG-HQ-Network请记住, LNG-Azure-VNet-1 包含对与 VNG-Azure-VNet-1 VPN 网关关联的公共 IP 地址的引用。 此连接通常从本地设备创建。 在 Cloud Shell 中运行以下命令,以创建从 VNG-HQ-Network 到 LNG-Azure-VNet-1 的连接:
az network vpn-connection create \ --resource-group "myResourceGroupName" \ --name HQ-Network-To-Azure-VNet-1 \ --vnet-gateway1 VNG-HQ-Network \ --shared-key $SHAREDKEY \ --local-gateway2 LNG-Azure-VNet-1
现在已完成站点到站点连接的配置。 可能需要几分钟时间,但隧道应自动连接并处于活动状态。
验证步骤
让我们来确认 VPN 隧道是否已连接。
运行以下命令,确认 Azure-VNet-1-To-HQ-Network 是否已连接:
az network vpn-connection show \ --resource-group "myResourceGroupName" \ --name Azure-VNet-1-To-HQ-Network \ --output table \ --query '{Name:name,ConnectionStatus:connectionStatus}'应会看到类似以下内容的输出,这表示连接成功。 如果
ConnectionStatus显示为Connecting或Unknown,请等待一两分钟,然后重新运行此命令。 需要几分钟才能完全连接。Name ConnectionStatus -------------------------- ------------------ Azure-VNet-1-To-HQ-Network Connected
现已完成站点到站点的配置。 下图显示最终拓扑,包括子网和连接,以及逻辑连接点。 既然已成功建立 VPN 连接,“服务”和“应用程序”子网中部署的虚拟机现可彼此通信。