视频加载失败

ACL技术详解

2322 字
12 分钟
ACL技术详解

ACL 技术详解#

一、ACL概述#

项目说明
全称Access Control List(访问控制列表)
本质一组按顺序匹配的规则集合
核心功能报文过滤、流量分类、路由策略匹配、NAT地址转换匹配
匹配原则从上到下依次匹配,匹配到第一条即停止,末尾隐含 deny any
适用对象匹配通过设备的流量(不影响本设备产生的流量)

ACL本身只做匹配和分类,具体动作(permit/deny)由应用ACL的功能模块执行。同一ACL可被多个功能模块同时引用。

二、ACL分类 🏷️高频考点#

ACL类型编号范围匹配条件典型应用场景
基本ACL2000-2999源IP地址简单源地址过滤、NAT地址转换匹配
高级ACL3000-3999源/目的IP、协议类型、源/目的端口、TCP标志、ToS/DSCP精细化流量过滤、策略路由
二层ACL4000-4999源/目的MAC、VLAN ID、802.1p优先级、二层协议类型二层流量过滤、防ARP攻击
用户自定义ACL5000-5999报文头指定偏移位置的自定义匹配特殊/非标准报文过滤
命名ACL能力等同于基本/高级ACL便于通过名称管理,支持编辑单条规则

2.1 基本ACL vs 高级ACL 对比#

对比项基本ACL高级ACL
编号2000-29993000-3999
匹配粒度仅源IP五元组+ToS/TCP Flag/分片
适用位置离目的近离源近(精确匹配)
配置复杂度
典型应用简单过滤、NAT匹配精细流量控制、策略路由

三、ACL规则匹配顺序 🏷️高频考点#

ACL的匹配顺序至关重要,同一ACL中规则顺序不同,匹配结果可能完全不同。

3.1 config模式(配置顺序)- 默认#

按 rule-id 从小到大依次匹配,匹配到第一条符合条件的规则即停止。

rule-id由小到大
5 permit → 匹配则允许,停止
10 deny → 匹配则拒绝,停止
15 permit → 匹配则允许,停止
...
未匹配 → 隐含 deny all

step 步长机制:默认 step=5,规则自动分配 rule-id 为 5, 10, 15…

Terminal window
# 配置顺序示例
acl 2000
rule 5 permit source 10.1.1.0 0.0.0.255
rule 10 deny source 10.1.1.100 0 # 此规则永远不会被匹配!

注意:rule 10 中 10.1.1.100 已被 rule 5 的 10.1.1.0/24 匹配并放行,永远不会被命中。这是 config 模式下典型的配置错误。

3.2 auto模式(自动排序/深度优先)#

按”精度优先”原则自动排序,匹配条件越严格的规则越靠前。

ACL类型排序规则
高级ACL① 协议范围小优先 → ② 源IP通配符掩码小优先 → ③ 目的IP通配符掩码小优先 → ④ 源端口范围小优先 → ⑤ 目的端口范围小优先
基本ACL源IP通配符掩码越小越优先(掩码越精确越靠前)
Terminal window
# auto模式示例
acl 3000 match-order auto
rule permit ip source 10.1.1.1 0 destination any # 自动排最前(host精度最高)
rule permit ip source 10.1.1.0 0.0.0.255 destination any # 自动排中间
rule deny ip source any destination any # 自动排最后(精度最低)

3.3 config vs auto 对比#

对比项config(配置顺序)auto(自动排序)
排序方式按 rule-id 从小到大按精度从高到低
是否保证精确优先否,取决于配置顺序是,系统自动排序
是否可预测是(按配置顺序)是(按精度算法)
默认模式
配置灵活性

四、ACL规则与通配符掩码 🏷️高频考点#

4.1 通配符掩码(Wildcard Mask)#

规则说明
0严格匹配该位(必须相同)
1忽略该位(不关心)

通配符掩码 = 255.255.255.255 - 子网掩码(即反子网掩码)

4.2 常用通配符掩码速查#

