共用方式為


使用 Azure PowerShell 將虛擬網路連線到 ExpressRoute 線路

本文會協助您使用 Resource Manager 部署模型和 PowerShell,將虛擬網路 (VNet) 連結到 Azure ExpressRoute 線路。 虛擬網路可以位於相同的訂用帳戶中,或屬於另一個訂用帳戶。 本教學課程也示範如何更新虛擬網路連結。

此圖顯示連結至 ExpressRoute 線路的虛擬網路。

必要條件

  • 開始設定之前,請先檢閱必要條件路由需求工作流程

  • 您必須具有作用中的 ExpressRoute 線路。

    • 遵循指示來 建立 ExpressRoute 線路 ,並由您的連線提供者來啟用該線路。
    • 請確定您已為線路設定 Azure 私人對等互連。 請參閱 設定路由 一文,以取得路由指示。
    • 請確定您已設定 Azure 私人對等互連,並在您的網路與 Microsoft 之間建立 BGP 對等互連,以進行端對端連線。
    • 請確定您已建立並完全佈建虛擬網路和虛擬網路閘道。 請依照指示為 ExpressRoute 建立虛擬網路閘道。 ExpressRoute 的虛擬網路閘道會使用 GatewayType ExpressRoute,而不是 VPN。
  • 您可將最多 10 個虛擬網路連結至標準 ExpressRoute 線路。 使用標準 ExpressRoute 線路時,所有虛擬網路都必須位於相同的地緣政治區域中。

  • 單一虛擬網路最多可連結至 16 個 ExpressRoute 線路。 使用本文中的步驟來建立您要連線每個 ExpressRoute 線路的新連線物件。 ExpressRoute 線路可位於相同的訂用帳戶和/或不同的訂用帳戶中。

  • 如果您啟用 ExpressRoute 進階附加元件,則可以在 ExpressRoute 線路的地緣政治區域外部連結虛擬網路。 進階附加元件可讓您將 10 個以上的虛擬網路連線到 ExpressRoute 線路,取決於選擇的頻寬。 如需高階附加元件的詳細資訊,請參閱 常見問題集

  • 若要建立從 ExpressRoute 線路到目標 ExpressRoute 虛擬網路閘道的連線,從本地或對等互連虛擬網路公告的位址空間數目必須等於或小於 200。 成功建立連線之後,您可以將最多 1,000 個位址空間新增至本機或對等互連虛擬網路。

  • 檢閱透過 ExpressRoute 在虛擬網路之間的連線指引。

使用 Azure PowerShell

本文中的步驟和範例會使用 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
在您的瀏覽器中開啟 Cloud Shell。 https://shell.azure.com/powershell
按一下 Azure 入口網站右上方功能表上的 [Cloud Shell] 按鈕。 入口網站中的 Cloud Shell

線上虛擬網路

最大復原能力 (建議):為您的虛擬網路提供最高層級的復原能力。 其提供兩個備援連線,從虛擬網路閘道連線至不同 ExpressRoute 位置中的兩個不同 ExpressRoute 線路。

複製指令碼

若要建立最大的復原連線,請從 GitHub 複製安裝腳本。

# Clone the setup script from GitHub.
git clone https://github.com/Azure-Samples/azure-docs-powershell-samples/ 
# Change to the directory where the script is located.
CD azure-docs-powershell-samples/expressroute/

執行 New-AzHighAvailabilityVirtualNetworkGatewayConnections.ps1 腳本來建立高可用性連線。 下列範例示範如何建立兩個 ExpressRoute 線路的新連線。

$SubscriptionId = Get-AzureSubscription -SubscriptionName "<SubscriptionName>"
$circuit1 = Get-AzExpressRouteCircuit -Name "MyCircuit1" -ResourceGroupName "MyRG"
$circuit2 = Get-AzExpressRouteCircuit -Name "MyCircuit2" -ResourceGroupName "MyRG"
$gw = Get-AzVirtualNetworkGateway -Name "ExpressRouteGw" -ResourceGroupName "MyRG"

