練習 - 使用 Azure CLI 命令來建立站對站 VPN 閘道

已完成

您現在已準備好要建立公用 IP 位址、虛擬網路閘道及連線,來完成您的站對站 VPN 閘道。 請記住,當您建立區域網路閘道時,針對虛擬公用 IP 位址參考使用了預留位置。 因此,您現在的其中一項工作就是以指派給您虛擬網路閘道的實際公用 IP 位址更新這些閘道。

在理想情況下,應該在建立區域網路閘道「之前」,先建立公用 IP 位址和虛擬網路閘道。 在此練習中,您會了解如何更新區域網路閘道。 您可以使用相同命令來更新區域網路閘道中的任何設定元素,例如遠端網路位址空間。

建立 Azure 端 VPN 閘道

首先,您會建立連線 Azure 端的 VPN 閘道。 建立虛擬網路閘道最多可能需要 45 分鐘。 為了節省時間,您使用 Azure CLI 命令搭配 --no-wait 參數。 此參數可讓您同時建立這兩個虛擬網路閘道,以將建立這些資源所需的整體時間降至最低。

  1. 在 Cloud Shell 中執行下列命令,以建立 PIP-VNG-Azure-VNet-1 公用 IP 位址。

    az network public-ip create \
        --resource-group <rgn>[sandbox resource group name]</rgn> \
        --name PIP-VNG-Azure-VNet-1 \
        --allocation-method Static
    
  2. 在 Cloud Shell 中執行下列命令,以建立 VNG-Azure-VNet-1 虛擬網路。

    az network vnet create \
        --resource-group <rgn>[sandbox resource group name]</rgn> \
        --name VNG-Azure-VNet-1 \
        --subnet-name GatewaySubnet 
    
  3. 在 Cloud Shell 中執行下列命令,以建立 VNG-Azure-VNet-1 虛擬網路閘道。

    az network vnet-gateway create \
        --resource-group <rgn>[sandbox resource group name]</rgn> \
        --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 裝置。

  1. 在 Cloud Shell 中執行下列命令,以建立 PIP-VNG-HQ-Network 公用 IP 位址。

    az network public-ip create \
        --resource-group <rgn>[sandbox resource group name]</rgn> \
        --name PIP-VNG-HQ-Network \
        --allocation-method Static
    
  2. 在 Cloud Shell 中執行下列命令,以建立 VNG-HQ-Network 虛擬網路。

    az network vnet create \
        --resource-group <rgn>[sandbox resource group name]</rgn> \
        --name VNG-HQ-Network \
        --subnet-name GatewaySubnet 
    
  3. 在 Cloud Shell 中執行下列命令,以建立 VNG-HQ-Network 虛擬網路閘道。

    az network vnet-gateway create \
        --resource-group <rgn>[sandbox resource group name]</rgn> \
        --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
    
  4. 建立閘道需要大約 30 分鐘以上才能完成。 若要監視建立閘道的進度,請執行下列命令。 我們使用 Linux watch 命令定期執行 az network vnet-gateway list 命令,讓您能夠監視進度。

    watch -d -n 5 az network vnet-gateway list \
        --resource-group <rgn>[sandbox resource group name]</rgn> \
        --output table
    
  5. 當每個 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            <rgn>[sandbox resource group name]</rgn>  48dc714e-a700-42ad-810f-a8163ee8e001  RouteBased
    False           False        False                    Vpn            southcentralus  VNG-HQ-Network    Succeeded            <rgn>[sandbox resource group name]</rgn>  49b3041d-e878-40d9-a135-58e0ecb7e48b  RouteBased
    

更新區域網路閘道 IP 參考

重要

您必須先成功部署虛擬網路閘道,才能開始下一個練習。 閘道最多可能需要 30 分鐘以上才能完成。 如果 ProvisioningState 尚未顯示「成功」,則您還需要等待。

