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

一、写在前面

ACL(Access Control List,访问控制列表) 是网络设备上过滤流量的基本工具。

你可以把 ACL 想象成"门禁系统": - 门禁有一个名单(ACL 规则) - 每个人(数据包)来了,检查是否符合名单上的规则 - 符合规则就放行(permit)或拦截(deny)

ACL 是网络安全和流量控制的第一道防线,也是配置 NAT、策略路由、QoS 等功能的基础。


二、ACL 的基本概念

2.1 ACL 做什么?

用途 说明
流量过滤 允许或拒绝特定流量通过
NAT 匹配 哪些内网 IP 需要做 NAT
策略路由匹配 哪些流量走策略路由
QoS 分类 对特定流量做优先级标记
防火墙策略 基础包过滤

2.2 ACL 的组成

每条 ACL 由多条规则(Rule) 组成,从上到下顺序匹配。

acl 3000
 rule 5 deny ip source 10.0.1.0 0.0.0.255 destination 10.0.2.0 0.0.0.255
 rule 10 permit ip

三、ACL 的分类

华为设备中 ACL 按编号范围功能分类:

ACL 类型 编号范围 匹配条件
基本 ACL(标准 ACL) 2000~2999 源 IP 地址
高级 ACL(扩展 ACL) 3000~3999 源 IP、目的 IP、协议类型、端口号
二层 ACL 4000~4999 源 MAC、目的 MAC、二层协议类型
用户自定义 ACL 5000~5999 用户自定义报文偏移量

最常用的是基本 ACL(2000~2999)和高级 ACL(3000~3999)。


四、标准 ACL(基本 ACL)

4.1 特点

只能匹配源 IP 地址
acl 2000
 rule 5 permit source 10.0.1.0 0.0.0.255
 rule 10 deny source any

4.2 通配符掩码

标准 ACL 使用通配符掩码(Wildcard Mask) 来匹配 IP 范围:

通配符 含义
0.0.0.0 精确匹配(匹配单个 IP)
0.0.0.255 匹配最后 8 位任意(C 类网段)
0.0.255.255 匹配最后 16 位任意(B 类网段)
255.255.255.255 匹配所有 IP(any)

通配符 vs 子网掩码:

子网掩码:255.255.255.0 → 网络位为 1,主机位为 0
通配符掩码:0.0.0.255   → 严格位为 0,任意位为 1

两者完全反着!

4.3 标准 ACL 配置示例

需求:只允许 10.0.1.0/24 网段的流量通过,拒绝其他。

[R1] acl 2000
[R1-acl-basic-2000] rule 5 permit source 10.0.1.0 0.0.0.255
[R1-acl-basic-2000] rule 10 deny source any
[R1-acl-basic-2000] quit

# 应用在接口出方向
[R1] interface gigabitethernet 0/0/1
[R1-GigabitEthernet0/0/1] traffic-filter outbound acl 2000

五、扩展 ACL(高级 ACL)

5.1 特点

可以匹配:
  源 IP、目的 IP
  IP 协议类型(TCP/UDP/ICMP/OSPF 等)
  源端口、目的端口
  TCP 标志位(SYN/ACK/FIN)
  DSCP 优先级
  ...

5.2 配置语法

rule [编号] {permit|deny} {协议} 
  source {源IP} {通配符} [源端口]
  destination {目的IP} {通配符} [目的端口]

5.3 扩展 ACL 配置示例

示例 1:禁止从 10.0.1.0/24 访问 10.0.2.100 的 Web 服务

[R1] acl 3000
[R1-acl-adv-3000] rule 5 deny tcp source 10.0.1.0 0.0.0.255 destination 10.0.2.100 0 eq 80
[R1-acl-adv-3000] rule 10 permit ip
[R1-acl-adv-3000] quit

[R1] interface gigabitethernet 0/0/1
[R1-GigabitEthernet0/0/1] traffic-filter inbound acl 3000

示例 2:只允许特定主机 ping 服务器

[R1] acl 3001
[R1-acl-adv-3001] rule 5 permit icmp source 10.0.1.100 0 destination 10.0.2.100 0
[R1-acl-adv-3001] rule 10 deny icmp source any destination 10.0.2.100 0
[R1-acl-adv-3001] rule 15 permit ip

示例 3:禁止 FTP 访问(TCP 20/21 端口)

[R1] acl 3002
[R1-acl-adv-3002] rule 5 deny tcp source any destination 10.0.2.0 0.0.0.255 range 20 21
[R1-acl-adv-3002] rule 10 permit ip

六、标准 ACL vs 扩展 ACL 对比

对比项 标准 ACL(2000~2999) 扩展 ACL(3000~3999)
匹配条件 仅源 IP 源/目的 IP、协议、端口
粒度
规则条数 可很多
配置复杂度 简单 较复杂
性能 稍差(匹配项多)
推荐度 简单过滤场景 推荐使用

七、ACL 的应用方向

7.1 接口方向

inbound:流量进入接口时匹配
outbound:流量从接口发出时匹配

[R1-GigabitEthernet0/0/1] traffic-filter inbound acl 3000
[R1-GigabitEthernet0/0/1] traffic-filter outbound acl 2000

7.2 应用位置的选择

inbound 过滤(推荐):
  流量一进接口就过滤 → 节省 CPU 处理后续流程

outbound 过滤:
  流量已经过路由查表后才过滤 → 允许更多控制
  但不需要的流量也走了路由表 → 浪费 CPU

八、查看 ACL

# 查看所有 ACL
[R1] display acl all
Total non-default ACLs: 2
  ACL 2000, 2 rules
  ACL 3000, 8 rules

# 查看指定 ACL
[R1] display acl 3000
ACL 3000, advanced, 3 rules
  Rule 5 deny tcp source 10.0.1.0 0.0.0.255 destination 10.0.2.100 0 eq 80
  Rule 10 deny tcp source 10.0.1.0 0.0.0.255 destination 10.0.2.100 0 eq 443
  Rule 15 permit ip

九、常见配置错误

错误 后果 正确做法
忘了配 permit ip any 所有流量都被 deny 检查最后一条规则,是否允许其他流量
通配符写反(写了子网掩码) 匹配不到想要的流量 记住通配符与子网掩码相反
顺序配反 规则被提前命中 精确的规则放前面,宽泛的放后面
没应用到接口 ACL 配了但不生效 必须应用到接口(traffic-filter)
inbound/outbound 方向选错 流量被意外过滤 确认流量方向和 ACL 方向匹配

十、思考

  1. 标准 ACL(2000~2999)能匹配哪些条件?扩展 ACL 能多匹配哪些?
  2. 通配符掩码 0.0.0.255 表示匹配什么范围?如果要匹配 192.168.0.0/16 应该用什么通配符?
  3. traffic-filter 在接口的 inbound 方向和 outbound 方向有什么区别?
  4. 配置 ACL 忘记配最后一条 permit ip 会导致什么后果?
  5. 写一条 ACL 规则:允许 10.0.1.0/24 访问 10.0.2.100 的 HTTP 服务(TCP 80),拒绝其他。
  6. ACL 编号 2000 和 3000 分别是什么类型的 ACL?如果在 2000 中配置了目的 IP 的条件,会怎样?

下篇预告:第40篇《ACL匹配顺序_配置顺序vs自动排序》——理解ACL匹配顺序的两种模式及其对策略的影响。