Skip to content

ACL 访问控制列表与华为设备配置实操 ​

ACL(Access Control List,访问控制列表)是网络设备上最基础、最常用的流量控制工具。本文覆盖 ACL 的匹配机制、通配符掩码、基本/高级 ACL 的配置语法,并提供两台华为路由器的完整实操实验:部门隔离、服务器保护、远程管理加固三个递进需求。

一、ACL 概述:本质与应用场景 ​

1.1 ACL 的本质 ​

ACL 本质上是一组按顺序排列的 permit / deny 匹配规则的集合,用来描述"什么样的报文"。

两个关键认知:

  • ACL 只是匹配工具,本身不能过滤流量——必须被具体特性调用后才产生实际动作;
  • permit / deny 在不同应用场景中含义不同:包过滤场景中是"放行 / 丢弃",NAT 场景中是"需要转换 / 不转换"。

1.2 典型应用场景 ​

应用场景引用位置permit / deny 的含义
接口包过滤(traffic-filter)接口视图放行 / 丢弃
远程登录限制(vty + acl)用户界面视图允许登录 / 拒绝登录
NAT 地址转换NAT 视图需要转换的流量
IPSec VPN 感兴趣流IPSec 策略需要加密保护的流量
QoS 流分类traffic classifier归入某类流量
路由过滤route-policy / filter-policy匹配某条路由

二、ACL 的匹配机制(三条铁律) ​

  1. 顺序匹配,命中即止:报文从 rule-id 最小的规则开始逐条比较,一旦命中某条规则,立即执行该规则的动作,不再检查后续规则;
  2. 未命中默认放行(华为):包过滤场景中,报文若与所有规则都不匹配,默认转发——思科则是隐含 deny any 全部丢弃,这是两大厂商最重要的差异点;
  3. 规则三要素:每条规则由"规则号 + 动作 + 匹配条件"构成,条件不满足就是未命中,继续比下一条。

排序模式(创建 ACL 时可选):

  • config(默认):严格按 rule-id 从小到大匹配;
  • auto:系统按"深度优先"原则自动排序,匹配条件越精确的规则越靠前。

三、ACL 的分类与编号 ​

分类编号范围可匹配要素典型用途
基本 ACL2000~2999仅源 IP 地址粗粒度控制,如禁止某网段
高级 ACL3000~3999源/目的 IP、协议、源/目的端口、ICMP 类型等(五元组)精确控制,如只禁 ping 放行 Web
二层 ACL4000~4999源/目的 MAC、VLAN ID、二层协议类型二层流量过滤
用户 ACL6000~6999用户组信息华为特有,较少使用

部署经验法则:

  • 基本 ACL 只认源地址,应部署在靠近目的端、且用出方向(outbound)——避免在源端误伤"同源不同目的"的流量;
  • 高级 ACL 五元组全匹配,应部署在靠近源端的入方向(inbound)——尽早丢弃不需要的流量,节省链路与设备资源。

四、通配符掩码详解 ​

通配符掩码(wildcard mask)写法与子网掩码相似,但含义相反:0 表示必须精确匹配,1 表示该位任意。

写法含义等价简写
192.168.10.0 0.0.0.255匹配 192.168.10.0/24 整个网段—
192.168.10.100 0.0.0.0匹配单台主机host 192.168.10.100
0.0.0.0 255.255.255.255匹配任意地址any
192.168.10.0 0.0.0.3匹配 192.168.10.0/30 共 4 个地址—
10.1.0.0 0.0.255.255匹配 10.1.0.0/16 整个 B 段—

与子网掩码的对比:

对比项子网掩码通配符掩码
用途划分网络位与主机位指明哪些位必须匹配
数值含义1 = 网络位0 = 必须精确匹配
连续性1 必须连续常规写法连续,也支持非连续(如 0.1.0.1)

五、基本 ACL 配置语法 ​

