使用 CLI 建立具有站對站 VPN 連線的虛擬網路

本文說明如何使用 Azure CLI 來建立從內部部署網路到 VNet 的站對站 VPN 閘道連線。 本文中的步驟適用於 Resource Manager 部署模型。 您也可從下列清單中選取不同的選項,以使用不同的部署工具或部署模型來建立此組態:

Site-to-site VPN Gateway cross-premises connection diagram for CLI article.

站對站 VPN 閘道連線可用來透過 IPsec/IKE (IKEv1 或 IKEv2) VPN 通道,將內部部署網路連線到 Azure 虛擬網路。 此類型的連線需要位於內部部署的 VPN 裝置,且您已對該裝置指派對外開放的公用 IP 位址。 如需 VPN 閘道的詳細資訊,請參閱關於 VPN 閘道

開始之前

在開始設定之前,請確認您已符合下列條件:

  • 確定您有相容的 VPN 裝置以及能夠對其進行設定的人員。 如需相容 VPN 裝置和裝置組態的詳細資訊,請參閱關於 VPN 裝置
  • 確認您的 VPN 裝置有對外開放的公用 IPv4 位址。
  • 如果您不熟悉位於內部部署網路設定的 IP 位址範圍,您需要與能夠提供那些詳細資料的人協調。 當您建立此組態時,您必須指定 IP 位址範圍的首碼,以供 Azure 路由傳送至您的內部部署位置。 內部部署網路的子網路皆不得與您所要連線的虛擬網路子網路重疊。
  • 本文需要 2.0 版或更新版本的 Azure CLI。 如果您是使用 Azure Cloud Shell,就已安裝最新版本。

範例值

您可以使用下列值來建立測試環境,或參考這些值來進一步了解本文中的範例:

#Example values

VnetName                = VNet1 
ResourceGroup           = TestRG1 
Location                = eastus 
AddressSpace            = 10.1.0.0/16 
SubnetName              = Frontend
Subnet                  = 10.1.0.0/24 
GatewaySubnet           = 10.1.255.0/27 
LocalNetworkGatewayName = Site1
LNG Public IP           = <On-premises VPN device IP address>
LocalAddrPrefix1        = 10.0.0.0/24
LocalAddrPrefix2        = 20.0.0.0/24   
GatewayName             = VNet1GW 
PublicIP                = VNet1GWIP 
GatewayType             = Vpn 
ConnectionName          = VNet1toSite2

1.連線至您的訂用帳戶

如果您選擇在本機執行 CLI,請連線到您的訂用帳戶。 如果您在瀏覽器中使用 Azure Cloud Shell,則無須連線到您的訂用帳戶。 您會在 Azure Cloud Shell 中自動連線。 不過,連線後,您可能會想要確認所使用的訂用帳戶是否正確。

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

az login

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

az account list --all

指定您要使用的訂用帳戶。

az account set --subscription <replace_with_your_subscription_id>

2.建立資源群組

下列範例會在「eastus」位置建立名為「TestRG1」的資源群組。 如果您在該區域中已有想要用來建立 VNet 的資源群組,您可以改為使用該資源群組。

az group create --name TestRG --location eastus

3.建立虛擬網路

如果您還沒有虛擬網路,請使用 az network vnet create 命令建立一個。 在建立虛擬網路時,請確定您指定的位址空間沒有與您在內部部署網路上所擁有的任何位址空間重疊。

注意

為了讓此 VNet 連線到內部部署位置,您需要與內部部署網路系統管理員協調,以切割出此虛擬網路專用的 IP 位址範圍。 如果 VPN 連線的兩端存在重複的位址範圍,流量就不會如預期的方式進行路由。 此外,如果您想要將此 VNet 連線到另一個 VNet,則位址空間不能與其他 VNet 重疊。 因此,請謹慎規劃您的網路組態。

下列範例會建立名為 'VNet1' 的虛擬網路和 'Subnet1' 的子網路。