highAvailabilitySetup/New-AzHighAvailabilityVirtualNetworkGatewayConnections.ps1 -SubscriptionId $SubscriptionId -ResourceGroupName "MyRG" -Location "West EU" -Name1 "ERConnection1" -Name2 "ERConnection2" -Peer1 $circuit1.Peerings[0] -Peer2 $circuit2.Peerings[0] -RoutingWeight1 10 -RoutingWeight2 10 -VirtualNetworkGateway1 $gw

如果您想要建立新的連線並使用現有的連線,您可以使用下列範例。 此範例會建立第二個 ExpressRoute 線路的新連線,並使用與第一個 ExpressRoute 線路的現有連線。

$SubscriptionId = Get-AzureSubscription -SubscriptionName "<SubscriptionName>"
$circuit1 = Get-AzExpressRouteCircuit -Name "MyCircuit1" -ResourceGroupName "MyRG"
$gw = Get-AzVirtualNetworkGateway -Name "ExpressRouteGw" -ResourceGroupName "MyRG"
$connection = Get-AzVirtualNetworkGatewayConnection -Name "ERConnection1" -ResourceGroupName "MyRG"

highAvailabilitySetup/New-AzHighAvailabilityVirtualNetworkGatewayConnections.ps1 -SubscriptionId $SubscriptionId -ResourceGroupName "MyRG" -Location "West EU" -Name2 "ERConnection2" -Peer2 $circuit1.Peerings[0] -RoutingWeight2 10 -VirtualNetworkGateway1 $gw -ExistingVirtualNetworkGatewayConnection $connection

將不同訂用帳戶中的虛擬網路連接到線路

您可以讓多個訂用帳戶共用 ExpressRoute 線路。 下圖顯示簡單的圖解,示範多個訂用帳戶共用 ExpressRoute 線路的方式。

注意

不支援連接 Azure 主權雲端與公用 Azure 雲端之間的虛擬網路。 您只能從相同雲端中的不同訂用帳戶連結虛擬網路。

大型雲端內的每個較小型雲端,會用來代表屬於組織內不同部門的訂用帳戶。 組織內的每個部門都可以使用自己的訂用帳戶來部署其服務,但可共用單一 ExpressRoute 線路,以連線回內部部署網路。 單一部門 (在此範例中:IT) 可以擁有 ExpressRoute 循環。 組織內的其他訂用帳戶可以使用 ExpressRoute 線路。

注意

訂用帳戶擁有者需支付 ExpressRoute 循環的連線和頻寬費用。 所有虛擬網路都會共用相同的頻寬。

跨訂用帳戶的連線能力

系統管理 - 線路擁有者和線路使用者

「線路擁有者」是 ExpressRoute 線路資源的授權進階使用者。 線路擁有者可以建立可由「線路使用者」兌換的授權。 線路使用者是虛擬網路閘道的擁有者,與 ExpressRoute 線路位於不同的訂用帳戶內。 線路使用者可以兌換授權 (每個虛擬網路一個授權)。

線路擁有者隨時有權修改及撤銷授權。 撤銷授權會導致從撤銷存取權的訂用帳戶中刪除所有連結連線。

注意

線路擁有者不是內建的 RBAC 角色,亦非定義在 ExpressRoute 資源上。 線路擁有者的定義是擁有下列存取權的任何角色:

  • Microsoft.Network/expressRouteCircuits/authorizations/write
  • Microsoft.Network/expressRouteCircuits/authorizations/read
  • Microsoft.Network/expressRouteCircuits/authorizations/delete

這包括內建角色,例如參與者、擁有者和網路參與者。 不同內建角色的詳細描述。

線路擁有者作業

建立授權

線路擁有者會建立授權,這會建立授權金鑰,供線路使用者用來將其虛擬網路閘道連線至 ExpressRoute 線路。 授權僅適用於一個連線。

下列 Cmdlet 程式碼片段示範如何建立授權:

