微信优化

weixinyouhua

华为ACL配置实例有哪些常用命令?华为ACL配置命令详解

2026-09-23 16:07:00

华为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末尾隐藏着一条“拒绝所有”的规则,如果前面没放行,流量就被偷偷拦住了。

所以写规则的套路永远是:

  1. 先写具体的deny语句,把要拒绝的流量框住
  2. 再写一条permit any,把剩下没拒绝的全部放行
  3. 最后一条系统自带的deny any兜底,作为最后防线

华为交换机ACL限制某个IP访问的具体操作

假设一个具体场景:办公网里有一台研发测试机(192.168.10.88),需要禁止它访问财务服务器(192.168.20.6)的3389端口(远程桌面),但允许它访问其他所有资源。

华为ACL配置实例有哪些常用命令?华为ACL配置命令详解

登录交换机后,按下面步骤操作:

# 第一步:创建高级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配置实例有哪些常用命令?华为ACL配置命令详解

第一步:创建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,但华为接口调用时还必须区分二层口和三层口。

华为ACL配置实例有哪些常用命令?华为ACL配置命令详解

三层接口上用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(对象组)把多个端口打包成一个组,规则里直接引用对象组,这样写法更简洁。

相关文章

2024年,SaaS软件行业碰到获客难、增长慢等问题吗?

我们努力让每一次邂逅总能超越期待