使用 Azure CLI 以虛擬網路對等互連連線虛擬網路
您可以使用虛擬網路對等互連,讓虛擬網路彼此連線。 一旦虛擬網路對等互連,兩個虛擬網路中的資源就可以彼此通訊,且通訊時會有相同的延遲和頻寬,彷彿這些資源是位於相同的虛擬網路中。
在本文中,您將學會如何:
建立兩個虛擬網路
使用虛擬網路對等互連連線兩個虛擬網路
將虛擬機器 (VM) 部署到每個虛擬網路
虛擬機器之間的通訊
如果您沒有 Azure 訂閱,請在開始之前,先建立 Azure 免費帳戶。
必要條件
在 Azure Cloud Shell 中使用 Bash 環境。 如需詳細資訊,請參閱 Azure Cloud Shell 中的 Bash 快速入門。
若要在本地執行 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。
- 本文需要 2.0.28 版或更新版本的 Azure CLI。 如果您是使用 Azure Cloud Shell,就已安裝最新版本。
建立虛擬網路
建立虛擬網路之前,您必須為虛擬網路以及在本文中建立的所有其他資源,建立資源群組。 使用 az group create 來建立資源群組。 下列範例會在 eastus 位置建立名為 test-rg 的資源群組。
az group create \
--name test-rg \
--location eastus
使用 az network vnet create 建立虛擬網路。 下列範例會建立名為 vnet-1 的虛擬網路,其地址前綴 為 10.0.0.0/16。
az network vnet create \
--name vnet-1 \
--resource-group test-rg \
--address-prefixes 10.0.0.0/16 \
--subnet-name subnet-1 \
--subnet-prefix 10.0.0.0/24
使用地址前綴 10.1.0.0/16 建立名為 vnet-2 的虛擬網路:
az network vnet create \
--name vnet-2 \
--resource-group test-rg \
--address-prefixes 10.1.0.0/16 \
--subnet-name subnet-1 \
--subnet-prefix 10.1.0.0/24
對等虛擬網路
在虛擬網路標識碼之間建立對等互連。 使用 az network vnet show 取得每個虛擬網路的標識碼,並將標識符儲存在變數中。
# Get the id for vnet-1.
vNet1Id=$(az network vnet show \
--resource-group test-rg \
--name vnet-1 \
--query id --out tsv)
# Get the id for vnet-2.
vNet2Id=$(az network vnet show \
--resource-group test-rg \
--name vnet-2 \
--query id \
--out tsv)
使用 az network vnet peering create 建立從 vnet-1 到 vnet-2 的 對等互連。 --allow-vnet-access
如果未指定 參數,則會建立對等互連,但無法透過它進行通訊。
az network vnet peering create \
--name vnet-1-to-vnet-2 \
--resource-group test-rg \
--vnet-name vnet-1 \
--remote-vnet $vNet2Id \
--allow-vnet-access
在執行上一個命令之後所傳回的輸出中,您會看到 peeringState 是「已啟動」。 在從 vnet-2 到 vnet-1 建立對等互連之前,對等互連會維持在起始狀態。 從 vnet-2 到 vnet-1 建立對等互連。
az network vnet peering create \
--name vnet-2-to-vnet-1 \
--resource-group test-rg \
--vnet-name vnet-2 \
--remote-vnet $vNet1Id \
--allow-vnet-access
在執行上一個命令之後所傳回的輸出中,您會看到 peeringState 是「已連線」。 Azure 也會將 vnet-1-to-vnet-2 對等互連的對等互連狀態變更為 Connected。 確認 vnet-1-to-vnet-2 對等互連的對等互連狀態已變更為使用 az network vnet peering show 連線。
az network vnet peering show \
--name vnet-1-to-vnet-2 \
--resource-group test-rg \
--vnet-name vnet-1 \
--query peeringState
一個虛擬網路中的資源無法與其他虛擬網路中的資源通訊,直到 兩個虛擬網路中對等互連的peeringState 都 已連線為止。
建立虛擬機器
在每個虛擬網路中建立虛擬機器,以便您可以在稍後的步驟中於彼此之間通訊。
建立第一個 VM
使用 az vm create 建立 VM。 下列範例會在 vnet-1 虛擬網路中建立名為 vm-1 的 VM。 如果 SSH 金鑰不存在於預設金鑰位置,命令會建立它們。 若要使用一組特定金鑰,請使用 --ssh-key-value
選項。 --no-wait
選項會在背景建立虛擬機器,以便您繼續進行下一步。
az vm create \
--resource-group test-rg \
--name vm-1 \
--image Ubuntu2204 \
--vnet-name vnet-1 \
--subnet subnet-1 \
--generate-ssh-keys \
--no-wait
建立第二個 VM
在 vnet-2 虛擬網路中建立 VM。
az vm create \
--resource-group test-rg \
--name vm-2 \
--image Ubuntu2204 \
--vnet-name vnet-2 \
--subnet subnet-1 \
--generate-ssh-keys
建立 VM 需要幾分鐘的時間。 建立虛擬機器之後,Azure CLI 會顯示類似下列範例的資訊:
{
"fqdns": "",
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test-rg/providers/Microsoft.Compute/virtualMachines/vm-2",
"location": "eastus",
"macAddress": "00-0D-3A-23-9A-49",
"powerState": "VM running",
"privateIpAddress": "10.1.0.4",
"publicIpAddress": "13.90.242.231",
"resourceGroup": "test-rg"
}
請記下 publicIpAddress。 在稍後的步驟中,這個位址可用來從網際網路存取虛擬機器。
注意
無論是未獲指派公用 IP 位址的 VM,或位於內部基本 Azure 負載平衡器後端集區的 VM,Azure 都會為其提供預設輸出存取 IP。 預設輸出存取 IP 機制能提供無法自行設定的輸出 IP 位址。
發生下列其中一個事件時,會停用預設輸出存取 IP:
- 公用 IP 位址會指派給 VM。
- 無論有沒有輸出規則,都會將 VM 放在標準負載平衡器的後端集區中。
- Azure NAT 閘道資源會指派給 VM 的子網。
您在彈性協調流程模式中使用虛擬機器擴展集建立的 VM 沒有預設輸出存取。
如需 Azure 中輸出連線的詳細資訊,請參閱 Azure 中的預設對外存取與針對輸出連線,使用來源網路位址轉譯 (SNAT)。
虛擬機器之間的通訊
使用下列命令來建立具有 vm-2 VM 的 SSH 會話。 以虛擬機器的公用 IP 位址取代 <publicIpAddress>
。 在上述範例中,公用 IP 位址是 13.90.242.231。
ssh <publicIpAddress>
Ping vnet-1 中的 VM。
ping 10.0.0.4 -c 4
您會收到四個回覆。
關閉 VM-2 VM 的 SSH 工作階段。
清除資源
請使用 az group delete 來移除不再需要的資源群組以及其所包含的所有資源。
az group delete \
--name test-rg \
--yes
下一步
在本文中,您已了解如何使用虛擬網路對等互連來連線相同 Azure 區域中的兩個網路。 您也可以針對不同支援區域和不同 Azure 訂用帳戶中的虛擬網路進行對等互連,以及使用對等互連來建立中樞和輪輻網路設計。 若要深入了解虛擬網路對等互連,請參閱虛擬網路對等互連概觀和管理虛擬網路對等互連。
您可以透過 VPN 將自己的電腦連線到虛擬網路,並且與虛擬網路中或已對等互連虛擬網路中的資源進行互動。 如需可重複使用的指令碼來完成虛擬網路文章中涵蓋的許多工作,請參閱指令碼範例。