号主:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部
来了,这个坑实在太经典。
ACL 配错,轻则某个端口不通,重则整段业务直接凉凉。
你以为是服务挂了、链路问题,其实一查配置,一条 ACL 把关键流量给咔嚓了。
更坑的是,有些误操作,还能持续不被发现好几天。
这篇文章,就来讲一讲——
01|以为“默认放行”,结果忘了写 permit
很多人 ACL 写完 deny 条目就完事了,心想“不写就默认通”,大错特错!
在华为设备上,ACL 是精确匹配,一旦没有匹配项,默认就是 deny all。
看这个配置:
acl 3000
rule 5 deny ip source 192.168.1.0 0.0.0.255
你是不是以为只禁掉 192.168.1.X 的流量,其他的都放行?
错! 其他没写的,也通不过,因为你没写 permit any。
正确写法:
acl 3000
rule 5 deny ip source 192.168.1.0 0.0.0.255
rule 10 permit ip
不写 permit,全阻断,这是第一大坑。
02|顺序写错,permit 被 deny 压住了
ACL 是自上而下匹配,匹配到就结束。
下面是一个 ACL 规则各部分的解释:
你以为写了放行规则就 OK,结果顺序一反,照样被前面 deny 条目挡住。
例子:
acl 3000
rule 5 deny ip
rule 10 permit ip source 192.168.1.1 0
你想让 192.168.1.1 能访问?想多了。因为第 5 条 deny ip 已经把所有包全拦了,根本走不到第 10 条。
顺序搞错,权限就全挂。
03|用错 ACL 类型,结果匹配不到数据
华为 ACL 有很多种:basic、advanced、IPv6、layer2、MAC ACL……结果你访问的是 IP 层的流量,却拿了 MAC ACL 去匹配,当然啥都不管用。
举个常见误会:
你配置了 ACL 来限制某 IP 段访问出口:
acl 2000
rule 5 deny ip source 192.168.1.0 0.0.0.255
然后你把它用在了交换机二层接口上:
interface GigabitEthernet 0/0/1
traffic-filter inbound acl 2000
结果 ACL 根本不起作用。
为什么?因为这是一个二层接口,而你用的是三层 ACL。
在这种情况下,应该用 MAC ACL 或者 port-based VLAN ACL(PVACL)。
04|IP、掩码、反掩码傻傻分不清
华为 ACL 有时候用子网掩码,有时候用反掩码(wildcard mask),不小心就写错了。
比如:
acl 3000
rule 5 deny ip source 192.168.1.0 255.255.255.0
这条规则是错的,华为 basic/advanced ACL 用的是 反掩码,也就是说:
- 0 = 精确匹配
- 255 = 全匹配
你要匹配 192.168.1.0/24,正确写法是:
acl 3000
rule 5 deny ip source 192.168.1.0 0.0.0.255
05|绑定了 ACL 却没激活/没方向
你 ACL 配好了,规则写对了,绑定也看起来做了,结果流量就是不受控。
你是不是没注意:
- 没写 inbound / outbound → ACL 根本没启用
- 接口虽然配置了 traffic-filter, 但方向错了
- 防火墙/路由策略用了 ACL,但 ACL 号填错了
特别是防火墙里经常有多个 ACL,在引用时 一个小小编号写错,策略就失效或误杀。
06|多条 ACL 混用,命中冲突策略
如果你同时在:
- 接口级 ACL
- VLAN ACL
- 路由策略引用的 ACL
- 防火墙策略 ACL
配置了类似 deny 条目,但写法不一致、优先级未梳理清楚,你就很容易出现“本地能通,远端不通”这类问题。
排障排到怀疑人生,一查 ACL,发现其实是多层冲突。
总结|一张图看懂 ACL 最常见的坑
┌────────────┬──────────────────────────────┐
│ 误操作类型 │ 问题说明 │
├────────────┼──────────────────────────────┤
│ 忘写 permit│ 默认 deny all,直接断流 │
│ 顺序写错 │ permit 被 deny 压住 │
│ 类型选错 │ 三层ACL配在二层口无效 │
│ 掩码写错 │ 掩码/反掩码用错,规则失效 │
│ 未激活ACL │ 方向未指定或接口未启用ACL │
│ 多条冲突 │ 不同层ACL互相打架 │
└────────────┴──────────────────────────────┘
写在最后
ACL 是把双刃剑, 用得好,能保护网络,用得不好,一条 deny 就能把核心业务干废。
你只要记住三句话:
-
ACL 默认不是“放行”,而是“拒绝”
-
顺序是关键,位置决定命运
-
配之前看清类型,绑之前明确方向
原创:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部