共用方式為


使用 Azure CLI 以虛擬網路對等互連連線虛擬網路

您可以使用虛擬網路對等互連,讓虛擬網路彼此連線。 一旦虛擬網路對等互連,兩個虛擬網路中的資源就可以彼此通訊,且通訊時會有相同的延遲和頻寬,彷彿這些資源是位於相同的虛擬網路中。

在本文中,您將學會如何:

  • 建立兩個虛擬網路

  • 使用虛擬網路對等互連連線兩個虛擬網路

  • 將虛擬機器 (VM) 部署到每個虛擬網路

  • 虛擬機器之間的通訊

如果您沒有 Azure 訂閱,請在開始之前,先建立 Azure 免費帳戶

必要條件

  • 本文需要 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-1vnet-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-2vnet-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-1VM。 如果 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 將自己的電腦連線到虛擬網路,並且與虛擬網路中或已對等互連虛擬網路中的資源進行互動。 如需可重複使用的指令碼來完成虛擬網路文章中涵蓋的許多工作,請參閱指令碼範例