第39篇:ACL 基础:标准 ACL 与扩展 ACL

关键词:ACL、基本ACL、高级ACL、流分类、通配符掩码、permit、deny


一、引言

ACL(Access Control List,访问控制列表)是网络中最基础的流量控制工具。它通过定义一组规则来匹配报文,并对匹配到的报文执行允许(permit)或拒绝(deny)操作。ACL 的应用场景远超"访问控制"本身——它在路由过滤、策略路由、QoS 流分类、NAT 地址转换等场景中都扮演着关键角色。

二、ACL 的分类

2.1 华为 ACL 类型与编号

ACL 类型 编号范围 匹配条件 主要用途
基本 ACL 2000-2999 源 IP 地址 简单的源地址过滤
高级 ACL 3000-3999 源/目的 IP、协议、端口、ToS 等 精细的五元组匹配
二层 ACL 4000-4999 源/目的 MAC、802.1p、VLAN 数据帧级别过滤
用户自定义 ACL 5000-5999 用户自定义匹配字段 特殊场景

说明:早期华为文档中常将"基于 MAC 的二层 ACL"和"用户自定义 ACL"都笼统归到 5000-5999 范围,容易让人误以为存在单独的"MAC ACL"。实际在大多数 VRP 版本中,MAC 级别的过滤通过 4000-4999 的二层 ACL 完成;5000-5999 通常用作用户自定义 ACL 编号空间,二者并不并存同号。

2.2 基本 ACL vs 高级 ACL 对比

维度 基本 ACL(2000-2999) 高级 ACL(3000-3999)
匹配能力 仅源 IP 源/目的 IP、协议、端口、DSCP 等
粒度 粗 细
性能 略高(匹配字段少) 略低(匹配字段多)
应用场景 简单源地址过滤 精细化流量控制
建议部署位置 靠近目的端(影响范围大) 靠近源端(精确控制)

2.3 通配符掩码(Wildcard Mask)

ACL 使用通配符掩码而非子网掩码来匹配地址:

通配符位 含义 示例
0 必须精确匹配 —
1 不关心(任意值) —

通配符掩码 = ~子网掩码(按位取反):

子网掩码 通配符掩码 匹配范围
255.255.255.255 (/32) 0.0.0.0 单个 IP
255.255.255.0 (/24) 0.0.0.255 一个 /24 网段
255.255.0.0 (/16) 0.0.255.255 一个 /16 网段
255.0.0.0 (/8) 0.255.255.255 一个 /8 网段
0.0.0.0 255.255.255.255 所有地址

三、技术细节

3.1 基本 ACL 配置

# 创建基本 ACL 2000
[HUAWEI] acl 2000

# 允许 192.168.1.0/24 网段
[HUAWEI-acl-basic-2000] rule 5 permit source 192.168.1.0 0.0.0.255

# 拒绝 192.168.2.100 单个主机
[HUAWEI-acl-basic-2000] rule 10 deny source 192.168.2.100 0

# 末尾隐式 deny any 自动生效
[HUAWEI-acl-basic-2000] quit

3.2 高级 ACL 配置

# 创建高级 ACL 3000
[HUAWEI] acl 3000

# 允许 192.168.1.0/24 访问 10.0.0.0/24 的 HTTP(80)和 HTTPS(443)
[HUAWEI-acl-adv-3000] rule 5 permit tcp source 192.168.1.0 0.0.0.255 destination 10.0.0.0 0.0.0.255 destination-port eq 80
[HUAWEI-acl-adv-3000] rule 10 permit tcp source 192.168.1.0 0.0.0.255 destination 10.0.0.0 0.0.0.255 destination-port eq 443

# 允许 DNS(UDP 53)
[HUAWEI-acl-adv-3000] rule 15 permit udp source 192.168.1.0 0.0.0.255 destination 10.0.0.0 0.0.0.255 destination-port eq 53

# 允许 ICMP(ping)
[HUAWEI-acl-adv-3000] rule 20 permit icmp source 192.168.1.0 0.0.0.255 destination 10.0.0.0 0.0.0.255

# 末尾隐式 deny any 自动生效
[HUAWEI-acl-adv-3000] quit

3.3 常用协议与端口

协议 传输层 端口 说明
FTP TCP 20/21 文件传输(21 控制,20 数据)
SSH TCP 22 安全远程登录
Telnet TCP 23 远程登录(明文,不安全)
SMTP TCP 25 邮件发送
POP3 / IMAP TCP 110 / 143 邮件接收
DNS UDP / TCP 53 域名解析(查询 UDP,大响应/区域传送 TCP)
HTTP TCP 80 网页浏览
HTTPS TCP 443 TLS 加密网页
RDP TCP 3389 远程桌面
HTTP-Alt TCP 8080 代理 / 开发服务器
DHCP UDP 67/68 地址分配(67 服务端,68 客户端)
SNMP UDP 161/162 网管监控 / 告警
NTP UDP 123 时间同步

3.4 ACL 的应用(调用)方式

ACL 本身只是规则集合,必须"应用"到具体场景才生效:

应用场景 应用方式 命令示例
接口入/出方向过滤 traffic-filter traffic-filter inbound acl 3000
策略路由 traffic classifier if-match acl 3001
路由协议过滤 filter-policy filter-policy 2000 export
NAT 地址转换 nat outbound nat outbound 2000(接口视图)
QoS 流分类 traffic classifier if-match acl 3000

