使用 Azure CLI 設定 VNet 對 VNet 的 VPN 閘道連線

本文協助您使用 VNet 對 VNet 連線類型來連線虛擬網路。 虛擬網路可位於相同或不同的區域,以及來自相同或不同的訂用帳戶。 連線來自不同訂用帳戶的 VNet 時,訂用帳戶不需與相同的租用戶相關聯。

VNet to VNet diagram.

本文中的步驟適用於 Resource Manager 部署模型並使用 Azure CLI。 您也可從下列清單中選取不同的選項,以使用不同的部署工具或部署模型來建立此組態:

關於連線 VNet

VNet 的連線方法有很多種。 下列各節說明不同的虛擬網路連線方式。

VNet 對 VNet

設定 VNet 對 VNet 連線是輕鬆連線 VNet 的好方法。 使用 VNet 對 VNet 連線類型將虛擬網路連線到另一個虛擬網路,類似於建立內部部署位置的站對站 IPsec 連線。 這兩種連線類型都使用 VPN 閘道提供使用 IPsec/IKE 的安全通道,且兩者在通訊時的運作方式相同。 連線類型之間的差異在於區域網路閘道的設定方式。 當您建立 VNet 對 VNet 連線時,會看不到區域網路閘道的位址空間。 系統會自動建立並填入該位址空間。 如果您更新一個 VNet 的位址空間,另一個 VNet 就會自動得知要路由到已更新的位址空間。 建立 VNet 對 VNet 連線通常比在 VNet 之間建立站對站連線更快且更容易,但如果您想要新增另一個連線,因為局域網路網關位址空間無法手動修改,則不會提供相同層級的彈性。

使用站對站 (IPsec) 步驟來連線 VNet

如果您使用複雜的網路設定,您可能偏好使用站對站步驟 (而不是 VNet 對 VNet 步驟) 來連線 VNet。 當您使用站對站步驟時,您會以手動方式建立及設定區域網路閘道。 每個 VNet 的區域網路閘道都會將其他 VNet 視為本機網站。 這可讓您指定區域網路閘道的其他位址空間,以便路由傳送流量。 如果 VNet 的位址空間變更,您需要手動更新對應的區域網路閘道,才會反映變更。 其不會自動更新。

VNet 對等互連

建議您使用 VNet 對等互連來進行 VNet 連線。 VNet 對等互連不會使用 VPN 閘道,且具有不同的條件約束。 此外,VNet 對等互連價格VNet 對 VNet VPN 閘道價格的計算方式不同。 如需詳細資訊,請參閱 VNet 對等互連

為何要建立 VNet 對 VNet 連線?

基於下列原因,建議您使用 VNet 對 VNet 連線來進行虛擬網路連線:

  • 跨區域的異地備援和異地目前狀態

    • 您可以使用安全連線設定自己的異地複寫或同步處理,而不用查看網際網路對向端點。
    • 您可以使用 Azure 流量管理員和負載平衡器,利用異地備援跨多個 Azure 區域設定高度可用的工作負載。 其中一個重要的範例就是使用分散在多個 Azure 區域的可用性群組來設定 SQL Always On。
  • 具有隔離或管理界限的區域性多層式應用程式

    • 在相同區域中,您可以因為隔離或管理需求,設定將多層式應用程式與多個虛擬網路連線在一起。

您可以將 VNet 對 VNet 通訊與多站台組態結合。 這樣,便可以建立將跨界連線與虛擬網路間連線相結合的網路拓撲。

我應該使用哪些 VNet 對 VNet 步驟?

在本文中,您會看到兩組不同的 VNet 對 VNet 連線步驟。 一組步驟適用於位於相同訂用帳戶中的 VNet,一組步驟適用於位於不同訂用帳戶中的 VNet

在此練習中,您可以合併組態,或只選擇您需要使用的一個組態。 所有組態都會使用 VNet 對 VNet 連線類型。 網路流量會在彼此直接連線的 VNet 之間流動。

與相同訂用帳戶中的 VNet 連線

