使用 PowerShell 設定 ExpressRoute 和站對站並存連線

本文將協助您設定並存的 ExpressRoute 和站對站 VPN 連線。 能夠設定站對站 VPN 和 ExpressRoute 有數個優點。 您可以將站對站 VPN 設定為 ExpressRoute 的安全容錯移轉路徑,或使用站對站 VPN 來連線至不是透過 ExpressRoute 連線的網站。 本文會說明設定這兩個案例的步驟。 本文適用於資源管理員部署模型。

設定站對站 VPN 和 ExpressRoute 並存連線有數個優點:

  • 您可以設定站對站 VPN 作為 ExpressRoute 的安全容錯移轉路徑。
  • 或者,您可以使用站對站 VPN 來連線至不是透過 ExpressRoute 連線的網站。

本文涵蓋設定這兩個案例的步驟。 本文適用於 Resource Manager 部署模型並使用 PowerShell。 您也可以使用 Azure 入口網站來設定這些案例,但目前尚未提供相關文件。 您可以先設定任一閘道。 通常,在新增閘道或閘道連線時,將不會遇到任何停機。

注意

如果您想要透過 ExpressRoute 線路來建立站對站 VPN,請參閱透過 Microsoft 對等互連的站對站 VPN

限制

  • 僅支援路由式 VPN 閘道。 您必須使用路由式 VPN 閘道。 您也可以使用路由式 VPN 閘道,並針對 [原則式流量選取器] 設定 VPN 連線,如連線到多個原則型 VPN 裝置所說明。
  • 基本 SKU 不支援 ExpressRoute-VPN 閘道並存設定。
  • 如果想使用 ExpressRoute 與 VPN 之間的傳輸路由,Azure VPN 閘道的 ASN 必須設定為 65515,而且應該使用 Azure 路由伺服器。Azure VPN 閘道支援 BGP 路由通訊協定。 若要讓 ExpressRoute 和 Azure VPN 一起運作,您必須將 Azure VPN 閘道的自治系統號碼維持在預設值 65515。 如果之前選取了 65515 以外的 ASN,後來又將設定變更為 65515,您必須重設 VPN 閘道,設定才會生效。
  • 閘道子網路必須是 /27 或較短的前置詞,例如 /26、/25,否則當您新增 ExpressRoute 虛擬網路閘道時,就會收到錯誤訊息。
  • 不支援在雙重堆疊虛擬網路中並存。 如果您使用 ExpressRoute IPv6 支援和雙重堆疊 ExpressRoute 閘道,則無法與 VPN 閘道並存。

組態設計

設定站對站 VPN 作為 ExpressRoute 的容錯移轉路徑

您可以設定站對站 VPN 連線作為 ExpressRoute 連線的備用連線。 此連線僅適用於連結至 Azure 私人對等路徑的虛擬網路。 對於可透過 Microsoft Azure 對等互連存取的服務,沒有以 VPN 為基礎的容錯移轉解決方案。 ExpressRoute 線路一律為主要連結。 只有在 ExpressRoute 線路故障時,資料才能流經站對站 VPN 路徑。 為了避免對稱路由,您的本機網路設定應該也偏好透過站對站 VPN 的 ExpressRoute 線路。 您可以為接收 ExpressRoute 的路由設定較高的本機喜好設定,來偏好透過 ExpressRoute 路徑。

注意

  • 如果您已啟用 ExpressRoute Microsoft 對等互連,您可以在 ExpressRoute 連線接收 Azure VPN 閘道的公用 IP 位址。 若要將您的站對站 VPN 連線設定為備份,您必須設定內部部署網路,以將 VPN 連線路由到網際網路。

  • 雖然當兩個路由相同時,ExpressRoute 線路路徑偏好透過站對站 VPN,但 Azure 會使用最長的相符前置詞來選擇朝向封包目的地的路由。

Diagram that shows a site-to-site VPN connection as a backup for ExpressRoute.

設定站對站 VPN 來連線至未透過 ExpressRoute 連接的網站

您可以將網路設定成有些網站透過站對站 VPN 直接連線至 Azure,而有些網站透過 ExpressRoute 來連線。

Coexist

選取要使用的步驟

