1. 程式人生 > 實用技巧 >prefix-list 字首列表

prefix-list 字首列表

Prefix-list路由字首列表

其實說白話講,和ACL 的做用是一樣的,就是能夠更加精準的,更加方便的匹配路由條目

它同樣可以和distribute-list 以及route-map ,做路由重分發策略時使用,

角色也是相同的,和distribute-list相結合使用時,prefix佔有決定權

而和route-map結合使用時,route-map決定是生是死,

再有就是prefix-list相對於acl而言,只有當出現很多很多條路由時,才會顯得那麼出眾,如果一兩條而言,完全沒有必要的。

從這一點看出來,route-map在不管是路由策略,還是策略路由中,都佔有很重要的一席之地

命令解釋

(conifg)#ip prefix-list xx permit\deny x.x.x.x/x ge x le x

不支援數字編號,只可以命名,預設以5遞增

x.x.x.x/x 的意思就是要求去匹配的字首 以及相同的掩碼位。什麼意思?

比如 192.168.0.0 /24

192.168.1.0 /24

這兩個條目有哪些字首部份是肯定相同的?

192.168部份相同,不相同的我都用0來代替。

那麼我就可以這樣寫

192.168.0.0/16 ge 24 le 24

抓取路由字首為192.168.0.0的條目,/16的意思是前面16位必須相同,

Ge/le 標記為掩碼位的長度,GE是≥,LE是≤,此時我寫的是大於等於24,且小於等於24,其意思就是我只匹配為/24長度掩碼的條目。

這條命令的意思就是

我要匹配帶有192.168.0.0前16位一模一樣的條目,並且掩碼為24位的。

幾種常用的prefix-list命令,適用於抓取不同型別的路由條目字首

#ip prefix-list wfy permit 192.168.0.0/24 ge 24

// 匹配某一條特定的路由條目 //掩碼大於等於24位

#ip prefix-list wfy permit 0.0.0.0/0

//匹配預設路由條目全0

#ip prefix-list wfy permit 0.0.0.0/0 ge 32

// 匹配所有主機條目,因為主機條目都是255.255.255.255,掩碼大於32位

#ip prefix-list wfy permit 0.0.0.0/0 le 32

// 匹配所有條目,因為條件是小於等於32,這是所有路由條目都能滿足的

Ok

來看個例項

如圖中所示,

R1—R2執行eigrp

R2—R3執行ospf

R2負責將兩端的協議進行重分發

但是要應用路由策略

要求1 ,在R2上拒收來自於/24網段的條目,使用+prefix-list+distribute

ACL可以實現嗎?

Access-list 1 per 192.168.0.0 ????完了,沒有了?//至此1條

那這樣兒的話,

你說,是192.168.0.0---192.168.6.0以 /16的形式抓取的,還是以/24的形式抓取的?

如果是/24的型別抓取,請問,我是不是隻抓取了192.168.0.1這一個地址?

如果是/16的型別抓取,請問,我是不是把0.0-6.0的所有網段都抓取了?

當然也不是不能分著寫,也可以針對於精確的掩碼輸入,但是不要忘了,如果路由條目很多呢?幾百條,你也要一條一條的寫嗎?我們是幹什麼的?能省事兒,絕對不費事兒,幹完就走......

所以,這個時候,一個針對於路由字首的列表,出現了,

對於抓取路由條目方面,它要強ACL幾條街。

我們來具體的看一下它的一個命令格式,來分析一下為什麼

(實驗一會兒再說)

(config)# ip prefix-list xx permit/deny x.x.x.x/x ge x le x

名稱抓取/拒絕 具體的網段和掩碼

最後ge 大於等於le 小於等於

回到例項中

要求1 ,在EIGRP重分佈到ospf時,只保留4.0/5.0/6.0三個條目,

思路,先要將0.0 1.0 2.0 3.0 這三個網段進行彙總,此時用到的就是cidr

4個子網,那就是2的2次,也就是上兩位,原24 變成了22

那麼在prefix-list中,後面還有一個選項,就是大於等於, 和小於等於,

我們該用哪個呢~

由於其它網段都是/24的,為了不擴大範圍而影響其它網,那麼我們就限制在24嘍~

具體配置

R2(config)#ip prefix-list 22 permit 192.168.0.0/22 ge 24 le 24