3.5 ACL 的隐式拒绝

每个 ACL 的末尾都有一条隐式的 deny any 规则。如果所有显式规则都没有匹配,报文被丢弃。

ACL 的隐式拒绝 - 图示

四、实战配置与故障案例

4.1 案例一:在接口上应用 ACL 过滤流量

需求:禁止 192.168.10.0/24 网段访问互联网,但允许访问内网服务器 10.0.0.0/24。

# 定义 ACL
[HUAWEI] acl 3001
[HUAWEI-acl-adv-3001] rule 5 permit ip source 192.168.10.0 0.0.0.255 destination 10.0.0.0 0.0.0.255
[HUAWEI-acl-adv-3001] rule 10 deny ip source 192.168.10.0 0.0.0.255
[HUAWEI-acl-adv-3001] rule 15 permit ip    # 允许其他所有流量
[HUAWEI-acl-adv-3001] quit

# 在接口入方向应用 ACL
[HUAWEI] interface GigabitEthernet0/0/0
[HUAWEI-GigabitEthernet0/0/0] traffic-filter inbound acl 3001
[HUAWEI-GigabitEthernet0/0/0] quit

# 验证 ACL 命中统计
# traffic-filter 场景下 display acl 即可看到硬件命中计数
<HUAWEI> display acl 3001
# 如需查看接口级 traffic-filter 绑定关系
<HUAWEI> display traffic-filter interface GigabitEthernet 0/0/0

4.2 案例二:ACL 通配符掩码计算错误

故障描述:配置 ACL 时部分 IP 未被正确匹配。

# 错误配置:意图匹配 192.168.1.0/24,却把子网掩码当作第二位参数
[HUAWEI-acl-basic-2000] rule 5 permit source 192.168.1.0 255.255.255.0
# ↑ 华为把该参数一律按通配符解释(0=精确匹配,1=不关心),不会"按位反转"成子网掩码语义
# 255.255.255.0 表示前 24 位不关心、仅最后 8 位必须等于 0 → 实际匹配"任意网段的 .0 地址",
# 与预期的 192.168.1.0/24 完全不是一回事,且往往比预期宽得多

# 正确配置:通配符掩码 = 子网掩码的按位取反
[HUAWEI-acl-basic-2000] rule 5 permit source 192.168.1.0 0.0.0.255

# 常见错误对照
# | 意图匹配 | 错误的通配符 | 正确的通配符 |
# |---------|------------|------------|
# | /24    | 255.255.255.0 | 0.0.0.255 |
# | /16    | 255.255.0.0   | 0.0.255.255 |
# | 单 IP  | 255.255.255.255 | 0.0.0.0 |

4.3 案例三:ACL 规则顺序不当

故障描述:配置了 ACL 后,所有来自 192.168.0.0/16 的流量都被拒绝,包括本应允许的 192.168.1.0/24。

# 错误配置
[HUAWEI-acl-basic-2000] rule 5 deny source 192.168.0.0 0.0.255.255
[HUAWEI-acl-basic-2000] rule 10 permit source 192.168.1.0 0.0.0.255
# ↑ rule 10 永远不生效,因为 192.168.1.x 已被 rule 5 拒绝

# 正确配置:精确规则在前,宽泛规则在后
[HUAWEI-acl-basic-2000] rule 5 permit source 192.168.1.0 0.0.0.255
[HUAWEI-acl-basic-2000] rule 10 deny source 192.168.0.0 0.0.255.255

4.4 案例四:ACL 用于路由过滤

# 定义 ACL 匹配需要过滤的路由
[HUAWEI] acl 2000
[HUAWEI-acl-basic-2000] rule 5 deny source 10.1.1.0 0.0.0.255
[HUAWEI-acl-basic-2000] rule 10 permit
[HUAWEI-acl-basic-2000] quit

# 在 OSPF 中应用过滤(不向外发布 10.1.1.0/24)
[HUAWEI] ospf 1
[HUAWEI-ospf-1] filter-policy 2000 export
[HUAWEI-ospf-1] quit

# 在 RIP 中应用过滤
[HUAWEI] rip 1
[HUAWEI-rip-1] filter-policy 2000 export
[HUAWEI-rip-1] quit

五、总结

ACL 类型 编号 匹配项 建议部署位置
基本 ACL 2000-2999 源 IP 靠近目的端
高级 ACL 3000-3999 五元组 靠近源端
二层 ACL 4000-4999 MAC/VLAN 接入层
配置要点 说明
通配符掩码 非子网掩码,是子网掩码的取反
规则顺序 从上到下匹配,首次匹配即停止
精确优先 精确规则放前面,宽泛规则放后面
隐式拒绝 ACL 末尾自动添加 deny any
命中统计 转发面命中用 display acl dataplane statistics 查看

思考

  1. 为什么基本 ACL 建议部署在靠近目的端,而高级 ACL 建议部署在靠近源端?
  2. 通配符掩码 0.0.0.255 和 0.0.0.127 分别匹配多少个 IP 地址?
  3. ACL 的隐式 deny any 在实际配置中应该显式写出来吗?为什么?

下篇预告:第40篇:ACL 匹配顺序:配置顺序 vs 自动排序