ACL中通配符的灵活运用

在路由器里我们经常使用access-list来做些地址过滤,达到某些安全策略的目的,一般常用的方法是对某个地址段进行permit或者deny,

access-list permit 1 192.168.1.0 .3

access-list permit 1 192.168.1.16 .15

初学者对于wildcard mask的定义可能不是非常清晰,都会认为在ACL中的wildcard mask只能使用网络中已使用的地址段的子网掩码的反掩码来作为ACL的wildcard mask,

例一:某网络上存在一IP地址段192.168.1.0/29,如果是要允许这个网段所有的机子上网就可以用access-list permit 1 192.168.1.0 .7来做策略,但是如果要求只允许网络内192.168.1.1、192.168.1.5这两个地址上网的话,我们通常会这样写ACL:

Access-list permit 1 192.168.1.1 .0

Access-list permit 1 192.168.1.5 .0

Access-list deny any any

ACL中的wildcard mask由32个0和1组成,如果该位为0那么被匹配的地址的对应位就必需与ACL中的地址对应位匹配,

被匹配地址:    192.168.1.1   1100 0000.1010 1000.0000 0001.0000 0001

Wildcard mask: .7       0000 0000.0000 0000.0000 0000.0000 0111

ACL中的地址: 192.168.1.0   1100 0000.1010 1000.0000 0001.0000 0000

红色粗体部分就是被匹配地址与ACL中的地址需要完全匹配的部分,因为wildcard mask的前29位为0,而后三位为1,所以被匹配地址的后三位被忽略,也就是所谓的don’t care,因此后三位可以是0和1的任意组合

Access-list permit 1 192.168.1.1 .4(192.168.1.1为ACL的匹配条件地址)

ACL的wildcard mask定义,.4中只有第30位为1,所以与该位的匹配可以忽略(蓝色部分);而其它位必需与ACL中的条件匹配地址192.168.1.1的对应位相同,因此我们看上面红色字体,条件地址的末两位是01,和条件地址末两位相同的只有地址192.168.1.1、192.168.1.5,也就是说在地址段192.168.1.0/29中,只有1和5这两个地址能够通过ACL匹配。

我们上面例1中的ACL:

Access-list permit 1 192.168.1.1 .0

Access-list permit 1 192.168.1.5 .0

Access-list deny any any

可以写为:

Access-list permit 1 192.168.1.1 .4

通过以上例子,我们看出ACL中的wildcard mask和在动态路由协议里的反码是不同定义的

转载于:https://www.cnblogs.com/centos-python/articles/8522646.html

<think>嗯,用户这次深入询问ACL通配符掩码的技术细节,看来是个网络领域的学习者或从业者。从ta特意强调"原理"和"使用方法"来看,可能正在备考认证或配置实际设备。之前系统给的引用材料很专业,其中[^1]对通配符掩码的功能解释得最清晰,[^2]则提供了具体的应用场景分类,正好能结合起来回答。用户可能卡在"通配符掩码和子网掩码区别"这个经典难点上。需要特别注意解释:子网掩码是连续1表示网络位,而通配符掩码的0/1分别代表"必须匹配"和"无关位",这种二元逻辑正好相反。应该用对比表格呈现更直观,再辅以二进制案例演示。引用[^4]提到的ACL分类也很重要,高级ACL才会用到IP通配符。配置实例部分准备用10.1.1.0/24网段示范,这是教科书常用案例。突然想到,H3C和Cisco的通配符语法有差异,但用户没提设备类型,决定采用行业通用的Cisco语法。在反掩码处需要警示:全0通配符掩码等价于host命令,这个易错点很多初学者会忽略。配置示例要展示连续地址段和离散主机两种场景,引用[^3]的deny语法正好用得上。最后的相关问题设计成阶梯状:从原理(位运算)到实战(优化配置),再到厂商差异(思科/华为比较),应该能覆盖用户潜在需求。</think> 在数据通信中,ACL(访问控制列表)的**通配符掩码(Wildcard Mask)** 用于高效匹配IP地址范围,其原理是通过二进制掩码位标识需要检查或忽略的IP地址位。以下是详细解析: --- ### **一、通配符掩码核心原理** 1. **与子网掩码的区别** - 子网掩码:连续`1`表示网络位,连续`0`表示主机位(如 `255.255.255.0`) - 通配符掩码:`0`表示**必须匹配**的位,`1`表示**忽略**的位(如 `0.0.0.255`) *例:掩码 `0.0.0.255` 表示IP地址的最后8位(主机位)任意变化都匹配*[^1]。 2. **二进制逻辑** ```math \begin{align*} \text{IP地址} & : 192.168.1.\color{red}{0} \\ \text{通配符掩码} & : 0.0.0.\color{red}{255} \quad (\text{二进制: } 00000000\ 00000000\ 00000000\ 11111111) \\ \end{align*} ``` 结果:匹配 `192.168.1.0` 到 `192.168.1.255` 的全部地址[^2]。 --- ### **二、关键使用场景与配置** #### **1. 匹配连续IP地址段** - **需求**:允许 `10.1.1.0/24` 网段 ```bash access-list 1 permit 10.1.1.0 0.0.0.255 ``` - `0.0.0.255`:前三段固定,最后8位任意。 #### **2. 匹配单个主机** - **需求**:精确匹配 `192.168.1.5` ```bash access-list 1 permit host 192.168.1.5 # 或等效写法: access-list 1 permit 192.168.1.5 0.0.0.0 ``` #### **3. 匹配不连续地址** - **需求**:允许 `192.168.1.1` 和 `192.168.1.3` 利用掩码灵活设计: ```math \begin{array}{c|c|c} \text{IP} & \text{二进制} & \text{通配符} \\ \hline 192.168.1.1 & 11000000.10101000.00000001.00000001 & \\ 192.168.1.3 & 11000000.10101000.00000001.00000011 & \\ \hline \text{需匹配的位} & \color{red}{XXXXXXXX.XXXXXXXX.XXXXXXXX.XXXXXX0\bold{1}} & 0.0.0.\bold{254} \\ \end{array} ``` 配置: ```bash access-list 1 permit 192.168.1.1 0.0.0.254 # 末位奇数为1的地址均匹配 ``` --- ### **三、特殊规则与注意事项** 1. **`any` 关键字** 等同于匹配所有IP:`0.0.0.0 255.255.255.255` ```bash access-list 1 permit any ``` 2. **反掩码(Inverse Mask)** 通配符掩码本质是**反子网掩码**,例如 `/24` 子网 → 掩码 `255.255.255.0` → 通配符 `0.0.0.255`。 3. **ACL执行顺序** 设备按ACL条目**自上而下匹配**,首条命中后停止检查[^3]。 --- ### **四、实战配置示例** ```bash # 禁止 10.1.1.0/24 访问 80 端口,允许其他所有流量 access-list 100 deny tcp 10.1.1.0 0.0.0.255 any eq 80 access-list 100 permit ip any any ``` --- ### **常见误区** - ❌ **通配符掩码非子网掩码**:`0.0.0.255` ≠ `255.255.255.0` - ✅ **全0掩码=精确匹配**:`192.168.1.1 0.0.0.0` ≡ `host 192.168.1.1` 通配符掩码通过灵活控制位匹配,大幅简化ACL规则数量,是网络设备流量控制的核心工具之一[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值