[R1] acl number 2000
[R1-acl-basic-2000] description DENY-MARKET-TO-FINANCE      # 可选:备注用途
[R1-acl-basic-2000] rule 5 deny source 192.168.20.0 0.0.0.255
[R1-acl-basic-2000] rule 10 permit source any               # 可选:显式放行其余(华为默认已放行)
[R1-acl-basic-2000] quit
[R1] interface GigabitEthernet0/0/3
[R1-GigabitEthernet0/0/3] traffic-filter outbound acl 2000  # 接口出方向应用

命令要素解析:

  • rule [rule-id]:规则号可省略,省略时按步长(默认 5)自动分配;
  • permit / deny:动作;
  • source <地址> <通配符>:源地址匹配条件;
  • traffic-filter { inbound | outbound } acl <编号>:在接口某方向应用包过滤。

六、高级 ACL 配置语法 ​

[R2] acl number 3000
[R2-acl-adv-3000] rule 5 deny icmp source 192.168.10.0 0.0.0.255 destination 192.168.30.100 0.0.0.0
[R2-acl-adv-3000] rule 10 permit tcp source 192.168.20.0 0.0.0.255 destination 192.168.30.100 0.0.0.0 destination-port eq www
[R2-acl-adv-3000] quit

端口匹配操作符:

操作符含义示例
eq等于destination-port eq www
gt大于destination-port gt 1024
lt小于destination-port lt 1024
neq不等于destination-port neq 8080
range介于两数之间destination-port range 20 21

常见端口速查:

端口服务传输层协议
80 / 443HTTP / HTTPSTCP
21 + 20FTP 控制 / 数据TCP
22SSHTCP
23TelnetTCP
53DNSTCP / UDP
25 / 110SMTP / POP3TCP

七、完整实操实验 ​

7.1 实验拓扑与环境 ​

以 eNSP 中的华为 AR 系列路由器(VRP 平台)为例,接口编号以实际设备为准。

PC1(市场部) ──── GE0/0/2 ┐
192.168.20.10            │
                        [R1] ── GE0/0/1: 10.1.12.1/24 ──┐
PC2(财务部) ──── GE0/0/3 ┘                              │ 互联网段 10.1.12.0/24
192.168.10.10                                           │
                                   GE0/0/1: 10.1.12.2/24 ── [R2] ── GE0/0/2 ── Server
                                                              (192.168.30.254)  192.168.30.100

管理主机 192.168.10.100 与 PC2 同属财务部网段(192.168.10.0/24)

7.2 地址规划与实验需求 ​

地址规划:

设备/主机接口/位置IP 地址说明
R1GE0/0/110.1.12.1/24与 R2 互联
R1GE0/0/2192.168.20.254/24市场部网关
R1GE0/0/3192.168.10.254/24财务部网关
R2GE0/0/110.1.12.2/24与 R1 互联
R2GE0/0/2192.168.30.254/24服务器区网关
PC1市场部192.168.20.10/24网关指向 .254
PC2财务部192.168.10.10/24网关指向 .254
管理主机财务部192.168.10.100/24唯一允许 telnet R2 的主机
Server服务器区192.168.30.100/24Web / FTP 服务器

实验需求:

需求内容ACL 类型应用位置
1禁止市场部访问财务部基本 ACL 2000R1 GE0/0/3 outbound(靠近目的)
2禁止财务部 ping 服务器,但其 Web/FTP 访问不受影响高级 ACL 3000R1 GE0/0/3 inbound(靠近源端)
3仅允许管理主机 192.168.10.100 telnet R2基本 ACL 2001 + vtyR2 用户界面 inbound

7.3 第一步:基础配置(接口 + 路由) ​

R1 配置:

