天天看點

HCNP Routing&Switching之BGP路由過濾和AS-Path-Filter

HCNP Routing&Switching之BGP路由過濾和AS-Path-Filter

AS-Path-Filter:從名字上就能知道該過濾器主要用于通過比對AS-Path屬性來進行路由過濾;對于滿足過濾器的條件我們就做某種操作即可;對于as-path過濾器來說,它是通過正規表達式來比對對應as-path;工作原理就是把對應路由的as-path當作字元串處理,滿足正規表達式的路由進行拒絕或允許操作;

  前文我們聊了下通過修改BGP路由屬性來影響路由,進而達到控制BGP路由的目的;回顧請參考https://www.cnblogs.com/qiuhom-1874/p/15495585.html;今天我們來聊一聊BGP路由過濾和AS-Path-filter過濾器的使用;

  BGP路由過濾

  BGP路由過濾是指對特定的路由通過政策或者過濾器在出方向或入方向做允許或拒絕,進而來達到控制路由的收發;

  示例:通過ip 字首清單比對要拒絕的路由,然後使用過濾工具過濾掉滿足條件的路由

  提示:ip字首清單、filter-policy工具使用請參考https://www.cnblogs.com/qiuhom-1874/p/15316188.html;這裡我們需要注意一點就是ip字首清單的預設規則是拒絕,是以對于沒有被ip字首清單比對的路由,我們應該放行;是以字首清單裡最後要添加放行其他所有路由;是以我們在BGP路由表中能夠看到7.7.7.7和8.8.8.8的路由;

  示例:使用filter-policy 對某個鄰居的出方向拒絕1.1.1.1的路由

  在R2上未使用filter-policy對發送給R4的路由做過濾,對應R4上bgp路由表情況

HCNP Routing&Switching之BGP路由過濾和AS-Path-Filter

  提示:可以看到對應在R4上能夠學習到1.1.1.1 /32的路由,對應下一跳分别有兩個;

  在R2的出方向對發送給R4的路由中,過濾掉1.1.1.1/32的路由,對應其他路由做放行操作

HCNP Routing&Switching之BGP路由過濾和AS-Path-Filter

  驗證:在R4上檢視BGP路由表,看看R2發送給R4的路由,對應1.1.1.1/32的路由是否被過濾掉了?

HCNP Routing&Switching之BGP路由過濾和AS-Path-Filter

  提示:可以看到R4上對于1.1.1.1/32的路由隻有R3為下一跳,R2發送給R4的其他路由R4上正常可以學習到;

  示例:使用字首清單直接對某個鄰居發送的路由進行過濾

  在R4上使用字首清單對R3發送到8.8.8.8/32的路由進行入方向過濾,其他路由不做過濾

  提示:可以看到此時R4上對于8.8.8.8/32的路由隻有R2發送的可以正常學習到;因為R3發送的8.8.8.8/32的路由在入方向就被過濾掉了;

  示例:在R1上使用路由政策對7.7.7.7/32的路由在出方向過濾

HCNP Routing&Switching之BGP路由過濾和AS-Path-Filter

  提示:路由政策中如果條件中是允許操作,則路由的去留取決route-policy的模式,deny就是拒絕,permit就是允許;如果條件中是拒絕操作,則路由的去留取決route-policy的預設規則;如上所示,在條件中允許7.7.7.7/32,在模式中拒絕,最終7.7.7.7/32的路由去留看模式;對于條件中沒有明确允許或拒絕其他路由,最終條件的預設規則是拒絕,是以對于其他沒有被條件比對的路由,最終的去留取決于route-policy預設模式;是以我們在route-policy後面添加一條允許所有路由,則放行其他未被字首清單比對到的路由;是以我們配置沒有問題的話,在R2上就學習不到7.7.7.7/32的路由,其他路由可以正常學習到;

  驗證:在R2上檢視BGP路由表,看看對應的7.7.7.7的路由它是否能夠學習到?

HCNP Routing&Switching之BGP路由過濾和AS-Path-Filter

  提示:可以看到此時R2的bgp路由表中就沒有7.7.7.7/32的路由,原因是R1并沒有把7.7.7.7/32的路由發送給R2;

  總結:通過上述實驗可以看到BGP路由過濾主要是通過過濾器,字首清單,路由政策等工具來進行的;都是在本地的出或入方向做過濾,最終是影響路由的收發;如果上述工具都在bgp裡都使用了,則首先全局filter-policy進行過濾,然後再單個鄰居使用filter-policy過濾,然後再單個鄰居字首清單,然後在路由政策的順序進行過濾;

  BGP AS-Path過濾器

  AS-Path-Filter:從名字上就能知道該過濾器主要用于通過比對AS-Path屬性來進行路由過濾;對于滿足過濾器的條件我們就做某種操作即可;對于as-path過濾器來說,它是通過正規表達式來比對對應as-path;工作原理就是把對應路由的as-path當作字元串處理,滿足正規表達式的路由進行拒絕或允許操作;

  常用正規表達式符号作用

HCNP Routing&Switching之BGP路由過濾和AS-Path-Filter

  特殊正規表達式含義

HCNP Routing&Switching之BGP路由過濾和AS-Path-Filter

  提示:對于本地始發地路由,對應as-path屬性是空,即比對條件就是空,正規表達式就為^$; .*表示比對所有路由,.*是表示比對任意字元0次或多次,即任意字元可有可無,即任意as-path都能比對,即所有路由的as-path都能滿足該正規表達式;_10_表示比對通過as10的路由,因為as-path隻要通過一個as就會記錄對應as号,是以隻要as-path裡包含10,則該路由一定是通過as 10的路由;如果是以10結尾的as-path,則一定是始發as10的路由;如果以10開頭的,則一定是相鄰鄰居的as一定是10,即接受相鄰as10的路由;

  示例:比對以12開頭中間任意字元最後以74結尾的as-path的路由

HCNP Routing&Switching之BGP路由過濾和AS-Path-Filter

  提示:即滿足上述as-path的路由都會被允許放行;

  示例:比對有23或43的as号的路由

HCNP Routing&Switching之BGP路由過濾和AS-Path-Filter

  提示:并不是3或4,而是23或43;

  示例:比對具有具有14,17,24,27,34,37的as号

HCNP Routing&Switching之BGP路由過濾和AS-Path-Filter

  提示:【1-3】表示連續的數字,即1、2、3;【47】表示4或7,即數字4或者數字7;組合其他就是14、17、24、27、34、37;

  示例:比對始發as170,且as34512和as170相鄰且通過as34512的路由;

HCNP Routing&Switching之BGP路由過濾和AS-Path-Filter

  示例:比對始發as170,并通過as621的路由

HCNP Routing&Switching之BGP路由過濾和AS-Path-Filter

  示例:使用as-path過濾器過濾掉本地始發as55路由

  建立as-path過濾器

  提示:as-path-filter 後面的1我們可以了解為是as-path過濾器的比對次序;多條as path是與的關系,即都要滿足才能被比對;

  在BGP裡調用as-path過濾器

HCNP Routing&Switching之BGP路由過濾和AS-Path-Filter

  提示:as-path過濾器也是有預設規則的,預設規則是拒絕操作,即沒有被正則比對到的路由,統統都是拒絕操作;是以我們看到的BGP路由表中,對應始發234的路由也一并被過濾掉;

  在as-path裡允許其他所有路由通過

HCNP Routing&Switching之BGP路由過濾和AS-Path-Filter

  再次檢視BGP路由表,看看對應始發234的路由是否恢複?

HCNP Routing&Switching之BGP路由過濾和AS-Path-Filter

  提示:可以看到始發as55的路由被過濾掉了,始發234的路由恢複正常;這是因為我們隻拒絕了始發as55的路由,允許了其他沒有被始發as55的路由;

作者:Linux-1874

出處:https://www.cnblogs.com/qiuhom-1874/

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利.