az network vnet create --name VNet1 --resource-group TestRG1 --address-prefix 10.1.0.0/16 --location eastus --subnet-name Subnet1 --subnet-prefix 10.1.0.0/24

4.建立網路閘道子網路

虛擬網路閘道會使用稱為閘道子網路的特定子網路。 閘道子網路是您設定虛擬網路時,所指定虛擬網路 IP 位址範圍的一部分。 其包含虛擬網路閘道資源和服務所使用的 IP 位址。 子網路必須命名為 'GatewaySubnet' 才可供 Azure 部署閘道資源。 您無法指定不同的子網路來作為閘道資源的部署目的地。 如果您沒有名為 'GatewaySubnet' 的子網路,當您建立 VPN 閘道時,它將會失敗。

當您建立閘道子網路時,您可指定子網路包含的 IP 位址數目。 所需的 IP 位址數目取決於您想要建立的 VPN 閘道組態。 有些組態需要的 IP 位址比其他組態多。 我們建議您建立使用 /27 或/28 的閘道子網路。

如果您看到錯誤指出位址空間與子網路重疊,或子網路未包含在虛擬網路的位址空間內,請檢查您的 VNet 位址範圍。 您為虛擬網路所建立的位址範圍中可能沒有足夠的可用 IP 位址。 例如,如果您的預設子網路包含整個位址範圍,則沒有剩餘任何 IP 位址可供建立其他子網路。 您可以調整現有位址空間內的子網路以釋出 IP 位址,也可以指定其他位址範圍並於該處建立閘道子網路。

使用 az network vnet subnet create 命令建立子網路閘道。

az network vnet subnet create --address-prefix 10.1.255.0/27 --name GatewaySubnet --resource-group TestRG1 --vnet-name VNet1

重要

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

5.建立區域網路閘道

區域網路閘道通常是指您的內部部署位置。 請賦予網站可供 Azure 參考的名稱,然後指定您想要與其建立連線之內部部署 VPN 裝置的 IP 位址。 也請指定 IP 位址首碼,以供系統透過 VPN 閘道路由至 VPN 裝置。 您指定的位址首碼是位於內部部署網路上的首碼。 如果您的內部部署網路有所變更,您可以輕鬆地更新首碼。

使用下列值:

  • --gateway-ip-address 是內部部署 VPN 裝置的 IP 位址。
  • --local-address-prefixes 是內部部署位址空間。

使用 az network local-gateway create 命令新增具有多個位址首碼的區域網路閘道:

az network local-gateway create --gateway-ip-address 23.99.221.164 --name Site2 --resource-group TestRG1 --local-address-prefixes 10.0.0.0/24 20.0.0.0/24

6.要求公用 IP 位址

VPN 閘道必須具有公用 IP 位址。 您會先要求 IP 位址資源,然後在建立虛擬網路閘道時參考它。 建立 VPN 閘道時,系統會將 IP 位址動態指派給此資源。 公用 IP 位址只會在刪除或重新建立閘道時變更。 它不會因為重新調整、重設或 VPN 閘道的其他內部維護/升級而變更。

使用 az network public-ip create 命令來要求公用 IP 位址。

az network public-ip create --name VNet1GWIP --resource-group TestRG1 --allocation-method Static --sku Standard

7.建立 VPN 閘道

建立虛擬網路 VPN 閘道。 建立閘道通常可能需要 45 分鐘或更久,視選取的閘道 SKU 而定。

使用下列值:

  • 站對站設定的 --gateway-type 是 Vpn。 閘道器類型永遠是您實作設定的特定類型。 如需詳細資訊,請參閱閘道類型
  • --vpn-typeRouteBased (在某些文件中稱為動態網路閘道)。
  • 選取您想要使用的閘道 SKU。 某些 SKU 有組態限制。 如需詳細資訊,請參閱閘道 SKU

使用 az network vnet-gateway create 命令建立 VPN 閘道。 如果您使用 '--no-wait' 參數執行此命令,您不會看到任何意見反應或輸出。 此參數允許在背景中建立閘道。 建立閘道需要 45 分鐘或更久的時間。