//名字為22 網段為/22 掩碼控制在24(必須=24)

(192.168.0.0/24 192.168.1.0/24 192.168.2.0/24 192.168.3.0/24)4個地址如果彙總成/22的,是一個超,如果有/25的條目我不管,當然這裡可以寫成le 32,有可能會更好理解一些.

R2(config)#route-map 22 deny 10     //route-map定義確認還是拒絕條目

R2(config-route-map)#match ip add prefix-list 22    //關聯prefix字首列表

R2(config-route-map)#exit

R2(config)#route-map 22 permit 20     //允許其它所有

R2(config-router)#redistribute eigrp 1 subnets route-map 22   //重分佈呼叫route-map

OK ,R3上看一下具體的條目變化

以看到,只有4.0/5.0/6.0這三個條目了,其它的全部幹掉了

這些條目R2上可都是有的,是在分發的過程中被幹掉的。

要求2 在R3 上配置分發列表,不要4.0、5.0只保留6.0條目,使用prefix-list來實現

要求一條命令抓取條目

分析,4.0 5.0 兩個條目,可以看做是兩個子網,2的1次方=2,那麼就等於是借了1位,

由原來的/24 變成了/23也就是192.168.4.0 /23,包含了這兩個子網,那麼配置如下

R3(config)#ip prefix-list r1 deny 192.168.4.0/23 le 24

//義拒絕條目/23超網,但是要求 能小於等於/24的條目

R3(config)#ip prefix-list r1 per 0.0.0.0/0 le 32   //允許其它小於等於/32的條目

R3(config)#router ospf 1

R3(config-router)#distribute-list prefix r1 in    //distribute,掛接prefix-list

再次提醒,prefix-list 和acl,這兩者與distribute-list的組合使用效果是一樣的,起到決策的都distribute-list, acl 和prefix-list,只有當這兩個技術遇到route-map 之後才變成小弟,因為確實沒有人家牛Route-map永遠佔據主導地位不可撼動

OK ,再反來,

要求3

Ospf進eigrp 後,只保留172.16.1.0/242.0、3.0、6.0 但4.0和5.0不

分析,

0.0/1.0/2.0/3.0/22為一組,

繼續走,

C 172.16.4.0/25is directly connected, Loopback4

C 172.16.5.0/26is directly connected, Loopback5

C 172.16.6.0/24is directly connected, Loopback6

我擦嘞,什麼情況,這兩個掩碼長度不一樣啊~

不一樣又能怎麼樣呢?幹就完了,

分析

4.0/25 5.0/26

如果寫成這樣行不行

Ip prefix-list r3 permit 172.16.4.0/24 ge 25

不行,為什麼?

為條件無法滿足,172.16.4.0/24裡面無法包含172.16.5.0 明白?

那麼就只能這樣兒了,

 Ip prefix-list r3 permit 172.16.4.0/23 ge 24

抓取/23的掩碼,然後別外條件就是大於等於/24,這樣其它網段就不受影響了,

只有/26的那條5.0會受影響,6.0是/24的,不會受到影響

配置如下

R2(config)#ip prefix-list r2 permit 172.16.4.0/23 ge 24 le 32

 //其實最後的LE 32 寫不寫都無所謂的,不過這是一個好習慣 ,可以規定範圍

R2(config)#route-map r2 deny 10

R2(config-route-map)#match ip address prefix-list r2

R2(config-route-map)#exit

R2(config)#route-map

R2(config)#route-map r2 per 20

R2(config-router)#$e ospf 1 metric 10000 100 255 1 1500 route-map r2   

   //重分佈呼叫route-map

看到了吧

其實並不難,只是你如何去計算更為準確的子網cidr地址,以及它的範圍

最後再提問一下,

像上面最後一個要求可以有幾種實現的方法?

1 acl+distribute-list

2 acl+route-map

3 prefix-list+distribute-list

4 prefix-list+route-map

而且有時也完全沒有必須要進行CIDR,只要你匹配前面一樣的,知道多少位就可以了,最主要的是在/X後面的這個/上,以及合理使用GE和LE

這一塊兒如果有不明白的,我這裡還有自己錄製的視訊,視訊看起來更加直觀

----------------------------------------

CCIE成長之路 ---梅利