開始之前

開始之前,請先安裝 CLI 命令的最新版本 (2.0 版或更新版本)。 如需關於安裝 CLI 命令的資訊,請參閱安裝 Azure CLI

規劃 IP 位址範圍

在下列步驟中,您會建立兩個虛擬網路,以及它們各自的閘道子網路和組態。 接著建立這兩個 VNet 之間的 VPN 連線。 請務必規劃您的網路組態的 IP 位址範圍。 請記住,您必須先確定您的 VNet 範圍或區域網路範圍沒有以任何方式重疊。 在這些範例中,我們不會包含 DNS 伺服器。 如果您想要了解虛擬網路的名稱解析,請參閱名稱解析

我們會在範例中使用下列值:

TestVNet1 的值︰

  • VNet 名稱︰TestVNet1
  • 資源群組︰TestRG1
  • 位置:美國東部
  • TestVNet1:10.11.0.0/16 和 10.12.0.0/16
  • FrontEnd:10.11.0.0/24
  • BackEnd:10.12.0.0/24
  • GatewaySubnet:10.12.255.0/27
  • GatewayName:VNet1GW
  • 公用 IP: VNet1GWIP
  • VPNType:RouteBased
  • Connection(1to4):VNet1toVNet4
  • Connection(1to5):VNet1toVNet5 (適用於不同訂用帳戶中的 Vnet)

TestVNet4 的值︰

  • VNet 名稱︰TestVNet4
  • TestVNet2:10.41.0.0/16 和 10.42.0.0/16
  • FrontEnd:10.41.0.0/24
  • BackEnd:10.42.0.0/24
  • GatewaySubnet:10.42.255.0/27
  • 資源群組:TestRG4
  • 位置:美國西部
  • GatewayName:VNet4GW
  • 公用 IP:VNet4GWIP
  • VPN 類型: RouteBased
  • 連線︰VNet4toVNet1

步驟 1 - 連線至您的訂用帳戶

如果您想要在本機使用 Azure CLI (而不是使用 Azure CloudShell),請使用下列步驟來連線到您的 Azure 訂用帳戶。 如果您使用 CloudShell,請跳至下一節。

  1. 使用 az login 命令登入 Azure 訂用帳戶並遵循畫面上的指示。 如需關於登入的詳細資訊,請參閱開始使用 Azure CLI

    az login
    
  2. 如果您有多個 Azure 訂用帳戶,請列出帳戶的所有訂用帳戶。

    az account list --all
    
  3. 指定您要使用的訂用帳戶。

    az account set --subscription <replace_with_your_subscription_id>
    

