当前位置:文档之家› 通配符问题

通配符问题

通配符VS反掩码,你懂了吗,有错误了请大神更正其实这两个术语的英文都是wildcard,不知道为什么派生出两个中文翻译来。

一般来说,wildcard在配置OSPF和EIGRP的network 命令时,被称作反掩码,如:network 12.0.0.0 0.0.0.255 area 0;而使用在访问控制列表(ACL)匹配地址段时,wildcard被称作通配符,如:access-list 20 permit 172.30.0.0 0.0.255.255。

我觉得出现两个中文名本没有必要。

但既然已经约定俗成了,我们且把他们当作两个概念,但两者很容易混淆,我查资料能给出的比较合理的界定是:反掩码是通配符取值范围的一部分。

为什么这么说?因为当且仅当32位的二进制通配符只出现连续1的情况时,通配符=反掩码。

取其中的8位地址段为例,譬如,0001 1111既可以被当作反掩码又可以是通配符,而0010 1100只能被当作通配符,但不能是反掩码。

当然以上只是数学上的定义。

从实际配置上来看:反掩码通常见于EIGRP和OSPF的配置命令中,用来界定地址段中哪些是网络位,哪些是主机位。

所以反掩码的取值范围只能出现连续的1,因为网络位和主机位都是连续的。

而通配符通常见于访问控制列表(ACL)配置中,其实就是一种运算符,它0和1两个,在配置语境中规定其他数值位是变量还是定值。

0是定量, 1是变量!That's it!一个实例:用访问控制列表抓取路由条目的匹配规则现在根据公司要求,需要在配置上运用访问控制列表匹配下列三个地址段172.16.1.0 /24172.16.3.0 /24172.16.9.0 /24以上三个网络号的编排规则貌似无规律可循,最笨的方法就是用三个访问列表一条一条的匹配。

但当你能熟练的运用通配符以后,一个访问列表就够了:第一步首先我们把三个网络号的第三地址区间转换成二进制:172.16.00000001.0 /24172.16.00000011.0 /24172.16.00001001.0 /24很显然那些粗体位的是三个网络号匹配下来不同的位,即为变量第二步不要考虑匹配地址位的顺序,把变量位对应的十进制数加起来,结果是2+8=10,所以能包括这三个网络号的通配符是:0.0.10.0 所以访问控制列表可以这样写:access-list 1 permit 172.16.1.0 0.0.10.0Q:如果本例的网络环境中还有网络号172.16.11.0 /24,access-list 1 permit 172.16.1.0 0.0.10.0的配置还能不能成立?A:不能成立了!为什么?因为如果把172.16.11.0 /24的第三地址区间转换成二进制,我们得到的数值是00001011,也正好把这个网络号匹配进了这条访问控制列表。

但公司策略却不要求访问列表匹配网段172.16.11.0 /24。

在这种情况下,我们只能放弃使用通配符0.0.10.0,取而代之,策略只能用三个访问列表逐个匹配实现。

ACL通配符计算(转载网络伤寒)学习ACL,搞懂ACL就不能不搞定wildcard mask,通配符掩码。

说简单点,通配符掩码就是0为绝对匹配,必须严格匹配才行,而1为任意,从某种意义上讲,如果一个8位上有一个1字符,那也只有两种方式,0或者1,但是如果进行组合,那么方式就多了。

举例说明吧。

一般我们在应用上都是进行地址块的匹配,怎么讲呢?就是说:1)对某个A B C类网进行匹配或者教通配符屏蔽2)对某个子网应用ACL。

3)对特定主机应用ACL4)对任意主机或者网络应用ACL5)特殊情况的匹配差不多就是以上五种情况,下面一一说明。

1)对某个有类网络进行ACL的通配符屏蔽。

这种情况很好解释。

例如:A类:10.0.0.0 0.255.255.255先写成二进制形式: 00001010.00000000.00000000.0000000000000000.11111111.111111111.11111111可以看出,第一个字节需要严格匹配,也就是说必须为10.,后面的任意匹配。

得到的网络为10.*.*.*如果我把这个改一下呢?10.0.0.0 0.0.3.255同样写成二进制形式:00001010.00000000.00000000.0000000000000000.00000000.00000011.111111111前两个字节严格匹配为10.0,后面的同上题一个思路,0就严格匹配,1就任意。

在这里,后10个比特可以任意匹配,我们通过计算可以得到合适的结果:10.0.0.*10.0.1.*10.0.2.*10.0.3.*这四个子网2)对某个子网应用ACL还是举例说明,以C类网络192..168.1.0/24为例进行子网划分。

我们引入地址块的思想进行解释会好理解一些。

因为子网一般都是以地址块形式存在的。

地址块为128,192.168.1.128⌝ 0.0.0.127地址块为64,192.168.1.0 0.0.0.63⌝地址块为32,192.168.1.0⌝ 0.0.0.31地址块为16,192.168.1.0 0.0.0.15⌝地址块为8,192.168.1.0⌝ 0.0.0.7地址块为4,192.168.1.0 0.0.0.3⌝地址块为2,192.168.1.0⌝ 0.0.0.13)对特定主机应用ACL通配符需要全匹配,例如:182.168.12.4 0.0.0.0还有一种表示方法:host 182.168.12.4Host在这里是关键字,用来代替0.0.0.0 ,用于源地址和目的地址字段。

4)对任意主机或者网络应用ACL这是任意匹配的情况,主机任意,通配符任意匹配:0.0.0.0 255.255.255.255,同时这里也有简写——any5)比较特殊的情况。

用我的话说这种情况是不按规则出牌的情况,也是比较有趣的。

我不想让某个子网或者是某个有类网被通配符屏蔽,我仅仅是想让部分主机被屏蔽,不过这部分主机也应该是有规律的,要不管理人员肯定得折腾疯。

哈哈。

仅举两例以供说明:随便写一个,计算出屏蔽了哪些网络。

随便写一个 192.168.1.23 0.0.0.5怎么?傻眼了?这就是不按规则出牌的情况,CCNA自学指南里面肯定说了,不能从11.0或者12.0等网络开始,非得是2的次幂才行。

对此规矩我们不予理睬,还是使用最为原始的办法进行一个一个匹配。

写成二进制形式:11000000.10101000.00000001.0001011100000000.00000000.00000000.00000101接下来就是匹配计算了。

前三个字节毫无疑问,严格匹配。

最后一个字节逢0匹配,逢1任意。

000101110000010100010*1*如上的公式,我们看到有星号的位置是可以任意匹配的,这样我们就可以算出:①00010010——18②00010011——19③00010110——21④00010111——23这样就很明显了,得到的结果就是192.168.1.18192.68.1.19192.168.1.21192.168.1.23 都被0.0.0.5这个通配符掩码给屏蔽了。

怎样,这个不按规则出牌的通配符掩码是不是也愚弄了你一次?备注:只要严格按照0——严格匹配,1——任意配置的原则不管什么反掩码都是纸老虎。

写第二个,我需要匹配一个网络里面奇数IP的主机或者偶数IP的主机(或者的路由过滤中需要奇数网络)还是看例子:192.168.1.1192.168.1.2192.168.1.3192.168.1.4192.168.1.5192168.1.6192.168.1.7192.168.1.9……………192.168.1.254思路都是一样的,条条道路通罗马,这里条条道路通配符我还是要写成二进制形式前面的三个字节就省略了,只写后面的一个字节的:00000001000000100000001100000100000001010000011000000111…………看出规律了么?什么?没有啊,仔细瞧瞧么!奇数IP的最后一位都是1,而偶数IP的最后一位都是0。

这就是规律啊。

那么怎么写呢?这个就比较简单了吧,奇数IP的:192.168.1.1 0.0.0.254 ;偶数IP的呢——192.168.1.2 0.0.0.254如上就是我对ACL的理解,有说错的,做错的,还望大家指正,所谓三人行必有我师,你有什么更好的办法别忘记跟帖。

ACL主要难点是在通配符的计算,如有这么一道题:已知子网,求通配符掩码。

例:允许199.172.5.0/24199.172.10.0/24199.172.13.0/24199.172.14.0/24网段访问路由器。

要求写出ACL来,但只能用两条ACL代替。

1.先将这四个数换成二进制:5.0-------0 1 0 110.0-----1 0 1 013.0-----1 1 0 114.0-----1 1 1 0观察可以看到5.0和13.0 10.0和14.0有共同点。

2.将不相同的部分用Z表示5.0和13.0----------Z 1 0 110.0和14.0--------1 Z 1 03.将Z换成1,数字换成0。

可以得出:5.0和13.0----------Z 1 0 1------------ 1 0 0 010.0和14.0--------1 Z 1 0------------ 0 1 0 04.最后将二进制换成十进制:5.0和13.0----------Z 1 0 1------------ 1 0 0 0-------- 810.0和14.0--------1 Z 1 0------------ 0 1 0 0-------- 4最后得出:access-list 10 permit 199.172.5.0 0.0.8.0 access-list 11 permit 199.172.10.0 0.0.4.0。

相关主题