$circuit = Get-AzExpressRouteCircuit -Name "MyCircuit" -ResourceGroupName "MyRG"
Add-AzExpressRouteCircuitAuthorization -ExpressRouteCircuit $circuit -Name "MyAuthorization1"
Set-AzExpressRouteCircuit -ExpressRouteCircuit $circuit

$circuit = Get-AzExpressRouteCircuit -Name "MyCircuit" -ResourceGroupName "MyRG"
$auth1 = Get-AzExpressRouteCircuitAuthorization -ExpressRouteCircuit $circuit -Name "MyAuthorization1"

對先前命令的回應包含授權金鑰和狀態:

Name                   : MyAuthorization1
Id                     : /subscriptions/&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&/resourceGroups/ERCrossSubTestRG/providers/Microsoft.Network/expressRouteCircuits/CrossSubTest/authorizations/MyAuthorization1
Etag                   : &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 
AuthorizationKey       : ####################################
AuthorizationUseStatus : Available
ProvisioningState      : Succeeded

檢閱授權

線路擁有者可以藉由執行下列 Cmdlet,來檢閱特定線路上發出的所有授權:

$circuit = Get-AzExpressRouteCircuit -Name "MyCircuit" -ResourceGroupName "MyRG"
$authorizations = Get-AzExpressRouteCircuitAuthorization -ExpressRouteCircuit $circuit

新增授權

線路擁有者可以使用下列 Cmdlet 來新增授權:

$circuit = Get-AzExpressRouteCircuit -Name "MyCircuit" -ResourceGroupName "MyRG"
Add-AzExpressRouteCircuitAuthorization -ExpressRouteCircuit $circuit -Name "MyAuthorization2"
Set-AzExpressRouteCircuit -ExpressRouteCircuit $circuit

$circuit = Get-AzExpressRouteCircuit -Name "MyCircuit" -ResourceGroupName "MyRG"
$authorizations = Get-AzExpressRouteCircuitAuthorization -ExpressRouteCircuit $circuit

刪除授權

線路擁有者可以使用下列 Cmdlet 來撤銷/刪除使用者的授權:

Remove-AzExpressRouteCircuitAuthorization -Name "MyAuthorization2" -ExpressRouteCircuit $circuit
Set-AzExpressRouteCircuit -ExpressRouteCircuit $circuit

線路使用者作業

電路使用者需要具備對等識別碼以及電路擁有者所提供的授權金鑰。 授權金鑰是 GUID。

您可以從下列命令檢查「對等識別碼」:

Get-AzExpressRouteCircuit -Name "MyCircuit" -ResourceGroupName "MyRG"

兌換連線授權

線路使用者可以執行下列 Cmdlet 來兌換連結授權:

$id = "/subscriptions/********************************/resourceGroups/ERCrossSubTestRG/providers/Microsoft.Network/expressRouteCircuits/MyCircuit"    
$gw = Get-AzVirtualNetworkGateway -Name "ExpressRouteGw" -ResourceGroupName "MyRG"
$connection = New-AzVirtualNetworkGatewayConnection -Name "ERConnection" -ResourceGroupName "RemoteResourceGroup" -Location "East US" -VirtualNetworkGateway1 $gw -PeerId $id -ConnectionType ExpressRoute -AuthorizationKey "^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"

釋出連線授權

您可以藉由刪除將 ExpressRoute 線路連結到虛擬網路的連線來釋出授權。

修改虛擬網路連線

您可以更新虛擬網路連線的特定屬性。

更新連線權數

您的虛擬網路可以連接到多個 ExpressRoute 線路。 您可能會收到來自多個 ExpressRoute 線路的相同前置詞。 若要選擇要使用哪一個連線來傳送目的為此前置詞的流量,您可以變更連線的 RoutingWeight。 流量透過具有最高 RoutingWeight 的連線來傳送。

$connection = Get-AzVirtualNetworkGatewayConnection -Name "MyVirtualNetworkConnection" -ResourceGroupName "MyRG"
$connection.RoutingWeight = 100
Set-AzVirtualNetworkGatewayConnection -VirtualNetworkGatewayConnection $connection

RoutingWeight 的範圍是從 0 到 32000。 預設值是 0。