步驟 2 - 建立及設定 TestVNet1

  1. 建立資源群組。

    az group create -n TestRG1  -l eastus
    
  2. 使用 az network vnet create 命令,建立 TestVNet1 和 TestVNet1 的子網路。 此範例會建立名為 TestVNet1 的虛擬網路和名為 FrontEnd 的子網路。

    az network vnet create \
      -n TestVNet1 \
      -g TestRG1 \
      -l eastus \
      --address-prefix 10.11.0.0/16 \
      --subnet-name Frontend \
      --subnet-prefix 10.11.0.0/24
    
  3. 為後端子網路建立其他位址空間。 請注意,在此步驟中,我們會指定稍早建立的位址空間,以及我們想要新增的額外位址空間。 這是因為 az network vnet update 命令會覆寫先前的設定。 使用此命令時,務必指定所有的位址前置詞。

    az network vnet update \
       -n TestVNet1 \
       --address-prefixes 10.11.0.0/16 10.12.0.0/16 \
       -g TestRG1
    
  4. 建立後端子網路。

    az network vnet subnet create \
       --vnet-name TestVNet1 \
       -n BackEnd \
       -g TestRG1 \
       --address-prefix 10.12.0.0/24
    
  5. 建立閘道子網路。 請注意,閘道子網路會命名為 'GatewaySubnet'。 此名稱是必要的。 在此範例中,閘道子網路使用 /27。 雖然您可以建立小至 /29 的閘道子網路,我們建議您選取至少 /28 或 /27,建立包含更多位址的較大子網路。 這將允許足夠的位址,以容納您未來可能需要的其他設定。

    az network vnet subnet create \
       --vnet-name TestVNet1 \
       -n GatewaySubnet \
       -g TestRG1 \
       --address-prefix 10.12.255.0/27
    
  6. VPN 閘道必須具有公用 IP 位址。 公用 IP 位址會配置給您為虛擬網路建立的 VPN 閘道。 使用下列範例,使用 az network public-ip create 命令來要求公用 IP 位址:

    az network public-ip create \
     -g TestRG1 \
     -n VNet1GWIP1 \
     --sku Standard \
     --allocation-method Static \
     --l eastus
    
  7. 使用 az network vnet-gateway create 命令建立 TestVNet1 的虛擬網路閘道。 如果您使用 '--no-wait' 參數執行此命令,您不會看到任何意見反應或輸出。 '--no-wait' 參數允許在背景中建立閘道。 它並不表示 VPN 閘道立即完成建立。 視您使用的閘道 SKU 而定,建立閘道通常可能需要 45 分鐘或更久的時間。

    az network vnet-gateway create \
      --name VNet1GW \
      --public-ip-address VNet1GWIP \
      --resource-group TestRG1 \
      --vnet TestVNet1 \
      --gateway-type Vpn \
      --sku VpnGw2 \
      --vpn-gateway-generation Generation2 \
      --no-wait
    

步驟 3 - 建立及設定 TestVNet4

  1. 建立資源群組。

    az group create -n TestRG4 -l westus
    
  2. 建立 TestVNet4。

    az network vnet create \
      -n TestVNet4 \
      -g TestRG4 \
      -l westus \
      --address-prefix 10.41.0.0/16 \
      --subnet-name Frontend \
      --subnet-prefix 10.41.0.0/24
    
  3. 為 TestVNet4 建立其他子網路。

    az network vnet update \
       -n TestVNet4 \
       --address-prefixes 10.41.0.0/16 10.42.0.0/16 \
       -g TestRG4 \
    
    az network vnet subnet create \
       --vnet-name TestVNet4 \
       -n BackEnd \
       -g TestRG4 \
       --address-prefix 10.42.0.0/24 
    
  4. 建立閘道子網路。

    az network vnet subnet create \
      --vnet-name TestVNet4 \
      -n GatewaySubnet \
      -g TestRG4 \
      --address-prefix 10.42.255.0/27 
    
  5. 要求公用 IP 位址。

    az network public-ip create \
     -g TestRG4 \
     --n VNet4GWIP \
     --sku Standard \
     --allocation-method Static \
     --l westus
    
  6. 建立 TestVNet4 虛擬網路閘道。

    az network vnet-gateway create \
      -n VNet4GW \
      -l westus \
      --public-ip-address VNet4GWIP \
      -g TestRG4 \
      --vnet TestVNet4 \
      --gateway-type Vpn \
      --sku VpnGw2 \
      --vpn-gateway-generation Generation2 \
      --no-wait
    

步驟 4 - 建立連線

您現在有兩個具有 VPN 閘道的 VNet。 下一個步驟是建立虛擬網路閘道之間的 VPN 閘道連線。 如果您使用上述範例,則 VNet 閘道位於不同的資源群組。 當閘道位於不同的資源群組時,您必須在建立連線時,識別並指定每個閘道的資源識別碼。 如果 VNet 位於相同的資源群組,您可以使用第二組指示,因為您不需要指定資源識別碼。

