前文我們瞭解了路由策略工具Route-Policy相關話題,回顧請參考https://www.cnblogs.com/qiuhom-1874/p/15322135.html;今天我們來聊一聊策略路由相關話題;

  策略路由(Policy Based Route 基於策略的路由,簡稱PBR);我們知道路由策略的核心就是通過過濾工具將要處理的路由過濾出來,然後使用策略或呼叫工具將過濾出來的路由做某些動作,比如拒絕或者允許;如果我們需要修改路由屬性,則使用策略工具Route-Policy,然後使用呼叫工具在某個動態路由程序下應用對應的路由策略;路由策略的作用是通過各種工具影響路由表,從而實現影響資料的轉發;我們今天說的策略路由和前邊的路由策略,它們都是可以實現影響資料的轉發,即策略路由和路由策略的最終目的是一樣的;策略路由和路由策略不同的是,路由策略是影響路由表來實現影響資料包的轉發,而策略路由它並不會影響路由表,它是通過策略來定義轉發報文的規則,即打破了傳統路由選路規則;預設情況下路由器是通過路由表來轉發資料,而定義了策略路由的路由器,它會優先根據策略路由來轉發資料,如果對應報文沒有被策略路由匹配到,那麼對應報文會通過路由表來進行轉發;簡單講策略路由就是通過管理員定義規則來實現報文轉發,如果對應報文沒有被策略匹配到,那麼它還是會根據路由表來進行轉發;

  策略路由應用場景

  提示:我們可以制定策略來實現學生網段訪問外網走ISP1,教師網段訪問外網訪問ISP2;對應路由器的路由表對應網段的下一跳或出介面我們都可以不用管,直接根據自己的需求寫策略路由來描述對應流量的轉發過程;即我們可以根據制定策略路由實現資料包轉發根據對應資料包源地址選路(而路由表是通過目標地址,根本不看源地址);

  提示:策略路由除了可以實現通過源地址來選路以外,我們還可以通過不同應用來選路;比如上圖FTP的流量走s2/0,www流量走s2/1;對於路由策略我們根本無法做到根據不同應用流量來選路;

  路由策略和策略路由的區別

  提示:路由策略中,拒絕的將不會被通過,其原因是路由策略最終是影響路由表,然後對應資料包轉發已經是通過影響後的路由表,所以路由策略中明確拒絕的路由,對應路由表中也不會存在,沒有路由,很顯然資料包轉發也不能正常進行;但在路由策略中,拒絕的將做正常路由錶轉發;因為策略路由它不會去修改路由表,所以沒有被策略路由匹配上或者被拒絕的流量,都會再去根據路由表進行資料包轉發;路由策略和策略路由兩者最大的區別在於路由策略基於控制平面,為路由協議和路由表服務;而策略路由是基於轉發平面,為轉發策略服務;一個直接影響路由表,一個不影響路由表,隻影響滿足對應策略的資料轉發;

  策略路由規則

  提示:策略路由和路由策略規則語法都比較像,都有是以節點為單位,一個節點裡可以包含多個條件和apply 子句;都有名稱、匹配模式和節點編號;節點與節點之間的關係是或關係;節點裡如果有多個條件或apply 子句,則它們的關係是與關係,即多個條件都必須同時滿足,同時對應apply子句也會同時都被執行;

  策略路由匹配流程

  提示:策略路由的匹配流程和路由策略的匹配流程基本一樣,都是從上至下一次匹配每個節點,如果被某一節點匹配上以後,對應不再繼續向下匹配,匹配上的流量根據匹配模式,如果匹配模式是permit則執行apply子句;如果匹配模式deny則按照普通報文根據路由錶轉發;如果沒有被任何一個節點上的規則匹配,對應報文也會按照普通報文根據路由錶轉發;策略路由匹配規則和路由策略匹配規則唯一不同之處就是最後的預設規則,路由策略的預設規則是拒絕操作,而策略路由的預設規則是按照普通報文根據路由錶轉發;即最後被策略路由拒絕或沒有被策略路由匹配的報文最終都會當作普通報文根據路由表進行轉發處理;

  本地策略路由:本地策略路由是指經對本機下方的報文進行處理,對轉發到報文不起作用;

  提示:本地策略路由隻影響本機下發的報文,並不影響經過本機轉發的報文;

  介面策略路由:介面路由策略是指只對轉發到報文起作用,對本地下發的報文不起作用;

  提示:轉發報文是指不是本地傳送的報文,像這類報文只會被介面策略路由匹配,本地策略路由不會去匹配;簡單講,本地策略路由只能匹配本地下發的報文,而介面策略路由只能匹配被轉發的報文;

  實驗:如下拓撲,配置ospf

  R1的配置

