ACL 规则是什么意思?

一句话结论

ACL 规则是按顺序列出“某类目标走哪条出口”的匹配清单,代理客户端据此决定每个连接直连、代理还是拒绝。

ACL 原指访问控制列表。在代理圈里,它常指规则文件或社区整理的规则模板。读懂它的匹配顺序,才能解释为什么某个网站明明加了规则却没生效。

ACL 是 Access Control List 的缩写,直译就是“访问控制列表”。放在代理客户端里,它是一张从上到下排好的清单,每一行回答同一个问题:遇到这样的连接,该怎么处理。

它是什么

一条典型的规则由三部分组成:匹配类型、匹配内容、处理方式。以 Clash 系配置为例,写法如下:

DOMAIN-SUFFIX,example.com,代理组名
GEOIP,CN,DIRECT
MATCH,兜底组名

第一行匹配某个域名及其子域名,第二行按 IP 所属地区匹配,最后一行是没有匹配到任何规则时的兜底。处理方式既可以是 DIRECT(直连)、REJECT(拒绝),也可以是某个策略组的名字。

社区里有人把整理好的一大批规则打包成模板,名字里常带 ACL。这类模板由谁维护、更新到什么时候,需要你自己核对来源,梯子岛不替任何模板背书。

匹配顺序决定一切

规则从上往下依次比对,命中后通常就停止,后面的不再看。这带来几个实际结论:

情形 后果
范围大的规则放在前面 把后面更具体的规则“截胡”
兜底规则不在最后 之后的规则永远读不到
同一域名被多条规则覆盖 只有最靠前的一条生效
按 IP 匹配的规则排前面 可能触发额外的域名解析

常见误解

“规则越多越好。” 规则多会增加维护负担,也增加互相冲突的机会。梯子岛没有用来衡量性能差别的数据,不给“多少条以内”的结论。

“加了域名规则就必然生效。” 如果域名是通过 IP 直接访问,或客户端先按其他规则命中了,这条规则就不会被用到。

“ACL 和防火墙一样。” 概念上同源,但这里只是客户端内部的分流清单,不能当作安全防护。

怎么检查一条规则有没有被用到

  1. 在客户端的连接或日志界面,找到该网站的记录,看它命中了哪条规则。
  2. 把可疑规则移到更靠前的位置再测,一次只动一处。
  3. 对照规则集了解外部规则列表如何被引用。
  4. 需要完整写法,读Clash 规则怎么写。

下一步

规则的整体思路见分流;要动手改配置,读 Clash 规则怎么写,再回头看订阅转换时带入的模板,参考订阅转换。

哪些文章讲到了ACL 规则

想对照具体机场的记录?

机场榜单和机场目录里,价格、线路、协议、节点地区都是逐家列着的;不确定该装哪个客户端,试试客户端筛选器。