有兩組不同的程序可供選擇。 您所選取的設定程序取決於您是已經有想要連線的現有虛擬網路,還是想要建立新的虛擬網路。

  • 我沒有 VNet 且需要建立一個。

    如果您還沒有虛擬網路,這個程序將引導您使用 Resource Manager 部署模型來建立新的虛擬網路,並建立新的 ExpressRoute 和站對站 VPN 連線。

  • 我已經有一個 Resource Manager 部署模型 VNet。

    您可能已經有虛擬網路,而且使用現有的站對站 VPN 連線或 ExpressRoute 連線。 在這個案例中,如果閘道子網路首碼是 /28 或更長 (/29、/30 等),您就必須刪除現有的閘道。 為已經存在的 VNet 設定並存的連線步驟會引導您刪除閘道,然後建立新的 ExpressRoute 和站對站 VPN 連線。

    如果您刪除後重建閘道,您的跨單位連線會發生停機。 不過,VM 和服務可以透過網際網路進行連線 (如有為閘道設定此功能)。

開始之前

本文中的步驟和範例會使用 Azure PowerShell Az 模組。 若要在您的電腦本機上安裝 Az 模組,請參閱安裝 Azure PowerShell。 若要深入了解新的 Az 模組,請參閱新的 Azure PowerShell Az 模組簡介。 PowerShell Cmdlet 會經常更新。 如果您未執行最新版本,指示中指定的值可能會失敗。 若要在您的系統上尋找已安裝的 PowerShell 版本,請使用 Get-Module -ListAvailable Az Cmdlet。

您可以使用 Azure Cloud Shell 來執行大部分的 PowerShell Cmdlet 和 CLI 命令,而不用在本機安裝 Azure PowerShell 或 CLI。 Azure Cloud Shell 是一個免費的互動式殼層,具有預先安裝和設定的通用 Azure 工具,可與您的帳戶搭配使用。 若要在 Azure Cloud Shell 上執行本文所包含的任何程式碼,請開啟 Cloud Shell 工作階段、使用某個程式碼區塊上的 [複製] 按鈕來複製程式碼,然後使用 Ctrl+Shift+V (在 Windows 和 Linux 上) 或 Cmd+Shift+V (在 macOS 上) 將程式碼貼到 Cloud Shell 工作階段中。 貼上的文字不會自動執行,請按下 Enter 鍵來執行程式碼。

以下有幾種啟動 Cloud Shell 的方式:

選項 連結
按一下程式碼區塊右上角的 [試試看] Cloud Shell in this article
在您的瀏覽器中開啟 Cloud Shell。 https://shell.azure.com/powershell
按一下 Azure 入口網站右上方功能表上的 [Cloud Shell] 按鈕。 Cloud Shell in the portal

