华为ACL配置实例的核心结论:把访问控制列表当作一张“门禁名单”,先写清楚谁可以过、谁不能过,再把名单贴到对应接口上,整个过程并不复杂,但接口方向、规则顺序和隐式拒绝这三个坑,足够让新手折腾一整天。
华为ACL配置实例:从规则到接口的完整链路
ACL在华为设备上的中文称呼是“访问控制列表”,通俗讲就是一张过滤表,这张表不是写出来就生效的,它必须被调用到某个具体位置才发挥作用,常见的调用位置有两个:接口的traffic-filter和业务的流策略。
先分清华为ACL三种编号段
搞懂编号段,你才能选对工具干活,华为VRP平台把ACL分成三个大类,编号范围天生就定死的:
- 基本ACL(2000-2999):只看源IP地址,适合简单场景,不让192.168.1.10这个地址上网”。
- 高级ACL(3000-3999):能看源IP、目的IP、协议类型、源端口、目的端口,场景复杂时用这个,只允许内网访问服务器的80端口,禁止访问其他端口”。
- 二层ACL(4000-4999):看MAC地址、VLAN ID等二层信息,主要用在接入层交换机上做精细化管控。
行业共识认为,90%以上的日常配置需求用基本ACL和高级ACL就能覆盖,其中高级ACL是排障排查最常用的,因为它能匹配的维度多,规则的精准度自然就高。
配置ACL的顺序逻辑:先写拒绝,再写允许
华为ACL的匹配规则是按rule编号从小到大逐条匹配,只要命中一条,后续规则不再查看,这里要特别注意:ACL末尾隐藏着一条“拒绝所有”的规则,如果前面没放行,流量就被偷偷拦住了。
所以写规则的套路永远是:
- 先写具体的deny语句,把要拒绝的流量框住
- 再写一条permit any,把剩下没拒绝的全部放行
- 最后一条系统自带的deny any兜底,作为最后防线
华为交换机ACL限制某个IP访问的具体操作
假设一个具体场景:办公网里有一台研发测试机(192.168.10.88),需要禁止它访问财务服务器(192.168.20.6)的3389端口(远程桌面),但允许它访问其他所有资源。