az network vnet-gateway create --name VNet1GW --public-ip-address VNet1GWIP --resource-group TestRG1 --vnet VNet1 --gateway-type Vpn --vpn-type RouteBased --sku VpnGw1 --no-wait 

8.設定 VPN 裝置

內部部署網路的站對站連線需要 VPN 裝置。 在此步驟中,設定 VPN 裝置。 在設定 VPN 裝置時,您需要下列項目:

  • 共用金鑰。 這個共同金鑰與您建立站對站 VPN 連線時指定的共用金鑰相同。 在我們的範例中,我們會使用基本的共用金鑰。 我們建議您產生更複雜的金鑰以供使用。

  • 虛擬網路閘道的公用 IP 位址。 您可以使用 Azure 入口網站、PowerShell 或 CLI 來檢視公用 IP 位址。 若要尋找虛擬網路閘道的公用 IP 位址,請使用 az network public-ip list 命令。 為方便閱讀,系統會將輸出格式化為以資料表格式顯示公用 IP 的清單。

    az network public-ip list --resource-group TestRG1 --output table
    

若要下載 VPN 裝置組態指令碼:

根據您所擁有的 VPN 裝置,您或許可以下載 VPN 裝置設定指令碼。 如需詳細資訊,請參閱下載 VPN 裝置組態指令碼

請參閱下列連結以取得其他組態資訊︰

9.建立 VPN 連線

您會在虛擬網路閘道與內部部署 VPN 裝置之間建立站對站 VPN 連線。 請特別注意共用金鑰值,此值必須符合您的 VPN 裝置所設定的共用金鑰值。

使用 az network vpn-connection create 命令建立連線。

az network vpn-connection create --name VNet1toSite2 --resource-group TestRG1 --vnet-gateway1 VNet1GW -l eastus --shared-key abc123 --local-gateway2 Site2

過一會兒,連接將會建立。

10.驗證 VPN 連線

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

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

如果您想要使用其他方法來確認您的連線,請參閱確認 VPN 閘道連線

連線至虛擬機器

您可以建立 VM 的遠端桌面連線,以連線至已部署至虛擬網路的 VM。 一開始確認您可以連線至 VM 的最佳方法是使用其私人 IP 位址 (而不是電腦名稱) 進行連線。 這樣一來,您會測試以查看您是否可以連線,而不是否已正確設定名稱解析。

  1. 找出私人 IP 位址。 在 Azure 入口網站中或使用 PowerShell 查看 VM 的屬性,即可找到 VM 的私人 IP 位址。

    • Azure 入口網站:在 Azure 入口網站中尋找您的 VM。 檢視 VM 的屬性。 系統會列出私人 IP 位址。

    • PowerShell:使用範例來檢視資源群組中的 VM 和私人 IP 位址清單。 使用此範例前,您不需要加以修改。

      $VMs = Get-AzVM
      $Nics = Get-AzNetworkInterface | Where-Object VirtualMachine -ne $null
      
      foreach ($Nic in $Nics) {
      $VM = $VMs | Where-Object -Property Id -eq $Nic.VirtualMachine.Id
      $Prv = $Nic.IpConfigurations | Select-Object -ExpandProperty PrivateIpAddress
      $Alloc = $Nic.IpConfigurations | Select-Object -ExpandProperty PrivateIpAllocationMethod
      Write-Output "$($VM.Name): $Prv,$Alloc"
      }
      
  2. 確認您已連線至虛擬網路。

  3. 在工作列上的搜尋方塊中輸入 [RDP] 或 [遠端桌面連線] 以開啟 [遠端桌面連線]。 然後選取 [遠端桌面連線]。 您也可以在 PowerShell 中使用 mstsc 命令,開啟 [遠端桌面連線]

  4. 在 [遠端桌面連線] 中,輸入 VM 的私人 IP 位址。 您可以選取 [顯示選項],調整其他設定,然後進行連線。