連線位於不同資源群組的 VNet

  1. 從下列命令的輸出取得 VNet1GW 的資源識別碼︰

    az network vnet-gateway show -n VNet1GW -g TestRG1
    

    在輸出中,尋找 "id:" 行。 需要引號中的值,才能在下一節中建立連線。 將這些值複製到文字編輯器 (例如 [記事本]),以便您在建立連線時輕鬆地貼上。

    範例輸出︰

    "activeActive": false, 
    "bgpSettings": { 
     "asn": 65515, 
     "bgpPeeringAddress": "10.12.255.30", 
     "peerWeight": 0 
    }, 
    "enableBgp": false, 
    "etag": "W/\"ecb42bc5-c176-44e1-802f-b0ce2962ac04\"", 
    "gatewayDefaultSite": null, 
    "gatewayType": "Vpn", 
    "id": "/subscriptions/d6ff83d6-713d-41f6-a025-5eb76334fda9/resourceGroups/TestRG1/providers/Microsoft.Network/virtualNetworkGateways/VNet1GW", 
    "ipConfigurations":
    

    複製引號中 "id": 之後的值。

    "id": "/subscriptions/d6ff83d6-713d-41f6-a025-5eb76334fda9/resourceGroups/TestRG1/providers/Microsoft.Network/virtualNetworkGateways/VNet1GW"
    
  2. 取得 VNet4GW 的資源識別碼,並將值複製到文字編輯器。

    az network vnet-gateway show -n VNet4GW -g TestRG4
    
  3. 建立 TestVNet1 至 TestVNet4 的連線。 在此步驟中,您會從 TestVNet1 建立連線至 TestVNet4。 範例中有一個共用金鑰。 您可以使用自己的值,作為共用金鑰。 但請務必確認該共用金鑰必須適用於這兩個連線。 建立連線可能需要一段時間才能完成。

    az network vpn-connection create \
       -n VNet1ToVNet4 \
       -g TestRG1 \
       --vnet-gateway1 /subscriptions/d6ff83d6-713d-41f6-a025-5eb76334fda9/resourceGroups/TestRG1/providers/Microsoft.Network/virtualNetworkGateways/VNet1GW \
       -l eastus \
       --shared-key "aabbcc" \
       --vnet-gateway2 /subscriptions/d6ff83d6-713d-41f6-a025-5eb76334fda9/resourceGroups/TestRG4/providers/Microsoft.Network/virtualNetworkGateways/VNet4GW 
    
  4. 建立 TestVNet4 至 TestVNet1 的連線。 此步驟類似先前的步驟,只不過您是建立 TestVNet4 至 TestVNet1 的連線。 請確認共用的金鑰相符。 建立連線需花費數分鐘的時間。

    az network vpn-connection create \
       -n VNet4ToVNet1 \
       -g TestRG4 \
       --vnet-gateway1 /subscriptions/d6ff83d6-713d-41f6-a025-5eb76334fda9/resourceGroups/TestRG4/providers/Microsoft.Network/virtualNetworkGateways/VNet4GW \
       -l westus \
       --shared-key "aabbcc" \
       --vnet-gateway2 /subscriptions/d6ff83d6-713d-41f6-a025-5eb76334fda9/resourceGroups/TestRG1/providers/Microsoft.Network/virtualNetworkGateways/VNet1GW
    
  5. 確認您的連線。 請參閱驗證您的連線

與位於相同資源群組的 VNet 連線

  1. 建立 TestVNet1 至 TestVNet4 的連線。 在此步驟中,您會從 TestVNet1 建立連線至 TestVNet4。 請注意,在範例中的資源群組相同。 您也會看到範例使用一個共用金鑰。 您可以將自己的值使用於共用金鑰,不過,共用金鑰必須符合這兩個連線。 建立連線可能需要一段時間才能完成。

    az network vpn-connection create \
       -n VNet1ToVNet4 \
       -g TestRG1 \
       --vnet-gateway1 VNet1GW \
       -l eastus \
       --shared-key "eeffgg" \
       --vnet-gateway2 VNet4GW
    
  2. 建立 TestVNet4 至 TestVNet1 的連線。 此步驟類似先前的步驟,只不過您是建立 TestVNet4 至 TestVNet1 的連線。 請確認共用的金鑰相符。 建立連線需花費數分鐘的時間。

    az network vpn-connection create \
       -n VNet4ToVNet1 \
       -g TestRG1 \
       --vnet-gateway1 VNet4GW \
       -l eastus \
       --shared-key "eeffgg" \
       --vnet-gateway2 VNet1GW
    
  3. 確認您的連線。 請參閱驗證您的連線

