prefix-list

一條完整的路由信息是由:前綴(網絡號)+前綴長度(掩碼長度)=完整的路由條目

 

前綴列表:

ip prefix-list {list-name I list-number} [seq seq-value] {deny I permit} network/length [ge ge-νalue] [le le-value]

命令解釋:

list-name:創建的前綴列表名稱(區分大小寫)

list-number:創建的前綴列表編號

seq seq-valueprefix-list 語句的32 位序列號,用於確定過濾時語句的處理順序。默認序列號以5的步長遞增(51015 等),方便後期插入或刪除,seq序列號可以省略不寫,系統自動遞增。

deny I permit:匹配時採取的措施拒絕或者匹配

network/length:要匹配的前綴長度

ge ge-νalue:要匹配的前綴長度範圍,ge代表大於或等於意思

le le-νalue:要匹配的前綴長度範圍,le代表小於或等於意思

關鍵字gele都是可選的,它們用於要匹配前綴長度的範圍,gele必須滿足以下條件:

length < ge-value < le-value <=32

上邊條件的意思是:前綴長度的值要小於ge的值,ge的值要小於le值,le值小於等於32

舉個例子:

image.png

系統提示:% 172.16.1.0 /24的前綴範圍無效,請確保:len < ge-value <= le-value

因爲ge沒有使用規範,所以上邊prefix-list這樣寫是不行的,系統會報錯,你ge的值必須大於network/length的值。

 

gele在使用中還有其他隱含語意:

不寫gele那麼ge=le=network/length

只寫le不寫ge那麼ge= network/length

只寫ge不寫le那麼le=32

 

例一:

Router(config)#ip prefix-list 10 permit 172.16.1.0/24

(匹配前24172.16.1.* ,掩碼必須爲24位)

上邊prefix-list沒有寫gele,那麼gele的值都等於network/length也就是/24。系統將使用/24這個值去嚴格匹配路由的前綴和前綴長度兩部分。(不懂前綴和前綴長度的請看文章第一句話)

下邊:

網絡號:172.16.1.0/24

廣播地址:172.16.1.255

可用IP範圍:172.16.1.1~172.16.1.254

上邊的路由都會被上邊的prefix-list條目匹配進來

但是像下邊:

172.16.1.0/25

172.16.1.0/26

172.16.1.0/27

這些路由,但凡你掩碼不是/24的,是一定不會被上邊的prefix-list條目匹配進來的,因爲你的掩碼部分和上邊前綴列表所匹配的掩碼範圍是不一樣的。

 

例二:

Router(config)#ip prefix-list 10 permit 172.16.1.0/24 le 25

(匹配前24:172.16.1.* ,掩碼必須爲24位到25位之間的)

上邊prefix-list沒有寫ge的值,這個時候ge的值是等於network/length也就是/24的,所以prefix-list意思是先把掩碼是/24/25的路由挑選出來,然後在按照/24network/length匹配

下邊:

網絡號:172.16.1.0/24

廣播地址:172.16.1.255

可用IP範圍:172.16.1.1~172.16.1.254

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

網絡號:172.16.1.0/25

廣播地址:172.16.1.127

可用IP範圍:172.16.1.1~172.16.1.126

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

網絡號:172.16.1.128/25

廣播地址:172.16.1.255

可用IP範圍:172.16.1.129~172.16.1.254

上邊的路由都會被上邊的prefix-list條目匹配進來

但是像下邊:

172.16.1.0/26

172.16.1.0/27

172.16.1.0/28

172.16.1.0/29

172.16.1.0/30

這些路由,但凡你掩碼不是/24的,是一定不會被上邊的prefix-list條目匹配進來的,因爲你的掩碼部分和上邊前綴列表所匹配的掩碼範圍是不一樣的。

 

大家看下上邊標紅色的/25掩碼的路由,172.16.1.0/25,關於這條路由其實是有2個子網的分別是:

1個子網:

172.16.1.0/25

網絡號:172.16.1.0

廣播地址:172.16.1.127

可用IP範圍:172.16.1.1~172.16.1.126

2個子網:

172.16.1.128/25

網路號:172.16.1.128

廣播地址:172.16.1.255