此程序會引導您建立可並存的 VNet、站對站和 ExpressRoute 連線。 您針對此組態使用的 Cmdlet 可能與您熟悉的 Cmdlet 有些微不同。 請務必使用這些指示中指定的 Cmdlet。

  1. 登入並選取訂用帳戶。

    如果您使用 Azure Cloud Shell,您可以在按一下 [試用] 之後自動登入您的 Azure 帳戶。 若要在本機登入,請以提高的權限開啟 PowerShell 主控台並執行 Cmdlet 以連線。

    Connect-AzAccount
    

    如果您有多個訂用帳戶,請取得 Azure 訂用帳戶的清單。

    Get-AzSubscription
    

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

    Select-AzSubscription -SubscriptionName "Name of subscription"
    
  2. 定義變數並建立資源群組。

    $location = "Central US"
    $resgrp = New-AzResourceGroup -Name "ErVpnCoex" -Location $location
    $VNetASN = 65515
    
  3. 建立包含的 GatewaySubnet 虛擬網路。 如需有關建立虛擬網路的詳細資訊,請參閱建立虛擬網路。 如需有關建立子網路的詳細資訊,請參閱建立子網路

    重要

    GatewaySubnet 必須是 /27 或較短的前置詞,例如 /26 或 /25。

    建立新的虛擬網路。

    $vnet = New-AzVirtualNetwork -Name "CoexVnet" -ResourceGroupName $resgrp.ResourceGroupName -Location $location -AddressPrefix "10.200.0.0/16"
    

    新增兩個名為 AppGatewaySubnet 的子網域。

    Add-AzVirtualNetworkSubnetConfig -Name "App" -VirtualNetwork $vnet -AddressPrefix "10.200.1.0/24"
    Add-AzVirtualNetworkSubnetConfig -Name "GatewaySubnet" -VirtualNetwork $vnet -AddressPrefix "10.200.255.0/24"
    

    儲存虛擬網路設定。

    $vnet = Set-AzVirtualNetwork -VirtualNetwork $vnet
    
  4. 接下來,建立站對站 VPN 閘道。 如需 VPN 閘道組態的詳細資訊,請參閱利用站對站連線設定 VNet。 只有 VpnGw1、VpnGw2、VpnGw3、Standard 和 HighPerformance VPN 閘道支援 GatewaySku。 基本 SKU 不支援 ExpressRoute-VPN 閘道共存組態。 VpnType 必須是 RouteBased

    $gwSubnet = Get-AzVirtualNetworkSubnetConfig -Name "GatewaySubnet" -VirtualNetwork $vnet
    $gwIP = New-AzPublicIpAddress -Name "VPNGatewayIP" -ResourceGroupName $resgrp.ResourceGroupName -Location $location -AllocationMethod Dynamic
    $gwConfig = New-AzVirtualNetworkGatewayIpConfig -Name "VPNGatewayIpConfig" -SubnetId $gwSubnet.Id -PublicIpAddressId $gwIP.Id
    New-AzVirtualNetworkGateway -Name "VPNGateway" -ResourceGroupName $resgrp.ResourceGroupName -Location $location -IpConfigurations $gwConfig -GatewayType "Vpn" -VpnType "RouteBased" -GatewaySku "VpnGw1"
    

    Azure VPN 閘道支援 BGP 路由通訊協定。 您可以為該虛擬網路指定 ASN (AS 號碼),方法是在下列命令中新增 -Asn 旗標。 未指定 Asn 參數,AS 號碼會預設為 65515

    $azureVpn = New-AzVirtualNetworkGateway -Name "VPNGateway" -ResourceGroupName $resgrp.ResourceGroupName -Location $location -IpConfigurations $gwConfig -GatewayType "Vpn" -VpnType "RouteBased" -GatewaySku "VpnGw1"
    

    注意

    若是共存的閘道,您必須使用預設 ASN 65515。 如需詳細資訊,請參閱限制

    您可以藉由執行 $azureVpn.BgpSettings.BgpPeeringAddress$azureVpn.BgpSettings.Asn 來尋找 Azure 用於 VPN 閘道的 BGP 對等互連 IP 和 AS 號碼。 如需詳細資訊,請參閱針對 Azure VPN 閘道設定 BGP

  5. 建立本機的站台 VPN 閘道實體。 此命令不會設定內部部署 VPN 閘道。 相反地,它可讓您提供本機閘道器設定 (例如公用 IP 與內部位址空間),使 Azure VPN 閘道能夠與其連線。

    如果您的本機 VPN 裝置只支援靜態路由,您可以利用下列方式設定靜態路由:

    $MyLocalNetworkAddress = @("10.100.0.0/16","10.101.0.0/16","10.102.0.0/16")
    $localVpn = New-AzLocalNetworkGateway -Name "LocalVPNGateway" -ResourceGroupName $resgrp.ResourceGroupName -Location $location -GatewayIpAddress *<Public IP>* -AddressPrefix $MyLocalNetworkAddress
    

    如果您的本機 VPN 裝置支援 BGP,而且您想要啟用動態路由,您必須本機 VPN 裝置所用的知道 BGP 對等互連 IP 和 AS 號碼。

    $localVPNPublicIP = "<Public IP>"
    $localBGPPeeringIP = "<Private IP for the BGP session>"
    $localBGPASN = "<ASN>"
    $localAddressPrefix = $localBGPPeeringIP + "/32"
    $localVpn = New-AzLocalNetworkGateway -Name "LocalVPNGateway" -ResourceGroupName $resgrp.ResourceGroupName -Location $location -GatewayIpAddress $localVPNPublicIP -AddressPrefix $localAddressPrefix -BgpPeeringAddress $localBGPPeeringIP -Asn $localBGPASN
    
  6. 設定本機 VPN 裝置以連接到新的 Azure VPN 閘道。 如需關於 VPN 裝置組態的詳細資訊,請參閱 VPN 裝置組態

  7. 將 Azure 上的站對站 VPN 閘道連結至本機閘道器。

    $azureVpn = Get-AzVirtualNetworkGateway -Name "VPNGateway" -ResourceGroupName $resgrp.ResourceGroupName
    New-AzVirtualNetworkGatewayConnection -Name "VPNConnection" -ResourceGroupName $resgrp.ResourceGroupName -Location $location -VirtualNetworkGateway1 $azureVpn -LocalNetworkGateway2 $localVpn -ConnectionType IPsec -SharedKey <yourkey>
    
  8. 如果您要連線至現有的 ExpressRoute 線路,請略過步驟 8 與 9 並跳至步驟 10。 設定 ExpressRoute 線路。 如需詳細資訊,請參閱建立 ExpressRoute 路線

  9. 設定透過 ExpressRoute 線路的 Azure 私人對等互連。 如需設定透過 ExpressRoute 線路的 Azure 私人對等互連詳細資訊,請參閱設定對等互連

  10. 建立 ExpressRoute 閘道。 如需 ExpressRoute 閘道組態的詳細資訊,請參閱 ExpressRoute 閘道組態。 GatewaySKU 必須是 StandardHighPerformanceUltraPerformance

    $gwSubnet = Get-AzVirtualNetworkSubnetConfig -Name "GatewaySubnet" -VirtualNetwork $vnet
    $gwIP = New-AzPublicIpAddress -Name "ERGatewayIP" -ResourceGroupName $resgrp.ResourceGroupName -Location $location -AllocationMethod Dynamic
    $gwConfig = New-AzVirtualNetworkGatewayIpConfig -Name "ERGatewayIpConfig" -SubnetId $gwSubnet.Id -PublicIpAddressId $gwIP.Id
    $gw = New-AzVirtualNetworkGateway -Name "ERGateway" -ResourceGroupName $resgrp.ResourceGroupName -Location $location -IpConfigurations $gwConfig -GatewayType "ExpressRoute" -GatewaySku Standard
    
  11. 將 ExpressRoute 閘道器連結到 ExpressRoute 電路。 完成這個步驟之後,內部部署網路和 Azure 之間的連線 (透過 ExpressRoute ) 便會建立。 如需連結作業的詳細資訊,請參閱 將 Vnet 連結到 ExpressRoute

    $ckt = Get-AzExpressRouteCircuit -Name "YourCircuit" -ResourceGroupName "YourCircuitResourceGroup"
    New-AzVirtualNetworkGatewayConnection -Name "ERConnection" -ResourceGroupName $resgrp.ResourceGroupName -Location $location -VirtualNetworkGateway1 $gw -PeerId $ckt.Id -ConnectionType ExpressRoute
    

