注:本文为 “ 通配符 / 网掩码” 相关文章合辑。
已重排,如有内容异常,请看原文。
英文引文,机翻未校。
ACL 通配符、子网掩码和反掩码的区别及计算方式
qq5ea97e5ed12c0 2020-05-16 16:14:04
概念解释
子网掩码
- 用于确定 IP 地址的网络部分和主机部分。
- 特点:
- 左边永远是 1,右边永远是 0。
- 1 和 0 不会交叉出现。
- 关注掩码中 1 所对应的位。
反掩码
- 与子网掩码相反,用于某些特定应用。
- 特点:
- 左边永远是 0,右边永远是 1。
- 1 和 0 不会交叉出现。
- 关注掩码中 0 所对应的位。
通配符
- 用于 ACL 中匹配特定流量。
- 特点:
- 关注通配符中 0 所对应的位。
- 写法规则:
- 相同的位直接写。
- 不同的位变成 0。
- 奇数和偶数处理:
- 奇数 IP 的最后一位是 1。
- 偶数 IP 的最后一位是 0。
ACL 编写规则
基本语法
rule {
id} permit/deny source [x.x.x.x] 【通配符】
x.x.x.x
表示要抓取的通信流量的公共部分。
-
公共部分写法原则:
- 相同的位直接写
- 不同的位变成 0
示例:奇数和偶数 IP 处理
以 10.1.1.0
网段为例,奇数偶数如:
奇数:
1
:0000 0001
3
:0000 0011
5
:0000 0101
7
:0000 0111
9
:0000 1001
偶数:
2
:0000 0010
4
:0000 0100
6
:0000 0110
8
:0000 1000
10
:0000 1010
奇数 IP 的最后一位都是 1
,而偶数 IP 的最后一位都是 0
,这就是规律。
- 奇数时,
0001
这个不变,source ip
指的是起始 ip,若起始时10.1.1.1
,通配符最后是1111 1110
(看的是0
是不变的)。
同理,
- 偶数时,
0010
这个不变,source ip
指的是起始 ip,若起始是10.1.1.2
,通配符最后是1111 1110
,十进制为254
。
奇数 IP 的表示为:10.1.1.1 0.0.0.254
;偶数 IP 的表示为:10.1.1.2 0.0.0.254
。
-
奇数 IP:如
10.1.1.1
,通配符最后四位为1111 1110
表示为:
10.1.1.1 0.0.0.254
-
偶数 IP:如
10.1.1.2
,通配符最后四位为1111 1110
表示为:
10.1.1.2 0.0.0.254
示例:ACL 通配符计算
允许以下主机 IP 访问路由器:
192.168.1.5/24
192.168.1.10/24
192.168.1.13/24
192.168.1.14/24
要求:只能用两条 ACL 代替。
解决方案
步骤 1:将 IP 转换为二进制
192.168.1.5
:00000101
192.168.1.10
:00001010
192.168.1.13
:00001101
192.168.1.14
:00001110
步骤 2:分组匹配
-
组 1:
5
和13
-
二进制:
00000101
00001101
-
相同用 “0” 表示,不同用 “1” 表示。 二进制
00001000
,通配符:0.0.0.8
。 -
ACL 规则:
rule 10 permit source 192.168.1.5 0.0.0.8
-
-
组 2:
10
和14
-
二进制:
00001010
00001110
-
相同用 “0” 表示,不同用 “1” 表示。二进制
00000100
,通配符:0.0.0.4
。 -
ACL 规则:
rule 20 permit source 192.168.1.10 0.0.0.4
-
最终 ACL 配置
rule 10 permit source 192.168.1.5 0.0.0.8
rule 20 permit source 192.168.1.10 0.0.0.4
浅谈为何需要反掩码
码龄 3 年 已于 2023-05-07 10:14:52 修改
通配符掩码和反掩码的区别:
反掩码是IP地址掩码的反码,用于计算子网广播地址等;通配符掩码不连续,灵活匹配IP地址,用于路由选择、ACL等
通配符掩码,英文名 wildcard-mask,反掩码直译成 inverse-mask (感谢 蔚蓝湖网友的指正)
通配符掩码和反掩码的区别:
反掩码是IP地址掩码的反码,用于计算子网广播地址等;通配符掩码不连续,灵活匹配IP地址,用于路由选择、ACL等
反掩码,英文名wildcard - mask
,也直译为inverse - mask
。在介绍反掩码之前,先回顾掩码mask
的相关知识点。
1. 掩码
掩码由1
和0
组成,其中 连续的 1
表示网络号, 连续的 0
表示主机范围。
举例:
255.255.255.0
转成二进制形式:
1111 1111.1111 1111.1111 1111.0000 0000
其中的1
有24
个,说明该掩码有24
位网络号,也可用/24
表示。/24
是网络位,由24
个比特(bit)位构成,且为 连续的 24
个 1
。子网掩码长度共32
个bit,由网络位和主机位两部分组成。在此例中,网络位有24bit
,剩余的8
个bit是主机位,用二进制形式表示,其范围是:
0000 0000 ~ 1111 1111
转成十进制形式:
0~255
,主机编号从0
到255
,共256
个。
/24
的网段里,0
用于表示本网段,作为网段地址使用,255
用于表示网段中的广播地址,所以可用于表示主机的主机地址有254
个。这便是子网掩码的作用。
需注意,子网掩码中的1
是连续的,不能出现一堆1
里面夹着0
的情况;子网掩码中的0
也同理,不能出现一堆0
里面夹着1
的情况。
例如,
1111 1111.1111 0000.1111 1111.0000 1100
,这样的子网掩码是不合法的。
需明确,下面的斜线模式指的是 连续的1 和 连续的0,1
是连续的,0
也是连续的,不能出现断开的情况。比如,/16
指的是连续的16
个1
再接着16
个连续的0
,即:
11111111.11111111.00000000.00000000
而不能出现类似:
11111111.00000000.11111111.00000000
这种虽然也是16
个1
和16
个0
,但1
不连续,0
也不连续,所以是错误的子网掩码。
子网掩码只能是如下列表中的一个:
/1 128.0.0.0
1
0000000.0.0.0
/2 192.0.0.011
000000.0.0.0
/3 224.0.0.0111
00000.0.0.0
/4 240.0.0.01111
0000.0.0.0
/5 248.0.0.011111
000.0.0.0
/6 252.0.0.0111111
00.0.0.0
/7 254.0.0.01111111
0.0.0.0
/8 255.0.0.011111111
.0.0.0
/9 255.128.0.011111111
.1
0000000.0.0
/10 255.192.0.011111111
.11
000000.0.0
/11 255.224.0.011111111
.111
00000.0.0
/12 255.240.0.011111111
.1111
0000.0.0
/13 255.248.0.011111111
.11111
000.0.0
/14 255.252.0.011111111
.111111
00.0.0
/15 255.254.0.011111111
.1111111
0.0.0
/16 255.255.0.011111111
.11111111
.0.0
/17 255.255.128.011111111
.11111111
.1
0000000.0
/18 255.255.192.011111111
.11111111
.11
000000.0
/19 255.255.224.011111111
.11111111
.111
00000.0
/20 255.255.240.011111111
.11111111
.1111
0000.0
/21 255.255.248.011111111
.11111111
.11111
000.0
/22 255.255.252.011111111
.11111111
.111111
00.0
/23 255.255.254.0111111