sys
sys R1
int g0/0/0
ip add 172.16.0.1 24
int g0/0/1
ip add 172.17.0.1 24
int g0/0/2
ip add 192.168.12.254 24 ospf 1 router-id 1.1.1.1
area 0
net 172.16.0.1 0.0.0.0
net 172.17.0.1 0.0.0.0
net 192.168.12.254 0.0.0.0

  R2的配置

sys
sys R2
int g0/0/0
ip add 172.16.0.2 24
int g0/0/1
ip add 172.17.0.2 24
int g0/0/2
ip add 192.168.21.254 24 ospf 1 router-id 2.2.2.2
area 0
net 172.16.0.2 0.0.0.0
net 172.17.0.2 0.0.0.0
net 192.168.21.254 0.0.0.0

  client1的配置

  server1的配置

  驗證:檢視R1的路由表

  提示:可以看到R1學習到了192.168.21.0/24網段路由,且出介面和下一跳都有兩個;從上面的資訊可以看到R1去往192.168.21.0/24網段的流量會被172.16.0.0和172.17.0.0這兩條鏈路負載分擔;

  驗證:在R1上用ping命令測試,看看R1去往192.168.21.1的流量走哪一條鏈路?

  提示:左邊是R1 的g0/0/0口抓包,右邊是g0/0/1口抓包;可以看到R1tracert 192.168.21.1走的是172.17.0.2下一跳;

  在R1上指定策略路由,讓ping 192.168.21.1的流量下一跳是172.16.0.2

  在R1上新建acl匹配去往192.168.21.1的流量

  在R1上新建策略路由,呼叫acl 3000,執行修改下一跳地址為172.16.0.2

  在R1上呼叫策略路由,再次ping 192.168.21.1 ,抓包看看對應報文會走那邊?

  提示:可以看到呼叫了策略路由以後,對應R1ping R2的流量就走g0/0/0口了;因為下一跳為172.16.0.2和R1的g0/0/0口直連;

  驗證:用客戶端ping服務端,看看對應流量是否會走172.16.0.2?

  提示:可以看到從客戶端轉發的流量並不會受本地策略的影響,它還是走沒有做本地策略前172.17.0.2的鏈路;從上面實驗可以看到本地策略路由對轉發的流量是不生效的;

  介面策略路由配置

  介面策略路由是通過流策略技術實現;流策略是指流分類和流行為關聯;流策略形成了模組化配置最大優點是可以節省配置,支援匹配修改;流分類我們可以理解為流量匹配分類工具,它主要將對應流量抓去出來,進行分類;流行為我們可以理解為對流量的處理動作的描述;比如打標籤、重定向、負載分擔、報文分片、流量限速、流量統計等等;流策略就是呼叫流分類和流行為關聯的呼叫用工具,即我們在那個介面的那個方向應用流分類和流行為;

  實驗:還是上述實驗拓撲,使用流分類過濾FTP流量、調整FTP流量鏈路或www流量鏈路

  驗證:用客戶端訪問服務端的FTP和HTTP服務,抓包看看對應流量是怎麼走的

  提示:可以看到FTP的流量來回都是走的G0/0/0口到達伺服器,HTTP的流量來回都是走g0/0/1口;

  在R1上建立ACL匹配FTP流量

  在R1上建立流分類,呼叫acl name FTP

  提示:建立流分類,需要給流分類取一個名稱,以示區分其他流分類;在流分類裡用if-match 語句呼叫acl;這裡acl可以寫acl編號,或者是acl名稱;

  在R1上建立流行為

  提示:以上命令表示建立一個名為redirect-g0/0/1的流行為,具體動作是重定向下一跳地址為172.17.0.2;

  在R1上建立流策略

  提示:建立流策略就是把流分類和流行為進行關聯的過程;

  在R1的g0/0/2介面呼叫流策略filter-FTP-to-g0/0/1

  提示:介面策略路由只能在介面的入方向呼叫,因為出方向的流量是經過路由表選路以後才能匹配到;

  驗證:檢視路由器流策略應用的介面

  提示:可以看到我們建立的流策略在R1的g0/0/1口應用著;

  驗證:現在用客戶端訪問服務端FTP服務,看看對應流量是否是我們流策略定義的走呢?

  提示:可以看到現在客戶端訪問服務端FTP服務,對應流量不再從g0/0/0口發出,而是根據我們定義的流策略從g0/0/1口發出;