使用 PowerShell 設定 ExpressRoute 和站對站並存連線
本文將協助您設定並存的 ExpressRoute 和站對站 VPN 連線。 設定這兩個連線有數個優點:
- 您可以將站對站 VPN 設定為 ExpressRoute 的安全故障轉移路徑。
- 或者,您可以使用站對站 VPN 來連線至不是透過 ExpressRoute 連線的網站。
本文涵蓋設定這兩個案例的步驟。 本文適用於 Resource Manager 部署模型並使用 PowerShell。 您也可以使用 Azure 入口網站來設定這些案例,但目前尚未提供相關文件。 您可以先設定任一閘道。 通常,在新增閘道或閘道連線時,將不會遇到任何停機。
注意
如果您想要透過 ExpressRoute 線路來建立站對站 VPN,請參閱透過 Microsoft 對等互連的站對站 VPN。
限制
- 僅支援路由式 VPN 閘道。 您必須使用路由式 VPN 閘道。 您也可以使用路由式 VPN 閘道搭配針對「原則型流量選取器」設定的 VPN 連線,如連線至多個原則式 VPN 裝置中所述。
- 基本 SKU 公用 IP 不支援 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 虛擬網路網關時收到錯誤訊息。
組態設計
設定站對站 VPN 作為 ExpressRoute 的容錯移轉路徑
您可以設定站對站 VPN 連線作為 ExpressRoute 連線的備用連線。 此設定僅適用於連結至 Azure 私人對等互連路徑的虛擬網路。 對於可透過 Microsoft Azure 對等互連存取的服務,沒有以 VPN 為基礎的容錯移轉解決方案。 ExpressRoute 線路一律是主要連結,只有在 ExpressRoute 線路失敗時,數據才會流經站對站 VPN 路徑。 若要避免非對稱路由,請將您的局域網路設定為偏好 ExpressRoute 線路,而不是站對站 VPN,方法是為透過 ExpressRoute 接收的路由設定較高的本機喜好設定。
注意
- 如果您已啟用 ExpressRoute Microsoft 對等互連,您可以在 ExpressRoute 連線接收 Azure VPN 閘道的公用 IP 位址。 若要將站對站 VPN 連線設定為備份,請設定內部部署網路,讓 VPN 連線路由至因特網。
- 雖然當兩個路由相同時,ExpressRoute 線路路徑偏好透過站對站 VPN,但 Azure 會使用最長的相符前置詞來選擇朝向封包目的地的路由。
設定站對站 VPN 來連線至未透過 ExpressRoute 連接的網站
您可以設定網路,讓某些月臺透過站對站 VPN 直接連線到 Azure,而另一些月臺則透過 ExpressRoute 進行連線。
選取要使用的步驟
有兩組不同的程序可供選擇。 您選取的組態程式取決於您是否有現有的虛擬網路,還是需要建立新的虛擬網路。
我沒有虛擬網路,而且需要建立虛擬網路。
如果您還沒有虛擬網路,此程式會逐步引導您使用 Resource Manager 部署模型建立新的虛擬網路,以及建立新的 ExpressRoute 和站對站 VPN 連線。
我已經有 Resource Manager 部署模型虛擬網路。
如果您已經有具有現有站對站 VPN 或 ExpressRoute 連線的虛擬網路,且閘道子網前綴為 /28 或更長(/29、/30 等),則需要刪除現有的閘道。 設定現有虛擬網路共存連線的步驟會引導您刪除閘道,然後建立新的 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。 | ![]() |
按一下 Azure 入口網站右上方功能表上的 [Cloud Shell] 按鈕。 |
![]() |
此程式會引導您建立虛擬網路,並設定並存站對站 VPN 和 ExpressRoute 連線。 此組態中使用的 Cmdlet 可能與您熟悉的 Cmdlet 不同,因此請確定您使用指定的 Cmdlet。
登入並選取訂用帳戶。
如果您使用 Azure Cloud Shell,您可以在按一下 [試用] 之後自動登入您的 Azure 帳戶。 若要在本機登入,請以提高的權限開啟 PowerShell 主控台並執行 Cmdlet 以連線。
Connect-AzAccount
如果您有多個訂用帳戶,請取得 Azure 訂用帳戶的清單。
Get-AzSubscription
指定您要使用的訂用帳戶。
Select-AzSubscription -SubscriptionName "Name of subscription"
定義變數並建立資源群組。
$location = "Central US" $resgrp = New-AzResourceGroup -Name "ErVpnCoex" -Location $location $VNetASN = 65515
建立包含的
GatewaySubnet
虛擬網路。 如需有關建立虛擬網路的詳細資訊,請參閱建立虛擬網路。 如需建立子網的詳細資訊,請參閱 建立子網。重要
GatewaySubnet 必須是 /27 或較短的前置詞,例如 /26 或 /25。
建立新的虛擬網路。
$vnet = New-AzVirtualNetwork -Name "CoexVnet" -ResourceGroupName $resgrp.ResourceGroupName -Location $location -AddressPrefix "10.200.0.0/16"
新增兩個名為 App 和 GatewaySubnet 的子網域。
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
建立站對站 VPN 閘道。 如需 VPN 閘道組態的詳細資訊,請參閱 使用站對站連線設定虛擬網路。 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
旗標,以指定虛擬網路的 ASN (AS Number)。 未指定 參數會將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。建立本機的站台 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,而且您想要啟用動態路由,您必須知道 BGP 對等互連 IP 和本機 VPN 裝置的 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
設定本機 VPN 裝置以連接到新的 Azure VPN 閘道。 如需關於 VPN 裝置組態的詳細資訊,請參閱 VPN 裝置組態。
將 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>"
如果您要連線到現有的 ExpressRoute 線路,請略過步驟 8 和 9,並跳至步驟 10。 設定 ExpressRoute 線路。 如需設定 ExpressRoute 線路的詳細資訊,請參閱 建立 ExpressRoute 線路。
設定透過 ExpressRoute 線路的 Azure 私人對等互連。 如需透過 ExpressRoute 線路設定 Azure 私人對等互連的詳細資訊,請參閱 設定對等互連。
建立 ExpressRoute 閘道。 如需 ExpressRoute 閘道組態的詳細資訊,請參閱 ExpressRoute 閘道組態。 GatewaySKU 必須是 Standard、HighPerformance 或 UltraPerformance。
$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
- 將 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