針對使用 PowerShell 的 Microsoft 對等互連設定路由篩選
路由篩選是一種透過 Microsoft 對等互連使用某些支援服務的方式。 這篇文章中的步驟可協助您設定和管理 ExpressRoute 線路的路由篩選。
透過 Microsoft 對等互連,既可存取 Microsoft 365 服務 (例如 Exchange Online、SharePoint Online 和商務用 Skype),也可以存取 Azure 公用服務 (例如儲存體和 SQL DB)。 Azure 公用服務可依每個區域選取,但無法依每個公用服務加以定義。
在 ExpressRoute 線路中設定 Microsoft 對等互連時,與這些服務相關的所有前置詞都會透過建立的 BGP 工作階段來進行公告。 BGP 社群值附加至每個前置詞,來識別透過前置詞提供的服務。 如需 BGP 社群值及其對應服務的清單,請參閱 BGP 社群。
與所有 Azure 和 Microsoft 365 服務的連線會導致大量的前置詞透過 BGP 進行公告。 大量前置詞會大幅增加網路內路由器所維護的路由表大小。 如果您打算只取用透過 Microsoft 對等互連所提供的一組服務,您可以透過兩種方式降低路由表的大小。 您可以:
在 BGP 社群上套用路由篩選器,以篩選掉不必要的前置詞。 路由篩選是標準的網路作法,經常在許多網路中使用。
定義路由篩選器,並將其套用至您的 ExpressRoute 線路。 路由篩選器是新的資源,可讓您選取您計畫透過 Microsoft 對等互連取用的服務清單。 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 線路必須處於已佈建及已啟用的狀態。
- 建立 Microsoft 對等互連,如果您直接管理 BGP 工作階段。 或者,讓您的連線提供者為您的線路佈建 Microsoft 對等互連。
Azure Cloud Shell
Azure Cloud Shell 是裝載於 Azure 中的互動式殼層環境,可在瀏覽器中使用。 您可以使用 Bash 或 PowerShell 搭配 Cloud Shell,與 Azure 服務共同使用。 您可以使用 Cloud Shell 預先安裝的命令,執行本文提到的程式碼,而不必在本機環境上安裝任何工具。
要啟動 Azure Cloud Shell:
選項 | 範例/連結 |
---|---|
選取程式碼或命令區塊右上角的 [試試看]。 選取 [試試看] 並不會自動將程式碼或命令複製到 Cloud Shell 中。 | |
請前往 https://shell.azure.com,或選取 [啟動 Cloud Shell] 按鈕,在瀏覽器中開啟 Cloud Shell。 | |
選取 Azure 入口網站右上方功能表列上的 [Cloud Shell] 按鈕。 |
若要使用 Azure Cloud Shell:
啟動 Cloud Shell。
選取程式碼區塊 (或命令區塊) 上的 [複製] 按鈕以複製程式碼或命令。
透過在 Windows 和 Linux 上選取 Ctrl+Shift+V;或在 macOS 上選取 Cmd+Shift+V,將程式碼或命令貼到 Cloud Shell 工作階段中。
選取 Enter 鍵執行程式碼或命令。
登入您的 Azure 帳戶並且選取您的訂用帳戶
如果您使用 Azure Cloud Shell,您可以在按一下 [試用] 之後自動登入您的 Azure 帳戶。 若要在本機登入,請以提高的權限開啟 PowerShell 主控台並執行 Cmdlet 以連線。
Connect-AzAccount
如果您有多個訂用帳戶,請取得 Azure 訂用帳戶的清單。
Get-AzSubscription
指定您要使用的訂用帳戶。
Select-AzSubscription -SubscriptionName "Name of subscription"
取得前置詞和 BGP 社群值的清單
使用下列 Cmdlet 來取得與可透過 Microsoft 對等互連存取的服務相關聯 BGP 社群值和前置詞清單:
Get-AzBgpServiceCommunity
製作您想要在路由篩選中使用的 BGP 社群值清單。
建立路由篩選器和篩選規則
路由篩選只能有一個規則,且規則的類型必須是 Allow
。 此規則可以擁有與其相關聯的 BGP 社群值清單。 az network route-filter create
命令只會建立路由篩選資源。 建立資源之後,您必須建立規則,然後將它附加到路由篩選物件。
若要建立路由篩選資源,請執行下列命令:
New-AzRouteFilter -Name "MyRouteFilter" -ResourceGroupName "MyResourceGroup" -Location "West US"
若要建立路由篩選規則,請執行下列命令:
$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
將路由篩選器連結至 ExpressRoute 線路
若您只有 Microsoft 對等互連,請執行下列命令,將路由器篩選附加在 ExpressRoute 線路上:
$ckt = Get-AzExpressRouteCircuit -Name "ExpressRouteARMCircuit" -ResourceGroupName "MyResourceGroup"
$index = [array]::IndexOf(@($ckt.Peerings.PeeringType), "MicrosoftPeering")
$ckt.Peerings[$index].RouteFilter = $routefilter
Set-AzExpressRouteCircuit -ExpressRouteCircuit $ckt
常見工作
取得路由篩選器的屬性
若要取得路由篩選的屬性,請使用下列步驟:
執行下列命令以取得路由篩選資源:
$routefilter = Get-AzRouteFilter -Name "MyRouteFilter" -ResourceGroupName "MyResourceGroup"
藉由執行下列命令以取得路由篩選資源的路由篩選規則:
$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"
後續步驟
如需路由器設定範例的相關資訊,請參閱: