阿国运维网技术分享平台:桌面运维、网络运维、系统运维、服务器运维(及云服务器),精品软件分享、阿国网络、尽在北京运维网
先说结论:
子网掩码是给 IP 地址划分子网用的:1=网络位,0=主机位,直白地说是确定一个地址是属于哪个网段的。反掩码和通配符掩码通常是给“匹配规则”用的:0=精确匹配,1=模糊匹配。反掩码通常是子网掩码按位取反,要求必须连续;通配符可以非连续,常用于ACL、策略路由等。
本期主要目的是让大家熟悉反掩码和通配符的区别和联系,后续我们将开始学习NAT、ACL、防火墙等等,都会要用到。
1.三者核心区别
注意:在连续的情况下,反掩码和通配符数值可能一样,例如匹配10.1.1.0/24,反掩码和通配符都是0.0.0.255。
但是概念不同:OSPF 里叫反掩码,通常是子网掩码取反。ACL 里叫通配符,可以写成非连续形式。
计算示例
IP:192.168.1.10抽码:255.255.255.0网培地址:192.168.1.0
可用主机:192.168.1.1-192.168.1.254
2. 应用场景
2.1子网掩码
用于IP地址本身:
接口配置:ip address 10.1.1.1 255.255.255.0
路由表:10.1.1.0/24
子网划分、VLSM、路由汇总、判断两个IP是否在同一网段等都需要用子网掩码。
举例说明:
网段:172.16.10.0/24
掩码:/24代表24个连续的1,8个连续的0,转换为十进制就是255.255.255.0
网络地址和广播地址分别是:172.16.10.0和172.16.10.255
可用主机:共256个地址,可用地址为254,,172.16.10.1 - 172.16.10.254。
2.2 反掩码
比如OSPF中网段宣告:network172.16.10.0 0.0.0.255
这里的0.0.0.255就是反掩码,表示匹配172.16.10.0/24。
反掩码 = 255.255.255.255 - 子网掩码。
举例说明:
/24掩码十进制:255.255.255.0,反掩码255.255.255.255-255.255.255.0=0.0.0.255
/22掩码十进制:255.255.252.0,反掩码计算后:0.0.3.255
其他反掩码计算方式相同。
2.3 通配符
常见于 ACL:rule 10 permit 192.168.1.0 0.0.0.255
表示匹配192.168.1.0/24网段。
在ACL中的通配符举例:
通配符0.0.0.0:精确匹配一个IP
通配符255.255.255.255:匹配所有IP
通配符0.0.0.255:匹配一个/24的网段
*通配符0.0.3.255:匹配4个连续/24,即一个/22
*通配符0.0.2.255:可以匹配不连续的两个/24,例如 192.168.1.0/24和192.168.3.0/24
3. 如何计算
3.1 子网掩码
根据前缀长度n:前n位为1,后32-n位为0。
常见子网掩码:
3.2 反掩码
反掩码 = 255.255.255.255 - 子网掩码。
举例说明:
前缀/24:255.255.255.255 - 255.255.255.0 = 0.0.0.255
前缀/22:255.255.255.255 - 255.255.252.0 = 0.0.3.255
前缀/26:255.255.255.255 - 255.255.255.192 = 0.0.0.63
*3.3 通配符计算通用方法,本期重点
计算步骤:
a. 写出要匹配的ip或网段的二进制。
b. 找出所有地址中“相同的位”和“变化的位”。
c. 相同位:通配符写 0,表示必须精确匹配。
d. 变化位:通配符写 1,表示模糊匹配,可以任意。
e. 基础地址中:固定位写目标值,可变位通常写0。
f. 最后转回十进制。
4. 常见掩码 / 反掩码 / 通配符对照
5.通配符计算示例,以华为/H3C设备基础ACL为例,其他品牌类似。重点不在命令,主要看ip/网段和通配符的计算和应用。
示例1:匹配单个ip或全部ip,要匹配192.168.1.1:
单个ip:rule 5 permit source 192.168.1.10.0.0.0
全部ip:rule 5 permit source 0.0.0.0255.255.255.255
通配符0.0.0.0表示所有位都必须精确匹配,而255.255.255.255则代表全部随机匹配。
示例2:匹配一个/24的网段,要匹配192.168.1.0/24:
rule 5 permit source 192.168.1.00.0.0.255
因为:前三段固定:192.168.1,最后一段任意:0-255
所以通配符:0.0.0.255
示例3:合并四个连续的/24网段为一个/22
rule 5 permit source 192.168.0.00.0.3.255
分析过程,四个网段:
192.168.0.0/24,192.168.1.0/24
192.168.2.0/24,192.168.3.0/24
主要看第三段变化的部分,转为二进制:
0 = 00000000,1 = 00000001
2 = 00000010,3 = 00000011
前6位相同:全部都是000000 ,后2位变化:00、01、10、11
所以:
第三段通配符变化部分取最大 = 00000011 = 3
第四段全变化 = 11111111=255
基础地址变化部分取最小 = 192.168.0.0
所以计算结果:合并后反掩码/连续通配符为:0.0.3.255,掩码为:255.255.252.0=/22
匹配范围:192.168.0.0 /22- 192.168.3.255/22
这里一定要注意通配符和基础地址取值,是变化部分最小,以上示例特殊,继续看下面示例就明白变化部分取值了。
示例4:合并192.168.16.0/24到192.168.19.0/24,共四个网段
rule 5 permit source 192.168.16.00.0.3.255
重点看第三段变化部分:
16 = 00010000,17 = 00010001
18 = 00010010,19 = 00010011
前6位相同:000100,后2位变化。
所以:
基础地址变化部分取最小:192.168.16.0
通配符变化部分取最大:0.0.3.255,这里的变化部分是最后2位,所以是00000011=3,而不是整体00010011=19,因为本段中标蓝部分属于相同部分,不参与计算。
汇总后整体网段:192.168.16.0/22
示例5:经过上边举例,合并172.16.8.0/24到172.16.15.0/24,此示例作为练习,大家将基础地址和通配符发到评论区。
记住重点,看变化的那一段,再找相同位和变化位,然后通配符取值和基础地址取值。
示例6:非连续匹配,匹配192.168.1.0/24和192.168.3.0/24
这是两个不连续的网段,所以在这个例子中反掩码和通配符就不相同了,要匹配:
同样看第三段:
1 = 00000001,3 = 00000011
依旧找相同位:与之前连续匹配不同的是,不仅要从左边找,还有从右边的低位找,因此,前6位相同:000000,最低位相同:1,红色部分。
再找不同位:从左到右第2低位不同,一个是 0,一个是 1,蓝色部分。
所以:
固定好相同位:前6位为0,最低位为1
固定好可变位:第2低位
通配符第三段就是:00000010 = 2,第四段全部模糊匹配:255
基础地址第三段,依然是选最小:00000001 = 1
结果:
rule 5 permit source 192.168.1.00.0.2.255
示例7:很经典的一个案例,匹配一个/24中所有奇数或偶数 IP
匹配偶数ip,例如
192.168.1.0
192.168.1.2
192.168.1.4
...
192.168.1.254
第四段偶数转换为二进制最低位一定是0:
所以:最低位固定为0,其余7位可变。
第四段通配符:11111110 = 254
结果:
rule 5 permit source 192.168.1.00.0.0.254
如果要匹配奇数:
192.168.1.1
192.168.1.3
...
192.168.1.255
同理,第四段奇数转换为二进制最低位一定是1,所以最低位固定为0,其余7位可变。
第四段通配符依旧是:11111110=254
结果就是:
rule 5 permit source 192.168.1.10.0.0.254
示例8:不能简单合并的情况,比如想合并以下网段,看似连续:
192.168.1.0/24,192.168.2.0/24
其中有变化的第三段:
1 = 00000001,2 = 00000010
如果按照上述办法,但它们不是连续的
如果写成:192.168.1.0 0.0.3.255
则最终会匹配到四个网段:
192.168.0.0/24
192.168.1.0/24
192.168.2.0/24
192.168.3.0/24
多匹配了0和3。按照规范,ACL要精确匹配就需要拆成两条来写,而不能用汇总的方式。这种匹配可以实现需求,但是超越了需求边界,在安全上来讲,这就不属于最小策略了。
6. 总结
1.ACL里写的是通配符,不是子网掩码。
2.OSPF里的反掩码通常是子网掩码取反。
3.连续网段匹配时:通配符 = 反掩码 = 255.255.255.255 - 子网掩码。
4.非连续通配符用于ACL等策略匹配,不用于普通子网掩码。
5.路由汇总要求连续且对齐;ACL通配符可以非连续,但可能匹配出额外地址。
6.通配符中1的个数越多,匹配范围越大。全0只匹配一个ip,全1匹配所有ip。









