PBR策略路由
Policy-based routing
之前所學習的是路由策略,這兩個是完全不同的東西
路由策略:必須有路由,然后針對於路由施加策略
策略路由:很策略,后路由,可以沒有路由
啥意思,
這樣說,當一個數據包進入到路由器以后,
是先查策略,再查路由,然后再進行轉發。
當然了,這項技術也是離不開route-map的。
配置思路
1 ACL匹配數據
2 route-map定義
3 接口掛接route-map。(PBR)
定義好的PBR,是一定要進行掛接的,如果不掛接,顯然是不生效的,
另外,所掛接的接口也是有講究的,是數據來的方向。
針對的數據有兩種,一種是經過這里的,一種是本地的,所使用的掛接命令也是不同的,后面會詳細講到的。
應用場景
局域網出口網關,當出現多條路徑時,可以使用PBR來實現指定選路,而不需要設置路由策略。
例1
如圖所示,
R1和R2上分別做默認路由指向R3,
R3做為r4-r4兩台模擬pc的GW,
在R1和R2上分別有一個loop 接口,地址都是100.1.1.1
R1,R2開啟TELNET 功能
現要求,
R4 icmp 請求讓其去往R2
R4 telnet 請求去往R1
R5 icmp請求去往R1
R5 telnet 請求去往R2
在R3上不做任何的路由指向
分析,
考慮到數據走向的問題,就要借助PBR,(policy based routing)策略路由
策略路由的實現也無外乎route-map
而route-map還要依靠acl,
剛才要求中提到的,有關於數據類型的,如telnet ,icmp,那么就可以使用較為精確的擴展ACL來幫助route-map實現這一功能,
具體實施
配置IP地址我就不說了
1 定義ACL,抓取具體的主機去往何處目標,干什么(更加的精細)
在實際的工作環境中,應該是針對網段的
Router(config)#access-list 100 permit icmp host 192.168.1.4 host 100.1.1.1 echo Router(config)#access-list 101 permit icmp host 192.168.1.5 host 100.1.1.1 echo Router(config)#access-list 102 per tcp hos 192.168.1.4 host 100.1.1.1 eq 23 Router(config)#access-list 103 per tcp hos 192.168.1.5 host 100.1.1.1 eq 23
2 編輯route-map
Router(config)#route-map wfy per 10 Router(config-route-map)#match ip add 100 Router(config-route-map)#set ip next-hop 23.0.0.1 ///強制指定下一跳為23.0.0.1,
也就是R4請求的icmp去往R2
Router(config-route-map)#exit
Router(config)#route-map wfy per 20 Router(config-route-map)#match ip add 101 Router(config-route-map)#set ip next-hop 13.0.0.1 //R5請求的ICMP去往R1 Router(config-route-map)#exit
Router(config)#route-map wfy per 30 Router(config-route-map)#match ip add 102 Router(config-route-map)#set ip next-hop 13.0.0.1 //R4的telnet 去往R1 Router(config-route-map)#exit
Router(config)#route-map wfy per 40 Router(config-route-map)#match ip add 103 Router(config-route-map)#set ip next-hop 23.0.0.1 //R5的TELNET請求去往R2
3 掛接
Router(config-route-map)#inter f1/0 Router(config-if)#ip policy route-map wfy 將策略掛接在接口上,使用route-map wfy
問:為什么要將它掛在接口上,而為什么又非得把它掛接在f1/0口上呢?
答:策略路由必須掛接在接口上才會生效,另外,這要考慮到數據的走向,
做為R4-R5的GW路由器,F1/0口是他們的網關地址,
當路由進入到接口以后,就要先查策略,如果有相應的策略就要按照策略進行轉發,
如果沒有策略的話,就要直接進行路由表的查詢,
因為策略的優先級高於路由,所以必須讓它在查路由表之前運行策略。
說人話,在查找策略的時候必須得有東西可查,要不然就查路由表出去了,策略也就沒生效
4 測試
R4 進行telnet測試,去的是R1,並且可以相連
R5進行telnet測試,去的是R2,並且可以連接
至於icmp
我們要在R1 和 R2上開啟debug ip icmp
來檢測一個收到的echo包
R4是去往R2的,沒問題
OK ,也是沒有問題的。
至此實驗結束
通過此實驗得出以后結論
1 使用PBR 在定義route-map以及acl時,可以更加靈活的定義數據的走向,而不單純的是路由
2 在部署PBR時,本地可以沒有路由,但是必須兩點互通,強制性的指向下一跳方向
其實PBR的應用方法還有幾個,我們不防來看一下,
1 使用PBR實現多個下一跳
什么意思呢
就是當擁有多個下一跳時,可以通過pbr去設置他們的順序,一條命令全部搞寫,而不用再寫多條,當第一個不可達,自動切換到第二個,第二個不行,則第三個,....
就是這樣
R4(config-route-map)#set ip next-hop 14.0.0.1 24.0.0.2 34.0.0.3
直接在后面寫個多next-hop即可
R4(config)#access-list 1 per host 192.168.1.10 R4(config)#route-map R4(config)#route-map aa per 10 R4(config-route-map)#ma ip add 1 R4(config-route-map)#set ip next-hop 14.0.0.1 24.0.0.2 34.0.0.3 //指定多個下一跳地址
然后就可以去模擬斷到R4的F0/0,F0/1口,看效果啦~
2 PBR的下一跳(隔跳),next-hop非直連
那么非直連,肯定是要有路由的,確認自己的路由表中有這個地址的可達條目,且兩端可以通信即可。
R1為一跳,R3為第二跳,最后的R4為備選默認路由,如果沒有PBR策略路由最后則執行默認路由,優先級不同嘛.
下面只使用了一台PC,來進行模仿,省事兒了,
R5(config)#access-list 1 per host 92.168.1.10 R5(config)#route-map wfy per 10 R5(config-route-map)#ma ip add 1 R5(config-route-map)#set ip next-hop 15.0.0.1 R5(config-route-map)#set ip next-hop recursive 23.0.0.3 //設置可達的下一跳地址 R5(config-route-map)#ip route 0.0.0.0 0.0.0.0 45.0.0.4 R5(config)#inter f2/0 R5(config-if)#ip policy route-map wfy R5(config-if)#end
以一是幾個PBR常見的場景,沒有路由也可以正常使用,
那PBR有沒有可能是針對自己本設備上生的數據進行設置方向呢?
當然可以
但是針對於本地而言,要在全局下進行
R1(config)#ip local policy route-map xxx
然后,並不是所有的pbr都優先於路由,有一種特殊的配置就是在路由之后的,
R1(config-route-map)#set ip default next-hop x.x.x.x
可如果PBR結合NAT使用呢? 如何實現呢?
敬請期待宿主NAT文檔