如果您無法透過 VPN 連線與 VM 連線,請檢查下列幾點:

  • 確認您的 VPN 連線成功。
  • 確認您正連線至 VM 的私人 IP 位址。
  • 如果您可以使用私人 IP 位址 (而非電腦名稱) 來連線至 VM,請確認您已正確設定 DNS。 如需 VM 的名稱解析運作方式的詳細資訊,請參閱 VM 的名稱解析

如需 RDP 連線的詳細資訊,請參閱對 VM 的遠端桌面連線進行疑難排解

常見工作

本節包含使用站對站組態時很實用的常見命令。 如需 CLI 網路命令的完整清單,請參閱 Azure CLI - 網路

檢視區域網路閘道

若要檢視區域網路閘道清單,請使用 az network local-gateway list 命令。

az network local-gateway list --resource-group TestRG1

修改區域網路閘道 IP 位址首碼 - 沒有網路閘道連線

如果您沒有閘道連線,而且想要新增或移除 IP 位址首碼,您會使用與您用於建立區域網路閘道的相同命令 az network local-gateway create。 您也可以使用此命令來更新 VPN 裝置的閘道 IP 位址。 若要覆寫目前的設定,請使用現有的區域網路閘道名稱。 如果您使用不同的名稱,您會建立新的區域網路閘道,而不是覆寫現有閘道。

每次進行變更時,您都必須指定完整的首碼清單,而不只是指定您想要變更的首碼。 僅指定我們想要保留的首碼。 在此案例中為 10.0.0.0/24 和 20.0.0.0/24

az network local-gateway create --gateway-ip-address 23.99.221.164 --name Site2 -g TestRG1 --local-address-prefixes 10.0.0.0/24 20.0.0.0/24

修改區域網路閘道 IP 位址首碼 - 現有網路閘道連線

如果您有閘道連線,而且想要新增或移除 IP 位址首碼,您可以使用 az network local-gateway update 更新首碼。 這會導致您 VPN 連線的停機時間。 修改 IP 位址首碼時,您不需要刪除 VPN 閘道。

每次進行變更時,您都必須指定完整的首碼清單,而不只是指定您想要變更的首碼。 在此範例中,10.0.0.0/24 和 20.0.0.0/24 已存在。 我們會新增首碼 30.0.0.0/24 和 40.0.0.0/24,並且在更新時指定全部 4 個首碼。

az network local-gateway update --local-address-prefixes 10.0.0.0/24 20.0.0.0/24 30.0.0.0/24 40.0.0.0/24 --name VNet1toSite2 -g TestRG1

修改區域網路閘道 'gatewayIpAddress'

如果您想要連線的 VPN 裝置已變更其公用 IP 位址,您需要修改區域網路閘道,以反映該變更。 您可變更閘道 IP 位址,而不需移除現有的 VPN 閘道連線 (如果有的話)。 若要修改閘道 IP 位址,使用 az network local-gateway update 命令以您自己的值取代 'Site2' 和 'TestRG1'。

az network local-gateway update --gateway-ip-address 23.99.222.170 --name Site2 --resource-group TestRG1

確認輸出中的 IP 位址正確無誤︰

"gatewayIpAddress": "23.99.222.170",

確認共用金鑰值

請確認共用金鑰值和您用於 VPN 裝置組態的值相同。 如果不同,請使用裝置的值再次執行連線,或是以傳回的值將裝置更新。 這兩個值必須相符。 若要檢視共用金鑰,請使用 az network vpn-connection-list

az network vpn-connection shared-key show --connection-name VNet1toSite2 --resource-group TestRG1

若要檢視 VPN 閘道公用 IP 位址:

若要尋找虛擬網路閘道的公用 IP 位址,請使用 az network public-ip list 命令。 為了方便閱讀,系統會將此範例的輸出格式化為以資料表格式顯示公用 IP 的清單。

az network public-ip list --resource-group TestRG1 --output table

下一步