<Huawei> system-view
[Huawei] sysname R1
[R1] interface GigabitEthernet0/0/1
[R1-GigabitEthernet0/0/1] ip address 10.1.12.1 24
[R1-GigabitEthernet0/0/1] quit
[R1] interface GigabitEthernet0/0/2
[R1-GigabitEthernet0/0/2] ip address 192.168.20.254 24
[R1-GigabitEthernet0/0/2] quit
[R1] interface GigabitEthernet0/0/3
[R1-GigabitEthernet0/0/3] ip address 192.168.10.254 24
[R1-GigabitEthernet0/0/3] quit
[R1] ip route-static 0.0.0.0 0 10.1.12.2

R2 配置:

<Huawei> system-view
[Huawei] sysname R2
[R2] interface GigabitEthernet0/0/1
[R2-GigabitEthernet0/0/1] ip address 10.1.12.2 24
[R2-GigabitEthernet0/0/1] quit
[R2] interface GigabitEthernet0/0/2
[R2-GigabitEthernet0/0/2] ip address 192.168.30.254 24
[R2-GigabitEthernet0/0/2] quit
[R2] ip route-static 192.168.10.0 24 10.1.12.1
[R2] ip route-static 192.168.20.0 24 10.1.12.1

基础连通性确认:此时 PC1、PC2 均可 ping 通 192.168.30.100。

7.4 需求 1:基本 ACL 实现部门隔离 ​

[R1] acl number 2000
[R1-acl-basic-2000] description DENY-MARKET-TO-FINANCE
[R1-acl-basic-2000] rule 5 deny source 192.168.20.0 0.0.0.255
[R1-acl-basic-2000] quit
[R1] interface GigabitEthernet0/0/3
[R1-GigabitEthernet0/0/3] traffic-filter outbound acl 2000
[R1-GigabitEthernet0/0/3] quit

原理说明:ACL 2000 只匹配源地址。若挂在市场部入接口 GE0/0/2 的 inbound,会把市场部去往服务器等所有流量一并拦掉;挂在目的端(财务部)GE0/0/3 的出方向,则只拦截"进入财务部网段"的流量,市场部访问服务器不受影响——这正是"基本 ACL 靠近目的端、出方向"的原因。

7.5 需求 2:高级 ACL 只禁财务部 ping 服务器 ​

[R1] acl number 3000
[R1-acl-adv-3000] description DENY-FINANCE-PING-SERVER
[R1-acl-adv-3000] rule 5 deny icmp source 192.168.10.0 0.0.0.255 destination 192.168.30.100 0.0.0.0
[R1-acl-adv-3000] quit
[R1] interface GigabitEthernet0/0/3
[R1-GigabitEthernet0/0/3] traffic-filter inbound acl 3000
[R1-GigabitEthernet0/0/3] quit

原理说明:高级 ACL 精确匹配"源 10.0 网段 → 目的 30.100、ICMP 协议",只拦 ping,财务部的 HTTP/FTP 流量因协议不匹配而不受影响;应用在靠近源端的入方向,报文一进设备就被丢弃,不再占用互联链路带宽。此时 GE0/0/3 一个接口两个方向各挂一个 ACL(out 2000 / in 3000),符合"同接口同方向仅一个 ACL"的限制。

7.6 需求 3:vty + ACL 远程管理加固 ​

[R2] telnet server enable
[R2] acl number 2001
[R2-acl-basic-2001] rule 5 permit source 192.168.10.100 0.0.0.0
[R2-acl-basic-2001] rule 10 deny
[R2-acl-basic-2001] quit
[R2] aaa
[R2-aaa] local-user admin password cipher Huawei@123
[R2-aaa] local-user admin privilege level 3
[R2-aaa] local-user admin service-type telnet
[R2-aaa] quit
[R2] user-interface vty 0 4
[R2-ui-vty0-4] authentication-mode aaa
[R2-ui-vty0-4] acl 2001 inbound
[R2-ui-vty0-4] quit