需求写法等效简写
匹配 192.168.1.0/24192.168.1.0 0.0.0.255
匹配任意地址0.0.0.0 255.255.255.255any
匹配特定主机 192.168.1.1192.168.1.1 0.0.0.0192.168.1.1 0
匹配 10.1.0.0/1610.1.0.0 0.0.255.255
匹配 172.16.0.0/12172.16.0.0 0.15.255.255
匹配奇数网段 192.168.1.1/32192.168.1.1 0.0.0.254
匹配偶数网段 192.168.1.0/32192.168.1.0 0.0.0.254

4.3 通配符掩码计算关键#

通配符掩码 0.0.0.255 → 前24位严格匹配(网络部分),后8位忽略(主机部分)
通配符掩码 0.0.255.255 → 前16位严格匹配,后16位忽略

重要:通配符掩码的0和1可以不连续!例如 0.0.0.254 (00000000.00000000.00000000.11111110) 可匹配奇数IP。

五、ACL应用方向 🏷️高频考点#

5.1 inbound与outbound#

permit

deny

permit

deny

入方向报文

接口接收

inbound ACL

查路由表

丢弃

确定出接口

outbound ACL

发送报文

丢弃

permit

deny

permit

deny

入方向报文

接口接收

inbound ACL

查路由表

丢弃

确定出接口

outbound ACL

发送报文

丢弃

方向匹配时机说明
inbound接口收到报文后,查路由表之前在入口过滤,减少不必要的路由查找
outbound查路由表确定出接口后,发送报文之前在出口过滤,本设备转发的报文才匹配

5.2 方向选择原则#

基本原则:尽量在靠近源的接口的inbound方向应用ACL
→ 减少不必要的路由查找和转发处理
→ 节省设备资源
例外:
- 基本ACL:只能匹配源IP,建议靠近目的端应用(outbound)
- 高级ACL:可精确匹配,建议靠近源端应用(inbound)

六、ACL时间段(Time Range)#

6.1 时间段类型#

类型说明配置示例
绝对时间段指定起止日期时间from 08:00 2024-01-01 to 18:00 2024-12-31
周期时间段指定每周重复时间段period 09:00 to 18:00 working-day
组合时间段绝对+周期组合在周期基础上加绝对日期范围

6.2 配置示例#

Terminal window
# 定义工作时间段
time-range WORK-TIME 08:00 to 18:00 working-day
# ACL引用时间段
acl 3000
rule permit ip source any destination any time-range WORK-TIME
rule deny ip source any destination any

七、华为设备配置命令示例#

7.1 基本ACL配置与应用#

Terminal window
# 创建基本ACL
acl 2000
rule 5 permit source 192.168.1.0 0.0.0.255
rule 10 deny source 192.168.2.0 0.0.0.255
rule 15 permit source any
# 在接口上应用(traffic-filter)
interface GigabitEthernet0/0/1
traffic-filter inbound acl 2000

7.2 高级ACL配置与应用#

Terminal window
# TCP/UDP端口过滤
acl 3000
rule 5 permit tcp source 192.168.1.0 0.0.0.255 destination any destination-port eq 80
rule 10 permit tcp source 192.168.1.0 0.0.0.255 destination any destination-port eq 443
rule 15 deny tcp source any destination any destination-port range 1 1024
rule 20 permit ip source any destination any
# ICMP过滤
acl 3001
rule 5 permit icmp source 192.168.1.0 0.0.0.255 destination any icmp-type echo
rule 10 deny icmp source any destination any
# 在接口应用
interface GigabitEthernet0/0/1
traffic-filter inbound acl 3000

7.3 命名ACL配置#

Terminal window
# 创建命名ACL(高级)
acl name DENY-P2P advance
rule 5 deny udp source any destination any destination-port range 6881 6889
rule 10 deny tcp source any destination any destination-port range 6881 6889
rule 15 permit ip source any destination any
# 可编辑已存在规则
acl name DENY-P2P advance
rule 5 deny tcp source 10.1.1.0 0.0.0.255 destination any destination-port eq 23
# 在接口应用
interface GigabitEthernet0/0/1
traffic-filter inbound acl name DENY-P2P

