練習 - 使用 Azure CLI 命令來建立站對站 VPN 閘道
您現在已準備好要建立公用 IP 位址、虛擬網路閘道及連線,來完成您的站對站 VPN 閘道。 請記住,當您建立區域網路閘道時,針對虛擬公用 IP 位址參考使用了預留位置。 因此,您現在的其中一項工作就是以指派給您虛擬網路閘道的實際公用 IP 位址更新這些閘道。
在理想情況下,應該在建立區域網路閘道「之前」,先建立公用 IP 位址和虛擬網路閘道。 在此練習中,您會了解如何更新區域網路閘道。 您可以使用相同命令來更新區域網路閘道中的任何設定元素,例如遠端網路位址空間。
建立 Azure 端 VPN 閘道
首先,您會建立連線 Azure 端的 VPN 閘道。 建立虛擬網路閘道最多可能需要 45 分鐘。 為了節省時間,您使用 Azure CLI 命令搭配 --no-wait
參數。 此參數可讓您同時建立這兩個虛擬網路閘道,以將建立這些資源所需的整體時間降至最低。
在 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
在 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
在 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 裝置。
在 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
在 Cloud Shell 中執行下列命令,以建立 VNG-HQ-Network 虛擬網路。
az network vnet create \ --resource-group <rgn>[sandbox resource group name]</rgn> \ --name VNG-HQ-Network \ --subnet-name GatewaySubnet
在 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
建立閘道需要大約 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
當每個 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 位址指派給它們且與其建立關聯之前,無法更新區域網路閘道。
執行下列 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 位址和網路之類的資訊。
在 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)
在 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
在 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)
在 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 位址參考。
建立要用於連線的共用金鑰。 在下列命令中,以要用於 IPSec 預先共用金鑰的文字字串來取代
<shared key>
。 預先共用金鑰是一個字串,其中包含長度不超過 128 個字元的可列印 ASCII 字元。 其不能包含特殊字元,例如連字號和波浪號。 您在這兩個連線上使用這個預先共用金鑰。注意
在此範例中,任何一組數字都適用於共用金鑰: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 <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
請記住,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 <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 通道已連線。
執行下列命列以確認 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
顯示為Connecting
或Unknown
,請等候一兩分鐘並重新執行命令。 可能需要幾分鐘才會完全連線。Name ConnectionStatus -------------------------- ------------------ Azure-VNet-1-To-HQ-Network Connected
現在會完成站對站設定。 下圖顯示您的最終拓撲,包括子網路,以及與邏輯連線點的連線。 [服務] 與 [應用程式] 子網路中部署的虛擬機器現在可以與彼此通訊,因為 VPN 連線已成功建立。