設定 ExpressRoute FastPath

如果您的虛擬網路閘道是超效能或 ErGw3AZ,您可以啟用 ExpressRoute FastPath。 FastPath 可改善資料路徑效能,例如每秒封包數,以及內部部署網路與虛擬網路之間的每秒連線數。

在新連線上設定 FastPath

$circuit = Get-AzExpressRouteCircuit -Name "MyCircuit" -ResourceGroupName "MyRG" 
$gw = Get-AzVirtualNetworkGateway -Name "MyGateway" -ResourceGroupName "MyRG" 
$connection = New-AzVirtualNetworkGatewayConnection -Name "MyConnection" -ResourceGroupName "MyRG" -ExpressRouteGatewayBypass -VirtualNetworkGateway1 $gw -PeerId $circuit.Id -ConnectionType ExpressRoute -Location "MyLocation" 

更新現有的連線以啟用 FastPath

$connection = Get-AzVirtualNetworkGatewayConnection -Name "MyConnection" -ResourceGroupName "MyRG" 
$connection.ExpressRouteGatewayBypass = $True
Set-AzVirtualNetworkGatewayConnection -VirtualNetworkGatewayConnection $connection

透過虛擬網路對等互連和 UDR 支援,FastPath 會將流量直接傳送至部署在「輪輻」虛擬網路中的 VM (透過虛擬網路對等互連連線),並接受 GatewaySubnet 上設定的任何 UDR。 這項功能現已正式推出 (GA)。

使用 FastPath 和 Private Link 時,透過 ExpressRoute 傳送的 Private Link 流量會略過資料路徑中的 ExpressRoute 虛擬網路閘道。 啟用這兩項功能后,FastPath 會直接將流量傳送至部署在「輪輻」虛擬網路中的私人端點。

這些情節適用於與 10 Gbps 和 100 Gbps ExpressRoute Direct 線路相關聯的有限情節。 若要啟用,請遵循下列指導:

  1. 完成此 Microsoft Form,以要求註冊您的訂用帳戶。 要求可能需要長達 4 週的時間才能完成,因此請據以規劃部署。
  2. 一旦您收到步驟 1 的確認後,請在目標 Azure 訂用帳戶中執行下列 Azure PowerShell 命令。
$connection = Get-AzVirtualNetworkGatewayConnection -ResourceGroupName <resource-group> -ResourceName <connection-name>
$connection.ExpressRouteGatewayBypass = $true
$connection.EnablePrivateLinkFastPath = $true
Set-AzVirtualNetworkGatewayConnection -VirtualNetworkGatewayConnection $connection

注意

您可以使用連線監視器,以使用 FastPath 來驗證您的流量到達目的地。

注意

啟用有限 GA 情節的 FastPath Private Link 支援可能需要超過 4 週的時間才能完成。 請事先規劃您的部署。

虛擬網路對等互連和 UDR 的 FastPath 支援僅適用於 ExpressRoute 直接連線

注意

如果您已設定 FastPath 且想要註冊有限的 GA 功能,則需要執行下列動作:

  1. 使用 Azure PowerShell 命令註冊其中一項 FastPath 功能。
  2. 在目標連線上停用並重新啟用 FastPath。
  3. 若要在有限的 GA 功能之間進行切換,請向目標預覽 PowerShell 命令長註冊訂用帳戶,然後在連線上停用再重新啟用 FastPath。

清除資源

如果您不再需要 ExpressRoute 連線,請從閘道所在的訂用帳戶使用 Remove-AzVirtualNetworkGatewayConnection 命令來移除閘道與線路之間的連結。

Remove-AzVirtualNetworkGatewayConnection "MyConnection" -ResourceGroupName "MyRG"

下一步

在本教學課程中,您已了解如何將虛擬網路連線至相同訂用帳戶和不同訂用帳戶中的線路。 如需 ExpressRoute 閘道的詳細資訊,請參閱 ExpressRoute 虛擬網路閘道

若要了解如何使用 PowerShell 設定 Microsoft 對等互連的路由篩選,請進入下一個教學課程。