你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 PowerShell 配置用于 Microsoft 对等互连的路由筛选器

路由筛选器是通过 Microsoft 对等互连使用部分受支持服务的一种方法。 本文中的步骤可帮助配置和管理 ExpressRoute 线路的路由筛选器。

Microsoft 365 服务(例如 Exchange Online、SharePoint Online 和 Skype for Business)及 Azure 公共服务(例如存储和 SQL DB)均可通过 Microsoft 对等互连进行访问。 Azure 公共服务可按区域选择,但不能针对每个公共服务定义。

如果在 ExpressRoute 线路中配置了 Microsoft 对等互连,则会通过建立的 BGP 会话播发与这些服务相关的所有前缀。 每个前缀附加有 BGP 团体值,以标识通过该前缀提供的服务。 有关 BGP 社区值及其映射到的服务的列表,请参阅 BGP 社区

与所有 Azure 和 Microsoft 365 服务的连接会导致大量前缀通过 BGP 进行播发。 大量前缀会显著增加网络中路由器所维护的路由表的大小。 如果打算仅使用通过 Microsoft 对等互连提供的一部分服务,可通过两种方式减少路由表大小。 方法:

  • 通过在 BGP 团体上应用路由筛选器,筛选出不需要的前缀。 路由筛选是标准的网络做法,通常在多个网络中使用。

  • 定义路由筛选器,并将其应用于 ExpressRoute 线路。 路由筛选器是一种新资源,可让你选择计划通过 Microsoft 对等互连使用的服务列表。 ExpressRoute 路由器仅发送属于路由筛选器中所标识服务的前缀列表。

应用于 ExpressRoute 电路的路由筛选器的图,该筛选器只允许将某些前缀广播到本地网络。

关于路由筛选器

在 ExpressRoute 线路上配置 Microsoft 对等互连时,Microsoft 边缘路由器会通过连接提供商的边缘路由器建立一对 BGP 会话。 不会将任何路由播发到网络。 若要能够将路由播发到网络,必须关联路由筛选器。

使用路由筛选器可标识要通过 ExpressRoute 线路的 Microsoft 对等互连使用的服务。 它实质上是所有 BGP 社区值的允许列表。 定义路由筛选器资源并将其附加到 ExpressRoute 线路后,映射到 BGP 社区值的所有前缀均会播发到网络。

若要使用 Microsoft 365 服务附加路由筛选器,必须具备通过 ExpressRoute 使用 Microsoft 365 服务的权限。 如果未被授权通过 ExpressRoute 使用 Microsoft 365 服务,则附加路由筛选器的操作将失败。 若要深入了解授权过程,请参阅适用于 Microsoft 365 的 Azure ExpressRoute

重要

在 2017 年 8 月 1 日之前配置的 ExpressRoute 线路的 Microsoft 对等互连会通过 Microsoft 对等互连播发所有 Microsoft Office 服务前缀,即使未定义路由筛选器。 在 2017 年 8 月 1 日或之后配置的 ExpressRoute 线路的 Microsoft 对等互连的任何前缀只有在路由筛选器附加到线路之后才会播发。

先决条件

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

  • 必须具备预配了 Microsoft 对等互连的活动 ExpressRoute 线路。 可使用以下说明完成这些任务:

    • 继续之前,请创建 ExpressRoute 线路,并让连接服务提供商启用该线路。 ExpressRoute 线路必须处于已预配且已启用状态。
    • 如果直接管理 BGP 会话,请创建 Microsoft 对等互连。 或者,让连接提供商为线路预配 Microsoft 对等互连。

Azure Cloud Shell

Azure 托管 Azure Cloud Shell(一个可通过浏览器使用的交互式 shell 环境)。 可以将 Bash 或 PowerShell 与 Cloud Shell 配合使用来使用 Azure 服务。 可以使用 Cloud Shell 预安装的命令来运行本文中的代码,而不必在本地环境中安装任何内容。

若要启动 Azure Cloud Shell,请执行以下操作:

选项 示例/链接
选择代码或命令块右上角的“试用”。 选择“试用”不会自动将代码或命令复制到 Cloud Shell。 显示 Azure Cloud Shell 的“试用”示例的屏幕截图。
转到 https://shell.azure.com 或选择“启动 Cloud Shell”按钮可在浏览器中打开 Cloud Shell。 用于启动 Azure Cloud Shell 的按钮。
选择 Azure 门户右上角菜单栏上的 Cloud Shell 按钮。 显示 Azure 门户中的 Cloud Shell 按钮的屏幕截图