與位於不同訂用帳戶的 VNet 連線

在此案例中,您會連接 TestVNet1 和 TestVNet5。 VNet 位於不同的訂用帳戶。 訂用帳戶不需與相同的租用戶相關聯。 此設定的步驟會加入其他的 VNet 對 VNet 連線,以便將 TestVNet1 連接到 TestVNet5。

步驟 5 - 建立及設定 TestVNet1

這些指示延續自前幾節中的步驟。 您必須完成步驟 1步驟 2,以建立並設定 TestVNet1 和 TestVNet1 的 VPN 閘道。 在此設定中,您不需要建立前一節的 TestVNet4 ,雖然您若建立它,它就不與這些步驟發生衝突:來自 TestVNet4 的流量不會路由至 TestVNet5。 完成步驟 1 和步驟 2 後,繼續進行步驟 6。

步驟 6 - 驗證 IP 位址範圍

建立其他連線時,請務必確認新虛擬網路的 IP 位址空間不會與任何其他 VNet 範圍或區域網路閘道範圍重疊。 在這個練習中,您可以對 TestVNet5 使用下列的值:

TestVNet5 的值︰

  • VNet 名稱︰TestVNet5
  • 資源群組:TestRG5
  • 位置:日本東部
  • TestVNet5:10.51.0.0/16 和 10.52.0.0/16
  • FrontEnd:10.51.0.0/24
  • BackEnd:10.52.0.0/24
  • GatewaySubnet: 10.52.255.0/27
  • GatewayName:VNet5GW
  • 公用 IP:VNet5GWIP
  • VPN 類型: RouteBased
  • 連線︰VNet5toVNet1
  • ConnectionType:VNet2VNet

步驟 7 - 建立及設定 TestVNet5

在新訂用帳戶 (訂用帳戶 5) 的內容中,必須完成這個步驟。 此部分可能會由不同組織中擁有訂用帳戶的系統管理員執行。 若要切換訂用帳戶,請使用 az account list --all 列出您帳戶可用的訂用帳戶,然後使用 az account set --subscription <subscriptionID> 切換至您想要使用的訂用帳戶。

  1. 確定您已連線到訂用帳戶 5,然後建立資源群組。

    az group create -n TestRG5  -l japaneast
    
  2. 建立 TestVNet5。

    az network vnet create \
       -n TestVNet5 \
       -g TestRG5 \
       --address-prefix 10.51.0.0/16 \
       -l japaneast \
       --subnet-name FrontEnd \
       --subnet-prefix 10.51.0.0/24
    
  3. 新增子網路。

    az network vnet update \
       -n TestVNet5 \
       --address-prefixes 10.51.0.0/16 10.52.0.0/16 \
       -g TestRG5 \
    
    az network vnet subnet create \
       --vnet-name TestVNet5 \
       -n BackEnd \
       -g TestRG5 \
       --address-prefix 10.52.0.0/24
    
  4. 新增閘道子網路。

    az network vnet subnet create \
       --vnet-name TestVNet5 \
       -n GatewaySubnet \
       -g TestRG5 \
       --address-prefix 10.52.255.0/27
    
  5. 要求公用 IP 位址。

    az network public-ip create \
       -g TestRG5 \
       --n VNet5GWIP \
       --sku Standard \
       --allocation-method Static \
       --l japaneast
    
  6. 建立 TestVNet5 閘道

    az network vnet-gateway create \
      -n VNet5GW \
      -l japaneast \
      --public-ip-address VNet5GWIP \
      -g TestRG5 \
      --vnet TestVNet5 \
      --gateway-type Vpn \
      --sku VpnGw2 \
      --vpn-gateway-generation Generation2 \
      --no-wait
    

步驟 8 - 建立連線