登录交换机后,按下面步骤操作:
# 第一步:创建高级ACL 3000 [Huawei] acl number 3000 # 第二步:写规则,先拒绝财务服务器的3389 [Huawei-acl-adv-3000] rule 5 deny tcp source 192.168.10.88 0 destination 192.168.20.6 0 destination-port eq 3389 # 第三步:允许其他所有流量 [Huawei-acl-adv-3000] rule 10 permit ip
注意源地址后面那个0,这是华为的通配符写法(反掩码),0代表精确匹配这一个IP地址,如果想匹配整个网段,比如192.168.10.0这个C类段,就写成0.0.255。
接下来把ACL应用到接口,流量从研发测试机出发,会先进到交换机接它的那个端口,所以要在入方向应用:
# 进入连接研发网的接口(假设是GE0/0/2) [Huawei] interface GigabitEthernet 0/0/2 # 在入方向调用ACL 3000 [Huawei-GigabitEthernet0/0/2] traffic-filter inbound acl 3000
到这一步,限制已经生效,测试机访问财务服务器的3389会被丢弃,但其他访问正常放行。
华为交换机ACL怎么同时限制多个IP地址
对手头地址段比较分散的情况,比如要同时限制三个不同IP,基本ACL由于只匹配源IP,反而写起来更轻便:
acl number 2000 rule 5 deny source 192.168.10.88 0 rule 10 deny source 192.168.10.99 0 rule 15 deny source 172.16.5.7 0 rule 20 permit source any
然后同样在接口上调用。这种多条deny规则逐一列出的方式,比高深莫测的地址组配置更直观,尤其适合地址数量在十条以内的场景。
华为防火墙ACL配置命令怎么写得规范
防火墙和交换机在调用ACL时思路完全不一样,如果你想在华为USG系列防火墙上做同样的限制,直接走安全策略而不是traffic-filter,原因很简单:防火墙默认拒绝所有流量,你必须显式放行,不能拿交换机的“permit any兜底”思路硬套。
在华为防火墙上配置的基本框架如下:
#第一步:创建ACL,用于匹配用户流量 [USG] acl number 3002 [USG-acl-adv-3002] rule 5 permit tcp source 192.168.10.88 0 destination 192.168.20.6 0 destination-port eq 3389 # 第二步:创建安全策略,引用上面的ACL,动作设为拒绝 [USG] security-policy [USG-policy-security] rule name deny_rdp [USG-policy-security-rule-deny_rdp] source-zone trust [USG-policy-security-rule-deny_rdp] destination-zone untrust [USG-policy-security-rule-deny_rdp] source-address 192.168.10.88 24 [USG-policy-security-rule-deny_rdp] destination-address 192.168.20.6 24 [USG-policy-security-rule-deny_rdp] action deny
防火墙上面的ACL更多是作为流量的“识别器”,负责告诉安全策略要去匹配哪些流量,真正的放行或丢弃动作由安全策略来决定,二者混淆是刚转防火墙的工程师最容易栽的跟头。
华为ACL允许ping通的配置实例
“华为ACL允许ping”这个话题经常有工程师来问,其实只需要一条高级ACL规则,放行ICMP协议即可,
acl number 3005 rule 5 permit icmp source 192.168.10.0 0.0.0.255 destination 192.168.20.0 0.0.0.255 rule 10 deny ip
这里有个细节容易踩坑:ICMP报文分好几种类型(echo request、echo reply等),如果只放行单向而不放行回程,ping测试照样不通,所以在交换机上配置成对设备之间的双向ICMP放行,要比单向放行更实用。
华为ACL与思科ACL配置区别在哪里
如果你以前用的是思科设备,转手去配华为设备,最先不适应的地方就是命名方式,思科标准ACL叫access-list 1,扩展ACL叫access-list 100;华为这边直接用编号区分,从2000起步,两者没有直接对应关系,配置时容易整混。
另外一个明显的区别是通配符的书写习惯:
- 思科:access-list 1 deny 192.168.10.88 0.0.0.0
- 华为:rule 5 deny source 192.168.10.88 0
华为默认把0省略看似省事了,但实际上每一条规则都要看有没有带0,在华为上想把通配符写完整也可以,写成0.0.0.0完全合法。
第三个区别在方向定义上,两者都支持inbound和outbound,但华为接口调用时还必须区分二层口和三层口。

三层接口上用traffic-filter inbound/outbound,二层接口上也可以直接调用,不过匹配的逻辑有所不同,思科则比较统一,接口下的ip access-group 1 in/out。
华为ACL配置完不生效,从哪里排错
配置不生效,首要怀疑的永远是规则顺序,比如先写了permit ip,再写deny tcp,那deny那条等于白写所有TCP流量在permit阶段就被放行了,这是新手最容易忽略的经典问题。
检查接口调用的方向,华为规定:接口的入方向过滤的是从外部进入接口的数据流量,出方向过滤的是从接口发送出去的数据流量,比如你限制了PC访问服务器,却把这个ACL调用到了服务器侧的接口出方向,流量根本不会匹配到规则。
再一个是查看ACL命中计数:
[Huawei] display acl 3000
输出结果里会显示每条规则的匹配次数,如果deny那条规则计数一直为0,说明流量压根没有走到这条规则前优先去查方向或接口应用位置,如果计数不断增长但业务还是通,检查是不是流量从其他路径绕过去了。
配置ACL这事,写规则不是难点,搞清楚流量是怎么流动的才是基本功,一张接口拓扑图画清楚,接口方向和规则顺序都顺了,大部分配置问题都能自己解决。
华为ACL配置实例常见疑问解答
华为ACL里permit any和permit ip有什么区别?
基本ACL中写permit any,表示放行所有源IP,而高级ACL里的permit ip表示放行所有IP协议报文,在实际效果上,对于绝大多数网络流量二者没有差别,但如果你在高级ACL里只写了permit icmp,没写permit ip,那其他协议照样会被隐式拒绝规则挡住,除非你后面再补一条permit ip。
华为交换机上一条规则能不能同时匹配多个TCP端口?
不能,华为ACL的一条rule中,destination-port只能填一个端口号或一个端口范围(通过lt、gt、range限定),想同时放行80和443两个端口,要写两条rule,不过从VRP5系列平台以后,可以借助object-group(对象组)把多个端口打包成一个组,规则里直接引用对象组,这样写法更简洁。