可用IP範圍:172.16.1.129~172.16.1.254

 

所以上邊的prefix-list實際上是把172.16.1.128/25這個網絡內的IP也都給匹配出來了(自己可以實驗)

這就是你這條prefix-list所匹配出的範圍。如果你一但加了gele兩個參數,那麼前綴列表是先看gele的參數的,它就看你這條路由的掩碼是不是在我gele所寫的範圍內,如果在範圍內,這個時候纔會看前邊的network/length的參數。

這就是爲什麼172.16.1.128/25會被匹配進來的原因了,因爲首先這條路由它的掩碼是/25位的,其次它的前綴部分是172.16.1.*

 

例三:

Router(config)#ip prefix-list 10 permit 172.16.1.0/24 ge 25

Router(config)#ip prefix-list 10 permit 172.16.1.0/24 ge 25 le 32

(匹配前24:172.16.1.* ,掩碼必須爲25-32位)

上邊第一條語句和第二條標紅的語句含義是一樣的,上邊prefix-list沒有寫le的值,這個時候le的值是小於等於/32的,所以prefix-list意思是先把掩碼是/24/32的路由挑選出來,然後在按照/24network/length匹配。

下邊:

網絡號:172.16.1.0/24

廣播地址:172.16.1.255

可用IP範圍:172.16.1.1~172.16.1.254

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

網絡號:172.16.1.0/25

廣播地址:172.16.1.127

可用IP範圍:172.16.1.1~172.16.1.126

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

網絡號:172.16.1.128/25

廣播地址:172.16.1.255

可用IP範圍:172.16.1.129~172.16.1.254

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

網絡號:172.16.1.0/26

廣播地址:172.16.1.63

可用IP範圍:172.16.1.1~172.16.1.62

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

網絡號:172.16.1.64/26

廣播地址:172.16.1.127

可用IP範圍:172.16.1.65~172.16.1.126

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

網絡號:172.16.1.128/26

廣播地址:172.16.1.191

可用IP範圍:172.16.1.129~172.16.1.190

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

網絡號:172.16.1.192/26

廣播地址:172.16.1.255

可用IP範圍:172.16.1.193~172.16.1.254

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

網絡號:172.16.1.0/27

廣播地址:172.16.1.31

可用IP範圍:172.16.1.1~172.16.1.30

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

網絡號:172.16.1.32/27

廣播地址:172.16.1.63

可用IP範圍:172.16.33.~172.16.1.62

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

網絡號:172.16.1.64/27

廣播地址:172.16.1.95

可用IP範圍:172.16.1.65~172.16.1.94

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

網絡號:172.16.1.96/27

廣播地址:172.16.1.127

可用IP範圍:172.16.1.97~172.16.1.126

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

網絡號:172.16.1.128/27

廣播地址:172.16.1.159

可用IP範圍:172.16.1.129~172.16.1.158

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

網絡號:172.16.1.160/27

廣播地址:172.16.1.191

可用IP範圍:172.16.1.161~172.16.1.190

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

網絡號:172.16.1.192/27

廣播地址:172.16.1.223

可用IP範圍:172.16.1.193~172.16.1.222

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

網絡號:172.16.1.224/27

廣播地址:172.16.1.255

可用IP範圍:172.16.1.225~172.16.1.254

上邊列出的路由只是ip prefix-list 10 permit 172.16.1.0/24 ge 25這條prefix-list的一小部分,我懶得列出其他的路由條目了。我只列到了/24/27之間的路由條目,從上邊列出可以看出,/25的掩碼能劃分2個網絡,/26能劃分出4個網絡,/27能劃分出8個網絡。上邊的prefix-list把這個/x的掩碼能劃分出的所有地址塊都給匹配進來了。

/28能劃分16個網絡,/29能劃分出32個網絡,之所以寫了這麼多是想讓你明白,上邊的前綴列表所匹配到的路由條目到底有哪些。
-----------------------------------------------------
手動分割------------------------------------------------------------------------

例四:

172.16.4.0/24

172.16.5.0/25

現在要求你用一條prefix-list把這兩條路由儘量的匹配出來,我們可以這麼寫:

Router(config)#ip prefix-list 10 permit 172.16.4.0/23 ge 24 le 25

你要同時精確精短的匹配出這兩條路由,你可以算一下,我們把兩條路由拆分下:

172.16.0000 0100.0

172.16.0000 0101.0

從上邊能夠看出第38位組(拆分成二進制的那段)標紅的部分都是一樣的,標紅的部分一共有7位。
第一個8位組的8+第二個8位組的8+第三個8位組7=23位,現在就算出了想要匹配住172.16.4.0/24172.16.5.0/25這兩條路由的network/length部分也就是172.16.4.0/23,然後因爲這兩條路由的掩碼是不一樣的,一個是/24的一個是/25的,所以我們要用到prefix-listgele兩個參數了

所以得出ge 24 le 25,這句話可以理解成,匹配出掩碼/24/25的路由條目,然後在去看network/length部分的值。

細心點就會發現上邊我提到了儘量兩個字,這條prefix-list其實還多匹配了兩條路由,分別是:172.16.4.128/25172.16.5.0/24

 

例五:

172.16.4.0/24

172.16.5.0/24

172.16.6.0/25

172.16.7.0/26

現在要求你用一條prefix-list把這兩條路由儘量的匹配出來,我們可以這麼寫:

Router(config)#ip prefix-list 10 permit 172.16.4.0/22 ge 24 le 26

你要同時精確精短的匹配出這兩條路由,你可以算一下,我們把兩條路由拆分下:

172.16.0000 0100.0

172.16.0000 0101.0

172.16.0000 0110.0

172.16.0000 0111.0

從上邊能夠看出第38位組(拆分成二進制的那段)標紅的部分都是一樣的,標紅的部分一共有6

第一個8位組的8+第二個8位組的8+第三個8位組6=22位,現在就算出了想要匹配住172.16.4.0/24172.16.5.0/24172.16.6.0/25172.16.7.0/26這四條路由的network/length部分也就是172.16.4.0/22,然後因爲這四條路由的掩碼是不一樣的,一個是/24的一個是/25還有一個是/26的,所以我們要用到prefix-listgele兩個參數了

所以得出ge 24 le 26,這句話可以理解成,匹配出掩碼/24/26的路由條目,然後在去看network/length部分的值。

network/length部分的值其實可以口算的,只要你VLSM會算就可以,就像上邊4條路由從172.16.4.0172.16.7.0想要匹配這4條路由那麼地址塊大小一定要比4大或者是相同的地址塊。

你算一個2的幾次方是大於或等於4的,2^2=4,所以起碼要借2位,然後你就用24-2=22這樣就能很快算出了。爲什麼是用24減,因爲我們是在第38位組做操作,18位組是8位,38位組就是24位。具體子網劃分,推薦《CCNA學習指南》這本書。

細心點就會發現上邊我提到了儘量兩個字,這條prefix-list其實還多匹配了15條路由,分別是:

172.16.4.128/25

172.16.4.64/26

172.16.4.128/26

172.16.4.192/26

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

172.16.5.128/25

172.16.5.64/26

172.16.5.128/26

172.16.5.192/26

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

172.16.6.0/24

172.16.6.128/25

172.16.6.64/26

172.16.6.128/26

172.16.6.192/26

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

172.16.7.0/24

172.16.7.128/25

-----------------------------------------------------手動分割------------------------------------------------------------------------

例六:

下邊是一些特殊的prefix-list寫法:

ip prefix-list test permit 0.0.0.0/0

匹配默認路由

ip prefix-list test permit 0.0.0.0/0 ge 32       

匹配所有主機路由,怎麼理解這句話,就是路由表中所有/32的主機路由條目,不管你是ABC三類哪裏的主機路由條目,反正你只要是/32的就會被匹配住

ip prefix-list test permit 0.0.0.0/0 le 32        

匹配所有路由,相當於permint any

 

 

個人覺得prefix-list如果簡單的用下可能都會用,但是自己還是要搞清楚這條perfix-list都到底匹配了哪些路由,只有你搞清楚了這條perfix-list所包含的路由明細,你才能夠自己去抓路由,抓的更精確更精短。

還是要多做實驗,才能理解,如果有寫錯的歡迎私信


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章