思科ACL通配符掩碼的計算

    前天在幫客戶梳理nat轉換時,發現一個有趣的配置,發上來供大家學習。

access-list 120 permit ip 10.0.0.0 0.0.0.191 any

    這條ACL看似簡單,卻又複雜,因爲正常我們見到的通配符掩碼都是諸如0.0.0.255(255.255.255.0)/0.0.255.255(255.255.0.0)/0.0.0.127(255.255.255.128)等等,那這個0.0.0.191又是什麼鬼?

    要知道0.0.0.191匹配到了什麼地址,這就要從通配符掩碼說起,在ACL語句中,當使用地址作爲條件時,地址後面跟的都是通配符掩碼,通配符掩碼決定了地址中哪些位是需要精確匹配,哪些位不需要匹配。通配符掩碼是一個32位數,採用點分十進制方式書寫,匹配時,“0”表示檢查的位、“1”表示不檢查的位。

    由此我們可以先進行通配符的二進制轉換,由此可以看出這個通配符必須匹配1-24位和26位。

0.0.0.191--》0000 0000.0000 0000.0000 0000.1011 1111

    而IP地址由於是10.0.0.0,所以二進制就是:

10.0.0.0---》0000 1010.0000 0000.0000 0000.0000 0000

    由此我們可以看出,通配符必須匹配以下標紅位數

0000 1010.0000 0000.0000 0000.0000 0000

    而不標紅位數第一個0可以有兩種可能0/1,當第25位爲0時,後六位的範圍是000000-111111

0000 1010.0000 0000.0000 0000.0000 0000=10.0.0.0

0000 1010.0000 0000.0000 0000.0011 1111=10.0.0.63

    當第25位爲1時,後六位的範圍是000000-111111

0000 1010.0000 0000.0000 0000.1000 0000=10.0.0.128

0000 1010.0000 0000.0000 0000.1011 1111=10.0.0.191

    所以,10.0.0.0 0.0.0.191匹配了兩個網段的IP地址,分別是10.0.0.0-10.0.0.63和10.0.0.128-10.0.0.191。


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