前天在帮客户梳理nat转换时,发现一个有趣的配置,发上来供你们学习。ide
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又是什么鬼?spa
要知道0.0.0.191匹配到了什么地址,这就要从通配符掩码提及,在ACL语句中,当使用地址做为条件时,地址后面跟的都是通配符掩码,通配符掩码决定了地址中哪些位是须要精确匹配,哪些位不须要匹配。通配符掩码是一个32位数,采用点分十进制方式书写,匹配时,“0”表示检查的位、“1”表示不检查的位。ip
由此咱们能够先进行通配符的二进制转换,由此能够看出这个通配符必须匹配1-24位和26位。it
0.0.0.191--》0000 0000.0000 0000.0000 0000.1011 1111class
而IP地址因为是10.0.0.0,因此二进制就是:配置
10.0.0.0---》0000 1010.0000 0000.0000 0000.0000 0000二进制
由此咱们能够看出,通配符必须匹配如下标红位数di
0000 1010.0000 0000.0000 0000.0000 0000view
而不标红位数第一个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。