若要使用 Azure Cloud Shell,请执行以下操作:

  1. 启动 Cloud Shell。

  2. 选择代码块(或命令块)上的“复制”按钮以复制代码或命令。

  3. 在 Windows 和 Linux 上选择 Ctrl+Shift+V,或在 macOS 上选择 Cmd+Shift+V 将代码或命令粘贴到 Cloud Shell 会话中。

  4. 选择“Enter”运行代码或命令。

登录到 Azure 帐户,然后选择订阅

如果你使用 Azure Cloud Shell,则可在单击“试用”后自动登录到你的 Azure 帐户。 若要在本地登录,请使用提升的权限打开 PowerShell 控制台,并运行 cmdlet 以进行连接。

Connect-AzAccount

如果有多个订阅,请获取 Azure 订阅的列表。

Get-AzSubscription

指定要使用的订阅。

Select-AzSubscription -SubscriptionName "Name of subscription"

获取前缀和 BGP 团体值的列表

  1. 使用以下 cmdlet 获取与通过 Microsoft 对等互连可访问的服务相关联的 BGP 社区值和前缀列表:

    Get-AzBgpServiceCommunity
    
  2. 列出要在路由筛选器中使用的 BGP 团体值列表。

创建路由筛选器和筛选器规则

1 个路由筛选器只能有 1 个规则,并且规则类型必须是 Allow。 此规则可以有与之关联的 BGP 团体值列表。 命令 az network route-filter create 只创建路由筛选器资源。 创建资源后,必须创建规则并将其附加到路由筛选器对象。

  1. 若要创建路由筛选器资源,请运行以下命令:

    New-AzRouteFilter -Name "MyRouteFilter" -ResourceGroupName "MyResourceGroup" -Location "West US"
    
  2. 若要创建路由筛选器规则,请运行以下命令:

    $rule = New-AzRouteFilterRuleConfig -Name "Allow-EXO-D365" -Access Allow -RouteFilterRuleType Community -CommunityList 12076:5010,12076:5040
    
  3. 运行以下命令将筛选器规则添加到路由筛选器:

    $routefilter = Get-AzRouteFilter -Name "MyRouteFilter" -ResourceGroupName "MyResourceGroup"
    $routefilter.Rules.Add($rule)
    Set-AzRouteFilter -RouteFilter $routefilter
    

将路由筛选器附加到 ExpressRoute 线路

运行以下命令将路由筛选器附加到 ExpressRoute 线路,假设你只有 Microsoft 对等互连:

$ckt = Get-AzExpressRouteCircuit -Name "ExpressRouteARMCircuit" -ResourceGroupName "MyResourceGroup"
$ckt.Peerings[0].RouteFilter = $routefilter 
Set-AzExpressRouteCircuit -ExpressRouteCircuit $ckt

常见任务

获取路由筛选器的属性

若要获取路由筛选器的属性,请使用以下步骤:

  1. 运行以下命令来获取路由筛选器资源:

    $routefilter = Get-AzRouteFilter -Name "MyRouteFilter" -ResourceGroupName "MyResourceGroup"
    
  2. 通过运行以下命令获取路由筛选器资源的路由筛选器规则:

    $routefilter = Get-AzRouteFilter -Name "MyRouteFilter" -ResourceGroupName "MyResourceGroup"
    $rule = $routefilter.Rules[0]
    

更新路由筛选器的属性

如果路由筛选器已附加到线路,则 BGP 社区列表的更新会通过建立的 BGP 会话自动传播前缀播发更改。 可使用以下命令更新路由筛选器的 BGP 团体列表:

$routefilter = Get-AzRouteFilter -Name "MyRouteFilter" -ResourceGroupName "MyResourceGroup"
$routefilter.rules[0].Communities = "12076:5030", "12076:5040"
Set-AzRouteFilter -RouteFilter $routefilter

从 ExpressRoute 线路分离路由筛选器

从 ExpressRoute 线路分离路由筛选器后,BGP 会话不会播发任何前缀。 可使用以下命令从 ExpressRoute 线路分离路由筛选器:

$ckt.Peerings[0].RouteFilter = $null
Set-AzExpressRouteCircuit -ExpressRouteCircuit $ckt

清理资源

只有在路由筛选器未附加到任何线路时,才能将其删除。 尝试删除路由筛选器之前,请确保其未附加到任何线路。 可使用以下命令删除路由筛选器:

Remove-AzRouteFilter -Name "MyRouteFilter" -ResourceGroupName "MyResourceGroup"

后续步骤

若要了解路由器配置示例,请参阅: