前文我們瞭解了路由控制技術中路由策略和路由匹配工具IP-Prefix相關話題,回顧請參考https://www.cnblogs.com/qiuhom-1874/p/15314262.html;今天我們來聊一聊路由過濾工具Filter-Policy相關話題;

  Filter-Policy

  Filter-Polciy是一種常用的路由過濾工具,只能過濾路由,無法過濾LSA,不能修改路由屬性;它可以直接呼叫條件工具ACL或IP-Prefix 或者呼叫route-policy工具;在路由策略裡擔任著呼叫工具的角色;我們知道路由的學習是有方向的,相對來說控制路由或過濾路由也是有方向的;我們可以在路由器的出方向或入方向進行路由過濾,最終結果都是將對應路由過濾掉;

  距離向量路由協議中路由過濾

  提示:距離向量路由協議是直接傳播的是路由資訊,所以我們可以選擇在路由發出或入的方向上進行過濾,不管在出或入方向進行過濾,對應最後的結果都是一樣的;一般根據現網環境來決定到底是在哪個方向上進行過濾比較好;

  提示:距離向量路由協議中,路由資訊是直接傳播的,所以在鏈路途中任意路由器在過濾了某條路由,隨後後面的路由器就學習不到對應的路由;比如上圖,我們在交換機的路由入方向過濾掉192.168.3.0以後,對應C交換機就學習不到對應192.168.3.0這條路由;當然如果在交換機A的出方向過濾掉192.168.3.0,則隨後交換機B和交換機C都學習不到對應192.168.3.0這條路由;

  鏈路狀態路由協議中路由過濾---單區域

  提示:上圖是OSPF單區域里路由過濾的示意圖;我們知道鏈路狀態路由協議主要是通過傳播LSA,建立資料庫,然後通過LSDB資料庫結合SPF演算法來進行計算路由;所以對於我們要想過濾掉某條路由,我們只能在某個路由器的生成路由資訊時來影響,即只能在路由的入方向來過濾某些路由;但是對於ospf來說,在單區域裡主要通過1類或2類LSA在整個區域內不泛洪,從而同步LSDB資料庫生成路由,我們在區域中某臺路由器上進行路由過濾其實不影響其他路由器;原因是單區域裡的LSDB資料庫是相同的,對應路由是依靠LSDB資料庫中的內容算出來的;入上圖所示,我們在交換機B上過濾掉10.1.1.0/24這條路由,但對於交換機C來說,它的路由表中還是可以正常學習到10.1.1.0/24的路由;這是因為路由過濾並不能過濾LSA,其次單個區域中的所有路由器的LSDB都是同步的;

  鏈路狀態路由協議中路由過濾---多區域---區域間路由

  提示:對於多區域,區域間的路由傳播主要通過3類LSA;其實3類LSA就是把對應區域裡的路由進行打包然後通過3類LSA的格式傳送給其他區域;這也意味著如果我們在一個區域的abr上過濾掉某些路由,那麼對於它傳遞給其他區域的路由也就無法學習到對應被過濾掉的路由;其原因是多區域,每個區域的LSDB資料庫是不相同的,其次區域間路由通過abr傳送3類LSA,對應內容就是abr路由器所在區域的路由資訊;如上圖,我們在交換機B上的入方向過濾掉10.1.1.0/24這條路由,那麼對於交換機B向區域1裡交換機c傳送的3類LSA裡面就沒有10.1.1.0/24這條路由;所以交換機C也是學習不到10.1.1.0/24的路由;

  鏈路狀態路由協議中路由過濾---多區域---外部引入路由

  提示:對於內部ospf的路由還是隻能在計算路由資訊生成時,即路由學習的入方向進行過濾;對應外部引入的路由,我們可以通過路由發出的方向進行過濾;外部路由引入只所以能夠在出方向進行過濾,其主要原因是路由資訊實現存在asbr的路由表中,在向其他路由器傳送時,是通過路由表中的路由資訊,生成對應的5類LSA,所以我們在發出5類LSA時過濾掉路由,對應5類LSA裡就不會有對應路由,從而其他路由器也就無法通過5類LSA學習到對應的外部路由;

  總結:距離向量路由協議路由過濾

  提示:距離向量路由協議的路由過濾我們可以在入和出兩個方向上進行過濾,因為路由向量路由協議是直接傳播的路由資訊;

  總結:鏈路狀態路由協議路由過濾

  提示:鏈路狀態路由協議路由過濾主要在入方向進行過濾;其主要原因是鏈路狀態路由協議通過傳播LSA構建LSDB資料庫,而路由過濾只能過濾路由資訊,對於LSA它並不能過濾;所以鏈路狀態路由協議中過濾路由,對應LSDB在相同區域裡是同步的;我們過濾路由只能在路由的入方向,即通過spf在生成路由時來影響;對於外部路由引入我們是在發出時進行過濾;發出時過濾影響的是所有其他路由器;之所以外部路由能在asbr的出方向過濾,是因為外部路由事先存在ip路由表單中,在發出時過濾,對應生成5類LSA裡就不會包含過濾掉的路由,從而其他路由器也就無法通過5類LSA學習到對應ASBR過濾掉的路由;

  實驗:如下拓撲,配置RIP,使用路由過濾工具Filter-Policy過來路由資訊

  R1的配置

sys
sys R1
int g0/0/0
ip add 12.0.0.1 24 int lo 1
ip add 1.1.1.1 32
int lo 2
ip add 2.2.2.2 32
int lo 3
ip add 3.3.3.3 32 rip 1
ver 2
net 12.0.0.0
net 1.0.0.0
net 2.0.0.0
net 3.0.0.0

  R2的配置

sys
sys R2
int g0/0/0
ip add 12.0.0.2 24 int lo 1
ip add 4.4.4.4 32
int lo 2
ip add 5.5.5.5 32
int lo 3
ip add 6.6.6.6 32 rip 1
ver 2
net 12.0.0.0
net 4.0.0.0
net 5.0.0.0
net 6.0.0.0

  驗證:檢視R2或R1的路由表,看看是否學習到對方的路由資訊?

  提示:可以看到在R2上能夠正常學習到R1的lo介面路由;

  在R2上使用IP-Prefix 工具匹配1.1.1.1/32的路由資訊

  在R2的rip程序中,路由入方向只允許1.1.1.1/32的路由

  驗證:檢視R2的路由表,看看對應1.1.1./32的路由是否被過濾掉了呢?

  提示:可以看到此時R2只能學習到1.1.1.1/32的路由;之前的2.2.2.2和3.3.3.3就被過濾工具Filter-policy工具呼叫ip-prefix的預設策略給拒絕掉了;這裡需要說明一點,filter-policy工具呼叫ip-prefix作為條件來過濾路由,預設規則是拒絕操作;如果我們需要拒絕某條路由,允許其他路由,我們需要在ip-prefix裡寫上permit 0.0.0.0 0 less 32;

  在R2上新建字首列表規則,拒絕4.4.4.4/32的路由,允許其他所有路由

  在R2的出方向使用路由過濾工具filter-policy呼叫ip-prefix test1進行路由過濾

  驗證:在R1上檢視路由表,看看對應4.4.4.4的路由是否被過濾掉了呢?

  提示:可以看到對應4.4.4.4/32的路由R1沒有被學習到,其原因是R2在傳送路由資訊時通過filter-policy工具呼叫ip-prefix將4.4.4.4/32的路由拒絕掉了;

  實驗:如下拓撲,配置ospf,使用filter-policy工具呼叫ip-prefix進行路由過濾

  R3的配置

sys
sys R3
int g0/0/0
ip add 34.0.0.3 24
int lo 1
ip add 1.1.1.1 32
int lo 2
ip add 2.2.2.2 32 ospf 1 router-id 3.3.3.3
area 0
net 34.0.0.0 0.0.0.255

  R4的配置

sys
sys R4
int g0/0/0
ip add 34.0.0.4 24
int g0/0/1
ip add 45.0.0.4 24 ospf 1 router-id 4.4.4.4
area 0
net 34.0.0.0 0.0.0.255
area 1
net 45.0.0.0 0.0.0.255

  R5的配置

sys
sys R5
int g0/0/0
ip add 45.0.0.5 24 ospf 1 router-id 5.5.5.5
area 1
net 45.0.0.0 0.0.0.255

  在R3新建ip-prefix 匹配1.1.1.1/32的路由

  在R3上將直連路由注入到ospf中,然後使用路由過濾工具呼叫ip-prefix 在出方向

  驗證:檢視R4或R5的ospf路由表,看看對應1.1.1.1的路由是否存在路由表?

  提示:可以看到在R4學習到的外部路由中就只有1.1.1.1/32的路由,2.2.2.2/32的路由被預設規則給拒絕掉了;

  在R4上建立字首列表匹配1.1.1.1/32路由

  在R4的入方向拒絕1.1.1.1/32的路由,看看對應R5是否會受影響?

  驗證:檢視R4的路由表,看看1.1.1.1是否被拒絕?

  提示:可以看到R4本地路由表沒有1.1.1.1的路由了;這裡需要注意一點,鏈路狀態路由協議在入方向過濾路由,只是影響到ip路由表中的路由,並不影響協議路由表;即ospf路由表裡還是會有1.1.1.1的路由;

  驗證:在R5上檢視路由表,看看R5是否會受影響?

  提示:可以看到R5的ip路由表裡還是有1.1.1.1的路由;但是34.0.0.0/24的路由被過濾掉了;其原因是在R4的入方向過濾了1.1.1.1/32,並且沒有允許其他路由通過,所以34.0.0.0/24的路由也被過濾掉,然後R4生成3類LSA中就沒有34.0.0.0/24的路由,所以到達R5時,對應34.0.0.0/24的路由不會被R5學習到;對應1.1.1.1這個路由,它本身就是R3產生的5類LSA,在全網傳播,雖然R4在入方向過濾掉1.1.1.1,但不影響R3傳送的5類LSA向R5傳播;所以我們在R5上能夠看到1.1.1.1的路由,34.0.0.0/24的路由看不到;

  通過上述實驗可以看到鏈路狀態路由協議在路由入方向過濾路由,只是影響本地到ip路由表裡的路由,並不影響其他路由器的路由(本地區域或外部路由);對於外部路由,只有在ASBR出方向過濾時,對應其他路由器才會受到影響;對於區域間路由,如果abr在入方向沒有被允許,則後續的其他區域路由器也不會學習到對應區域間的路由;對於abr出方向過濾路由是沒有意義的,也不會生效,即出方向過濾路由只針對外部路由引入有效,區域間路由並不會生效;