1. 程式人生 > 實用技巧 >PBR策略路由

PBR策略路由

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

R4telnet 請求去往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文件