7.4 ACL匹配顺序配置#

Terminal window
# config模式(默认)
acl 3000 match-order config
rule 5 permit ip source 10.1.1.1 0 destination any
rule 10 deny ip source 10.1.1.0 0.0.0.255 destination any
# auto模式
acl 3000 match-order auto
rule permit ip source 10.1.1.1 0 destination any # 自动排第一
rule deny ip source 10.1.1.0 0.0.0.255 destination any # 自动排第二

7.5 时间段ACL配置#

Terminal window
# 定义时间段
time-range OFF-HOURS 18:00 to 23:59 working-day
# 时间段ACL
acl 3000
rule 5 deny ip source 192.168.1.0 0.0.0.255 destination any time-range OFF-HOURS
rule 10 permit ip source any destination any

7.6 ACL在VTY线路上应用(控制Telnet/SSH访问)#

Terminal window
# 创建管理ACL
acl 2001
rule 5 permit source 192.168.100.0 0.0.0.255
rule 10 deny source any
# 在VTY线路应用(仅允许特定网段远程管理)
user-interface vty 0 4
acl 2001 inbound
authentication-mode aaa
protocol inbound ssh

7.7 ACL在路由策略中的应用#

Terminal window
# ACL用于匹配路由
acl 2000
rule 5 permit source 10.1.1.0 0.0.0.255
# 路由策略引用ACL
route-policy FILTER permit node 10
if-match acl 2000
apply cost 100

7.8 ACL在NAT中的应用#

Terminal window
# ACL匹配需要NAT转换的内网地址
acl 2000
rule 5 permit source 192.168.1.0 0.0.0.255
rule 10 permit source 192.168.2.0 0.0.0.255
# NAT引用ACL
nat address-group 1 100.1.1.1 100.1.1.10
interface GigabitEthernet0/0/1
nat outbound 2000 address-group 1

八、常见故障排查#

8.1 故障排查流程#

ACL规则不生效

ACL配置正确?

检查规则语法

通配符掩码/端口号

接口应用正确?

检查traffic-filter

应用方向和接口

匹配顺序正确?

检查config/auto

rule-id顺序

被其他规则提前匹配?

调整规则顺序

或细化匹配条件

检查时间范围/其他限制

ACL规则不生效

ACL配置正确?

检查规则语法

通配符掩码/端口号

接口应用正确?

检查traffic-filter

应用方向和接口

匹配顺序正确?

检查config/auto

rule-id顺序

被其他规则提前匹配?

调整规则顺序

或细化匹配条件

检查时间范围/其他限制

8.2 常见问题#

问题可能原因排查方法
ACL规则不生效未在接口应用display traffic-filter applied-record
应用方向错误确认inbound/outbound方向
被前面的规则提前匹配查看命中计数判断哪条规则生效
通配符掩码写错检查 0.0.0.255 是否写成了 255.255.255.0
误过滤正常流量规则配置精度不足细化匹配条件,增加例外规则
匹配顺序错误config模式下检查rule-id顺序
未加最终的permit ip any注意隐含 deny all
ACL命中计数异常流量未经过该接口确认数据走向
路由导致走其他路径display ip routing-table 验证

8.3 常用排错命令#

Terminal window
display acl all # 查看所有ACL配置
display acl 3000 # 查看指定ACL详情(含命中计数)
display traffic-filter applied-record # 查看接口ACL应用情况
display traffic-filter statistics interface GigabitEthernet0/0/1 # 接口ACL统计
reset acl counter all # 清空ACL命中计数器

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!

打赏

评论区

Profile Image of the Author
zs13
Hello, I'm Zs13.
公告
欢迎来到我的博客!
分类
标签
最新动态
站点统计
文章
22
分类
1
标签
46
总字数
64,717
运行时长
0
最后活动
0 天前
站点信息
构建平台
EdgeOne Pages
博客版本
Firefly v6.15.10
文章许可
CC BY-NC-SA 4.0