將點對站組態新增至 VPN 閘道

您可以在並存設定中,依照這些步驟來將點對站設定新增至您的 VPN 閘道。 若要上傳 VPN 根憑證,您必須將 PowerShell 安裝在本機電腦上,或使用 Azure 入口網站。

  1. 新增 VPN 用戶端位址集區。

    $azureVpn = Get-AzVirtualNetworkGateway -Name "VPNGateway" -ResourceGroupName $resgrp.ResourceGroupName
    Set-AzVirtualNetworkGateway -VirtualNetworkGateway $azureVpn -VpnClientAddressPool "10.251.251.0/24"
    
  2. 為您的 VPN 閘道將 VPN 根憑證上傳至 Azure。 在此範例中,假設根憑證儲存於執行下列 PowerShell Cmdlet 的本機電腦上,且您正在本機執行 PowerShell。 您也可以使用 Azure 入口網站上傳憑證。

    $p2sCertFullName = "RootErVpnCoexP2S.cer" 
    $p2sCertMatchName = "RootErVpnCoexP2S" 
    $p2sCertToUpload=get-childitem Cert:\CurrentUser\My | Where-Object {$_.Subject -match $p2sCertMatchName} 
    if ($p2sCertToUpload.count -eq 1){write-host "cert found"} else {write-host "cert not found" exit} 
    $p2sCertData = [System.Convert]::ToBase64String($p2sCertToUpload.RawData) 
    Add-AzVpnClientRootCertificate -VpnClientRootCertificateName $p2sCertFullName -VirtualNetworkGatewayname $azureVpn.Name -ResourceGroupName $resgrp.ResourceGroupName -PublicCertData $p2sCertData
    

如需點對站 VPN 的詳細資訊,請參閱 設定點對站連線

啟用 ExpressRoute 與 Azure VPN 之間的傳輸路由

如果要在其中一個連線至 ExpressRoute 的區域網路與另一個連線至站對站 VPN 連線的區域網路之間啟用連線,您需要設定 Azure 路由伺服器

下一步

如需有關 ExpressRoute 的詳細資訊,請參閱 ExpressRoute 常見問題集