此步驟會分成標示為 [訂用帳戶 1][訂用帳戶 5] 的兩個 CLI 工作階段,因為閘道位於不同的訂用帳戶。 若要切換訂用帳戶,請使用 az account list --all 列出您帳戶可用的訂用帳戶,然後使用 az account set --subscription <subscriptionID> 切換至您想要使用的訂用帳戶。

  1. [訂用帳戶 1] 登入並連線到訂用帳戶 1。 執行下列命令,從輸出中取得閘道的名稱和識別碼︰

    az network vnet-gateway show -n VNet1GW -g TestRG1
    

    複製 id: 的輸出。 透過電子郵件或其他方法,將 VNet 閘道 (VNet1GW) 的識別碼和名稱傳送給訂用帳戶 5 的系統管理員。

    範例輸出︰

    "id": "/subscriptions/d6ff83d6-713d-41f6-a025-5eb76334fda9/resourceGroups/TestRG1/providers/Microsoft.Network/virtualNetworkGateways/VNet1GW"
    
  2. [訂用帳戶 5] 登入並連線到訂用帳戶 5。 執行下列命令,從輸出中取得閘道的名稱和識別碼︰

    az network vnet-gateway show -n VNet5GW -g TestRG5
    

    複製 id: 的輸出。 透過電子郵件或其他方法,將 VNet 閘道 (VNet5GW) 的識別碼和名稱傳送給訂用帳戶 1 的系統管理員。

  3. [訂用帳戶 1] 在此步驟中,您會從 TestVNet1 建立連線至 TestVNet5。 您可以將自己的值使用於共用金鑰,不過,共用金鑰必須符合這兩個連線。 建立連線可能需要一段時間才能完成。 確定您已連接到訂用帳戶 1。

    az network vpn-connection create \
       -n VNet1ToVNet5 \
       -g TestRG1 \
       --vnet-gateway1 /subscriptions/d6ff83d6-713d-41f6-a025-5eb76334fda9/resourceGroups/TestRG1/providers/Microsoft.Network/virtualNetworkGateways/VNet1GW \
       -l eastus \
       --shared-key "eeffgg" \
       --vnet-gateway2 /subscriptions/e7e33b39-fe28-4822-b65c-a4db8bbff7cb/resourceGroups/TestRG5/providers/Microsoft.Network/virtualNetworkGateways/VNet5GW
    
  4. [訂用帳戶 5] 此步驟類似上面的步驟,只不過您是建立 TestVNet5 至 TestVNet1 的連線。 確定共用金鑰相符,而且您會連線至訂用帳戶 5。

    az network vpn-connection create \
       -n VNet5ToVNet1 \
       -g TestRG5 \
       --vnet-gateway1 /subscriptions/e7e33b39-fe28-4822-b65c-a4db8bbff7cb/resourceGroups/TestRG5/providers/Microsoft.Network/virtualNetworkGateways/VNet5GW \
       -l japaneast \
       --shared-key "eeffgg" \
       --vnet-gateway2 /subscriptions/d6ff83d6-713d-41f6-a025-5eb76334fda9/resourceGroups/TestRG1/providers/Microsoft.Network/virtualNetworkGateways/VNet1GW
    

驗證連線

重要

使用閘道子網路時,請避免將網路安全性群組 (NSG) 與閘道子網路產生關聯。 將網路安全性群組與此子網路產生關聯,可能會導致您的虛擬網路閘道 (VPN 與 ExpressRoute 閘道) 停止如預期運作。 如需有關網路安全性群組的詳細資訊,請參閱什麼是網路安全性群組?

您可以使用 az network vpn-connection show 命令來確認連線是否成功。 在此範例中,'--name' 是指您想要測試的連線名稱。 當系統在建立連線時,其連線狀態會顯示「連線中」。 連線建立好之後,狀態會變更為 [已連線]。 使用適用於您環境的值修改下列範例。

az network vpn-connection show --name <connection-name> --resource-group <resource-group-name>

VNet 對 VNet 常見問題集

請參閱 VPN 閘道常見問題集,以了解 VNet 對 VNet 的常見問題。

下一步