在本節中,您會更新區域網路閘道中所定義的遠端閘道 IP 位址參考。 在您建立了 VPN 閘道並將 IPv4 位址指派給它們且與其建立關聯之前,無法更新區域網路閘道。

  1. 執行下列 Azure CLI 命令,以檢查是否已建立這兩個虛擬網路閘道。 初始狀態會顯示 [正在更新]。 您想要在 VNG-AZURE-VNET-1 和 VNG-HQ-Network 上看到成功

    az network vnet-gateway list \
        --resource-group <rgn>[sandbox resource group name]</rgn> \
        --output table
    
    Name              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 位址和網路之類的資訊。

  2. 在 Cloud Shell 中執行下列命令,以擷取指派給 PIP-VNG-Azure-VNet-1 的 IPv4 位址,並儲存在變數中。

    PIPVNGAZUREVNET1=$(az network public-ip show \
        --resource-group <rgn>[sandbox resource group name]</rgn> \
        --name PIP-VNG-Azure-VNet-1 \
        --query "[ipAddress]" \
        --output tsv)
    
  3. 在 Cloud Shell 中執行下列命令,以更新 LNG-Azure-VNet-1 區域網路閘道,使之指向連結至 VNG-Azure-VNet-1 虛擬網路閘道的公用 IP 位址。

    az network local-gateway update \
        --resource-group <rgn>[sandbox resource group name]</rgn> \
        --name LNG-Azure-VNet-1 \
        --gateway-ip-address $PIPVNGAZUREVNET1
    
  4. 在 Cloud Shell 中執行下列命令,以擷取指派給 PIP-VNG-HQ-Network 的 IPv4 位址,並儲存在變數中。

    PIPVNGHQNETWORK=$(az network public-ip show \
        --resource-group <rgn>[sandbox resource group name]</rgn> \
        --name PIP-VNG-HQ-Network \
        --query "[ipAddress]" \
        --output tsv)
    
  5. 在 Cloud Shell 中執行下列命令,以更新 LNG-HQ-Network 區域網路閘道,使之指向連結至 VNG-HQ-Network 虛擬網路閘道的公用 IP 位址。

    az network local-gateway update \
        --resource-group <rgn>[sandbox resource group name]</rgn> \
        --name LNG-HQ-Network \
        --gateway-ip-address $PIPVNGHQNETWORK
    

建立連線

您會藉由建立從每個 VPN 閘道到區域網路閘道的連線來完成設定,其中包含該閘道之遠端網路的公用 IP 位址參考。

  1. 建立要用於連線的共用金鑰。 在下列命令中,以要用於 IPSec 預先共用金鑰的文字字串來取代 <shared key>。 預先共用金鑰是一個字串,其中包含長度不超過 128 個字元的可列印 ASCII 字元。 其不能包含特殊字元,例如連字號和波浪號。 您在這兩個連線上使用這個預先共用金鑰。

    注意

    在此範例中,任何一組數字都適用於共用金鑰:SHAREDKEY=123456789。 在生產環境中,我們建議使用不超過 128 個字元的可列印 ASCII 字元字串,「沒有」特殊字元,例如連字號和波浪號。

    SHAREDKEY=<shared key>
    
  2. 請記住,LNG-HQ-Network 包含對所模擬內部部署 VPN 裝置上 IP 位址的參考。 在 Cloud Shell 中執行下列命令,以建立從 VNG-Azure-VNet-1LNG-HQ-Network 的連線。

    az network vpn-connection create \
        --resource-group <rgn>[sandbox resource group name]</rgn> \
        --name Azure-VNet-1-To-HQ-Network \
        --vnet-gateway1 VNG-Azure-VNet-1 \
        --shared-key $SHAREDKEY \
        --local-gateway2 LNG-HQ-Network
    
  3. 請記住,LNG-Azure-VNet-1 包含對與 VNG-Azure-VNet-1 VPN 閘道相關聯之公用 IP 位址的參考。 此連線通常會建立自您的內部部署裝置。 在 Cloud Shell 中執行下列命令,以建立從 VNG-HQ-NetworkLNG-Azure-VNet-1 的連線。

    az network vpn-connection create \
        --resource-group <rgn>[sandbox resource group name]</rgn> \
        --name HQ-Network-To-Azure-VNet-1  \
        --vnet-gateway1 VNG-HQ-Network \
        --shared-key $SHAREDKEY \
        --local-gateway2 LNG-Azure-VNet-1
    

您現在已完成站對站連線的設定。 這可能需要幾分鐘的時間,但通道應該會自動連線並成為使用中。

驗證步驟

讓我們確認 VPN 通道已連線。

  1. 執行下列命列以確認 Azure-VNet-1-To-HQ-Network 已連線。

    az network vpn-connection show \
        --resource-group <rgn>[sandbox resource group name]</rgn> \
        --name Azure-VNet-1-To-HQ-Network  \
        --output table \
        --query '{Name:name,ConnectionStatus:connectionStatus}'
    

    您應該會看到如下輸出,表示連線成功。 若 ConnectionStatus 顯示為 ConnectingUnknown,請等候一兩分鐘並重新執行命令。 可能需要幾分鐘才會完全連線。

    Name                        ConnectionStatus
    --------------------------  ------------------
    Azure-VNet-1-To-HQ-Network  Connected
    

現在會完成站對站設定。 下圖顯示您的最終拓撲,包括子網路,以及與邏輯連線點的連線。 [服務] 與 [應用程式] 子網路中部署的虛擬機器現在可以與彼此通訊,因為 VPN 連線已成功建立。

Diagram of resources deployed during unit 4 exercise.