原理说明:vty 场景中 ACL 的语义与 traffic-filter 不同——只有命中 permit 的源才允许登录,其余(deny 或未命中)一律拒绝,所以必须显式 permit 管理主机;rule 10 deny 虽然语义上冗余,但明示了"拒绝其他所有源"的管理意图,便于审计。ACL 拦截发生在账号认证之前,非法源连密码输入界面都进不去。

7.7 结果验证 ​

验证需求 1(PC1 → PC2 被拦截):

PC1> ping 192.168.10.10
--- 192.168.10.10 ping statistics ---
5 packet(s) transmitted, 0 packet(s) received, 100.00% packet loss

说明:PC2 → PC1 方向 ping 同样超时——请求能到达 PC1,但回包源地址是 192.168.20.10,出 GE0/0/3 时再次被 ACL 2000 命中。这是基本 ACL"只认源地址"带来的天然效果:两端流量都被拦死。

验证需求 2(PC2 ping 服务器被拦、HTTP 不受影响;PC1 不受影响):

PC2> ping 192.168.30.100
--- 192.168.30.100 ping statistics ---
5 packet(s) transmitted, 0 packet(s) received, 100.00% packet loss

PC2> 访问 http://192.168.30.100 → 页面正常打开(未命中 icmp 规则,默认放行)

PC1> ping 192.168.30.100
--- 192.168.30.100 ping statistics ---
5 packet(s) transmitted, 5 packet(s) received, 0.00% packet loss

验证需求 3(telnet 对比):

PC2(192.168.10.10)> telnet 10.1.12.2
Error: Failed to connect to the remote host.      # 被 vty 的 ACL 2001 拦截,进不了认证环节

管理主机(192.168.10.100)> telnet 10.1.12.2
  Login authentication
  Username: admin
  Password:
<R2>                                              # 登录成功,获得管理级别权限

查看设备侧规则与命中情况:

[R1] display acl 2000
Basic ACL 2000, 1 rule
Acl's step is 5
 rule 5 deny source 192.168.20.0 0.0.0.255

[R1] display acl 3000
Advanced ACL 3000, 1 rule
Acl's step is 5
 rule 5 deny icmp source 192.168.10.0 0.0.0.255 destination 192.168.30.100 0.0.0.0

[R1] display traffic-filter applied-record
Interface                  Direction    Acl
GigabitEthernet0/0/3       inbound      3000
GigabitEthernet0/0/3       outbound     2000

八、扩展配置 ​

8.1 时间段 ACL ​

需求:工作日 9:00~18:00 禁止市场部 FTP 传输服务器文件,其余时间放行。

[R1] time-range worktime 09:00 to 18:00 working-day
[R1] acl number 3001
[R1-acl-adv-3001] rule 5 deny tcp source 192.168.20.0 0.0.0.255 destination 192.168.30.100 0.0.0.0 destination-port range 20 21 time-range worktime
[R1-acl-adv-3001] quit
[R1] interface GigabitEthernet0/0/1
[R1-GigabitEthernet0/0/1] traffic-filter outbound acl 3001

说明:range 20 21 同时覆盖 FTP 控制与数据端口;规则只在时间段内生效,下班后与周末自动放行(未命中默认放行)。

8.2 步长与自动排序 ​

[R1] acl number 2000
[R1-acl-basic-2000] step 10            # 修改步长为 10,新规则编号 15 → 25 → 35…
[R1-acl-basic-2000] quit
[R1] acl number 2002 match-order auto  # 创建自动排序 ACL

说明:默认步长 5 时,新规则编号按 5 递增,在两条规则之间最多只能手工插入 4 条;把步长调大(如 10)可为后续插入预留更多编号。match-order auto 模式下系统按深度优先自动排序,条件最精确的规则最先匹配,适合规则较多且不想手工维护编号的场景。

九、验证与排错命令 ​

命令视图作用
display acl [ 编号 / all ]任意查看 ACL 规则、步长与命中次数(times matched)
display traffic-filter applied-record任意查看 ACL 在各接口/方向的绑定情况
reset acl counter [ 编号 / all ]用户视图清零命中计数,便于重新观察
display time-range all任意查看时间段配置
display local-user任意查看 AAA 本地账号
display users任意查看当前登录的 vty 会话

排错三板斧:

  1. 查规则:display acl all 核对规则顺序、通配符、协议与端口是否写反(deny 写在 permit 后面会导致 deny 永远不生效);
  2. 查位置:display traffic-filter applied-record 核对 ACL 挂的接口与方向是否正确(最常见错误是挂错接口或 in/out 搞反);
  3. 验证生效:先 reset acl counter 清零,打一轮流量后再看命中次数是否增长——次数增长但流量仍通,说明存在其他路径或在别处被 permit。

十、注意事项 ​

  1. 基本 ACL 部署在靠近目的端的出方向,高级 ACL 部署在靠近源端的入方向;
  2. 华为未命中规则默认放行,思科默认全部拒绝——迁移或对照学习时务必核对默认动作;
  3. 同一接口同一方向只能应用一个 ACL,不同方向可以各挂一个(本实验 GE0/0/3 同时挂 3000 入方向、2000 出方向);
  4. config 模式下 rule-id 越小越先匹配,deny 规则要写在对应 permit 之前;新规则建议预留编号间隔(必要时调整 step);
  5. 通配符掩码与子网掩码含义相反,0 是精确匹配、1 是任意;
  6. traffic-filter 命中 deny 的报文被直接丢弃、不回应答报文,PC 端表现为 Request timeout(而非 Destination unreachable);
  7. 删除正在应用的 ACL 必须先在接口视图执行 undo traffic-filter ...,再 undo acl number ...,否则报错;
  8. 修改 ACL 规则后立即生效,无需重启接口;生产环境修改前先备份规则(display acl 导出)。

十一、面试高频问答 ​

  1. ACL 的本质是什么?什么时候才生效? ACL 是按顺序排列的匹配规则集合,本质是"匹配工具";只有被 traffic-filter、NAT、QoS、路由策略等特性引用后才产生实际动作。
  2. 华为与思科 ACL 未命中规则的默认动作有何区别? 华为默认放行(permit),思科隐含 deny any 全部丢弃。
  3. 基本 ACL 与高级 ACL 的区别及部署原则? 基本 ACL(2000~2999)只匹配源 IP,部署在靠近目的端的出方向;高级 ACL(3000~3999)匹配五元组,部署在靠近源端的入方向——基本 ACL 挂在源端会误伤同源不同目的的流量。
  4. 通配符掩码与子网掩码的区别? 通配符 0 表示必须精确匹配、1 表示任意,与子网掩码含义相反,且支持非连续写法。
  5. ACL 的匹配顺序如何确定? config 模式按 rule-id 从小到大,命中即止;auto 模式由系统按深度优先自动排序,精确规则优先。
  6. traffic-filter 与 vty 引用 ACL 时默认动作有何不同? 包过滤未命中默认放行;vty 场景只有命中 permit 的源才允许登录,deny 或未命中一律拒绝。
  7. 一个接口能应用几个 ACL?如何删除在用的 ACL? 华为同一接口同一方向只能应用一个;删除时先在接口 undo traffic-filter,再 undo acl number。
  8. PC ping 被 deny 后看到什么现象?为什么? Request timeout 持续超时——deny 报文被设备直接丢弃,不会返回 Destination unreachable 等应答。

十二、记忆口诀 ​

  • 编号分类:两千看源,三千全能,四千二层,六千用户;
  • 部署位置:基本靠近目的出,高级紧跟源头入;
  • 匹配规则:规则号小先比较,命中即停不再瞧;全部不中莫慌张,华为放行思科挡;
  • 通配符掩码:零是精确一随意;
  • 管理加固:ACL 挂 vty,认证之前先比对。