使用 Azure PowerShell 将虚拟网络连接到 ExpressRoute 线路

本文将帮助你使用 Resource Manager 部署模型和 PowerShell 将虚拟网络 (VNet) 链接到 Azure ExpressRoute 线路。 虚拟网络可以在同一个订阅中,也可以属于另一个订阅。 本教程还介绍如何更新虚拟网络链接。

Diagram showing a virtual network linked to an ExpressRoute circuit.

先决条件

  • 在开始配置之前,请先查看先决条件路由要求工作流

  • 必须有一个活动的 ExpressRoute 线路。

    • 请按说明创建 ExpressRoute 线路,并通过连接提供商启用该线路。
    • 请确保为线路配置 Azure 专用对等互连。 有关路由说明,请参阅配置路由一文。
    • 确保已配置 Azure 专用对等互连,并建立网络和 Azure 之间的 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。

将同一订阅中的虚拟网络连接到线路

可以使用以下 cmdlet 将虚拟网络网关连接到 ExpressRoute 线路。 在运行 cmdlet 之前,请确保已创建虚拟网络网关并可将其用于进行链接:

$circuit = Get-AzExpressRouteCircuit -Name "MyCircuit" -ResourceGroupName "MyRG"
$gw = Get-AzVirtualNetworkGateway -Name "ExpressRouteGw" -ResourceGroupName "MyRG"
$connection = New-AzVirtualNetworkGatewayConnection -Name "ERConnection" -ResourceGroupName "MyRG" -Location "China East" -VirtualNetworkGateway1 $gw -PeerId $circuit.Id -ConnectionType ExpressRoute

将另一订阅中的虚拟网络连接到线路

用户可以在多个订阅之间共享 ExpressRoute 线路。 下图是在多个订阅之间共享 ExpressRoute 线路的简单示意图。

注意

不支持在由世纪互联运营的 Azure 和其他 Azure 云之间连接虚拟网络。 只能链接来自同一云中不同订阅的虚拟网络。

大型云中的每个较小云用于表示属于组织中不同部门的订阅。 组织内的每个部门使用自己的订阅部署其服务,但可以共享单个 ExpressRoute 线路以连接回本地网络。 单个部门(在此示例中为 IT 部门)可以拥有 ExpressRoute 线路。 组织内的其他订阅可以使用 ExpressRoute 线路。

注意

订阅所有者需要缴纳 ExpressRoute 线路的连接和带宽费用。 所有虚拟网络共享相同的带宽。

Cross-subscription connectivity

管理 - 线路所有者和线路用户

“线路所有者”是 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

线路用户操作

线路用户需有对等 ID 以及线路所有者提供的授权密钥。 授权密钥是一个 GUID。

可以使用以下命令检查对等 ID:

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 "China East" -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 连接,请使用 Remove-AzVirtualNetworkGatewayConnection 命令,从该网关所在的订阅删除网关和线路之间的链接。

Remove-AzVirtualNetworkGatewayConnection "MyConnection" -ResourceGroupName "MyRG"

后续步骤

在本教程中,你已了解如何将虚拟网络连接到同一订阅和不同订阅中的线路。 有关 ExpressRoute 网关的详细信息,请参阅:ExpressRoute 虚拟网络网关

若要了解如何使用 PowerShell 为 Microsoft 对等互连配置路由筛选器,请转到下一个教程。