通过路由筛选器,可以通过Microsoft对等互连使用一部分受支持的服务。 本文将指导你配置和管理 ExpressRoute 线路的路由筛选器。
连接到所有 Azure 服务可能会导致大量前缀通过 BGP 播发,从而显著增加路由表的大小。 如果只需要通过Microsoft对等互连提供的服务子集,则可以通过以下方式减少路由表大小:
- 在 BGP 社区上使用路由筛选器筛选不需要的前缀,这是一种常见的网络做法。
- 定义路由筛选器并将其应用到 ExpressRoute 线路。 路由筛选器是一种资源,可用于选择要通过Microsoft对等互连使用的服务。 ExpressRoute 路由器仅发送路由筛选器中标识的服务的前缀。
关于路由筛选器
在 ExpressRoute 线路上配置Microsoft对等互连时,Microsoft边缘路由器通过连接提供商与边缘路由器建立 BGP 会话。 在关联路由筛选器之前,不会向网络播发任何路由。
通过路由筛选器,可以指定要通过 ExpressRoute 线路的Microsoft对等互连使用的服务。 它充当 BGP 社区值的允许列表。 定义路由筛选器并将其附加到 ExpressRoute 线路后,映射到 BGP 社区值的所有前缀都会播发到网络。
重要
Microsoft 2017 年 8 月 1 日之前配置的 ExpressRoute 线路的对等互连将具有通过Microsoft对等互连播发的所有Microsoft Office 服务前缀,即使没有路由筛选器也是如此。 对于在 2017 年 8 月 1 日或之后配置的线路,在路由筛选器附加到线路之前,不会播发任何前缀。
先决条件
在启动配置之前,请查看 先决条件 和 工作流 。
- 确保已配置Microsoft对等互连的活动 ExpressRoute 线路。 有关说明,请参阅:
-
创建 ExpressRoute 线路 ,并由连接提供商预配。 线路必须处于预配和启用状态。
- 如果直接管理 BGP 会话,或者让连接提供商为线路创建Microsoft对等互连,请创建Microsoft对等互连。
- 必须具备预配了 Microsoft 对等互连的活动 ExpressRoute 线路。 可以使用以下说明来完成这些任务:
注释
在可以在由世纪互联运营的 Microsoft Azure 中使用 Azure CLI 之前,请先运行 az cloud set -n AzureChinaCloud
来更改云环境。 若要切换回 Azure 公有云,请再次运行 az cloud set -n AzureCloud
。
若要在本地登录,请使用提升的权限打开 PowerShell 控制台,并运行 cmdlet 进行连接。
Connect-AzAccount -Environment AzureChinaCloud
如果有多个订阅,请获取 Azure 订阅的列表。
Get-AzSubscription
指定要使用的订阅。
Select-AzSubscription -SubscriptionName "Name of subscription"
若要通过Microsoft对等互连成功连接到服务,必须完成以下配置步骤:
- 必须具备预配了 Microsoft 对等互连的活动 ExpressRoute 线路。 可以使用以下说明来完成这些任务:
注释
在可以在由世纪互联运营的 Microsoft Azure 中使用 Azure CLI 之前,请先运行 az cloud set -n AzureChinaCloud
来更改云环境。 若要切换回 Azure 公有云,请再次运行 az cloud set -n AzureCloud
。
如果选择在本地安装并使用 CLI,本教程需要 Azure CLI 2.0.28 或更高版本。 若要查找版本,请运行 az --version
。 如果需要安装或升级,请参阅 安装 Azure CLI。
登录到 Azure 帐户并选择订阅
若要开始配置,请登录到 Azure 帐户。 如果使用“试用”,则会自动登录,可以跳过登录步骤。 使用以下示例帮助你连接:
az cloud set -n AzureChinaCloud
az login
# az cloud set -n AzureCloud //means return to Public Azure.
检查帐户的订阅。
az account list
选择要为其创建 ExpressRoute 线路的订阅。
az account set --subscription "<subscription ID>"
获取前缀和 BGP 团体值的列表
使用以下 cmdlet 获取通过Microsoft对等互连访问的服务关联的 BGP 社区值和前缀列表:
Get-AzBgpServiceCommunity
使用以下 cmdlet 获取通过Microsoft对等互连访问的服务关联的 BGP 社区值和前缀列表:
az network route-filter rule list-service-communities
列出要使用的值
列出要在路由筛选器中使用的 BGP 社区值 。
创建路由筛选器和筛选器规则
路由筛选器只能有一个规则,该规则的类型必须为 Allow。 此规则可以包含 BGP 社区值的列表。
选择“ 创建资源 ”并搜索 “路由”筛选器:
请将路由筛选器放置在资源组中。 确保位置与 ExpressRoute 线路匹配。 选择“查看 + 创建”,然后选择“创建” 。
创建筛选器规则
若要添加和更新规则,请选择路由筛选器的托管规则选项卡。
然后选择要从下拉列表连接到的服务并保存规则。
路由筛选器只能有一个规则,并且该规则的类型必须为 。Allow
此规则可以有与之关联的 BGP 团体值列表。 该命令 az network route-filter create
仅创建路由筛选器资源。 创建资源后,必须创建规则并将其附加到路由筛选器对象。
若要创建路由筛选器资源,请运行以下命令:
New-AzRouteFilter -Name "MyRouteFilter" -ResourceGroupName "MyResourceGroup" -Location "China North"
若要创建路由筛选器规则,请运行以下命令:
$rule = New-AzRouteFilterRuleConfig -Name "Allow-EXO-D365" -Access Allow -RouteFilterRuleType Community -CommunityList 12076:5010,12076:5040
运行以下命令,将筛选器规则添加到路由筛选器:
$routefilter = Get-AzRouteFilter -Name "MyRouteFilter" -ResourceGroupName "MyResourceGroup"
$routefilter.Rules.Add($rule)
Set-AzRouteFilter -RouteFilter $routefilter
1 个路由筛选器只能有 1 个规则,并且规则类型必须是“允许”。 此规则可以有与之关联的 BGP 团体值列表。 该命令 az network route-filter create
仅创建路由筛选器资源。 创建资源后,必须创建规则并将其附加到路由筛选器对象。
若要创建路由筛选器资源,请运行以下命令:
az network route-filter create -n MyRouteFilter -g MyResourceGroup
若要创建路由筛选器规则,请运行以下命令:
az network route-filter rule create --filter-name MyRouteFilter -n CRM --communities 12076:5040 --access Allow -g MyResourceGroup
将路由筛选器附加到 ExpressRoute 线路
通过选择“ + 添加线路 ”按钮并从下拉列表中选择 ExpressRoute 线路,将路由筛选器附加到线路。
如果连接提供商为 ExpressRoute 线路配置对等互连,请在选择“ + 添加 线路”按钮之前从 ExpressRoute 线路页刷新线路。
运行以下命令,将路由筛选器附加到 ExpressRoute 线路,前提是只有Microsoft对等互连:
$ckt = Get-AzExpressRouteCircuit -Name "ExpressRouteARMCircuit" -ResourceGroupName "MyResourceGroup"
$index = [array]::IndexOf(@($ckt.Peerings.PeeringType), "MicrosoftPeering")
$ckt.Peerings[$index].RouteFilter = $routefilter
Set-AzExpressRouteCircuit -ExpressRouteCircuit $ckt
运行以下命令,将路由筛选器附加到 ExpressRoute 线路:
az network express-route peering update --circuit-name MyCircuit -g ExpressRouteResourceGroupName --name MicrosoftPeering --route-filter MyRouteFilter
常见任务
获取路由筛选器的属性
通过在门户中打开资源来查看路由筛选器的属性。
若要获取路由筛选器的属性,请使用以下步骤:
运行以下命令以获取路由筛选器资源:
$routefilter = Get-AzRouteFilter -Name "MyRouteFilter" -ResourceGroupName "MyResourceGroup"
运行以下命令获取路由筛选器资源的路由筛选器规则:
$routefilter = Get-AzRouteFilter -Name "MyRouteFilter" -ResourceGroupName "MyResourceGroup"
$rule = $routefilter.Rules[0]
若要获取路由筛选器的属性,请使用以下命令:
az network route-filter show -g ExpressRouteResourceGroupName --name MyRouteFilter
更新路由筛选器的属性
通过选择“ 管理规则 ”按钮更新附加到线路的 BGP 社区值列表。
选择所需的服务社区,然后选择“保存”。
如果路由筛选器已附加到线路,则对 BGP 社区列表的更新会自动通过建立的 BGP 会话传播前缀播发更改。 可以使用以下命令更新路由筛选器的 BGP 社区列表:
$routefilter = Get-AzRouteFilter -Name "MyRouteFilter" -ResourceGroupName "MyResourceGroup"
$routefilter.rules[0].Communities = "12076:5030", "12076:5040"
Set-AzRouteFilter -RouteFilter $routefilter
如果路由筛选器已附加到线路,则对 BGP 社区列表的更新会自动通过建立的 BGP 会话传播前缀播发更改。 可以使用以下命令更新路由筛选器的 BGP 社区列表:
az network route-filter rule update --filter-name MyRouteFilter -n CRM -g ExpressRouteResourceGroupName --add communities '12076:5040' --add communities '12076:5010'
从 ExpressRoute 线路分离路由筛选器
右键单击线路并选择“ 取消关联”,从路由筛选器中分离线路。
从 ExpressRoute 线路分离路由筛选器后,不会通过 BGP 会话播发任何前缀。 可以使用以下命令从 ExpressRoute 线路分离路由筛选器:
$ckt.Peerings[0].RouteFilter = $null
Set-AzExpressRouteCircuit -ExpressRouteCircuit $ckt
从 ExpressRoute 线路分离路由筛选器后,不会通过 BGP 会话播发任何前缀。 可以使用以下命令从 ExpressRoute 线路分离路由筛选器:
az network express-route peering update --circuit-name MyCircuit -g ExpressRouteResourceGroupName --name MicrosoftPeering --remove routeFilter
清理资源
通过选择“ 删除 ”按钮删除路由筛选器。 在执行此作之前,请确保路由筛选器未与任何线路关联。
如果路由筛选器未附加到任何线路,则只能删除该筛选器。 在尝试删除路由筛选器之前,请确保路由筛选器未附加到任何线路。 可以使用以下命令删除路由筛选器:
Remove-AzRouteFilter -Name "MyRouteFilter" -ResourceGroupName "MyResourceGroup"
如果路由筛选器未附加到任何线路,则只能删除该筛选器。 在尝试删除路由筛选器之前,请确保路由筛选器未附加到任何线路。 可以使用以下命令删除路由筛选器:
az network route-filter delete -n MyRouteFilter -g MyResourceGroup
后续步骤
若要了解路由器配置示例,请参阅: