ACL 规则是什么意思?
一句话结论
ACL 规则是按顺序列出“某类目标走哪条出口”的匹配清单,代理客户端据此决定每个连接直连、代理还是拒绝。
ACL 原指访问控制列表。在代理圈里,它常指规则文件或社区整理的规则模板。读懂它的匹配顺序,才能解释为什么某个网站明明加了规则却没生效。
ACL 是 Access Control List 的缩写,直译就是“访问控制列表”。放在代理客户端里,它是一张从上到下排好的清单,每一行回答同一个问题:遇到这样的连接,该怎么处理。
它是什么
一条典型的规则由三部分组成:匹配类型、匹配内容、处理方式。以 Clash 系配置为例,写法如下:
DOMAIN-SUFFIX,example.com,代理组名
GEOIP,CN,DIRECT
MATCH,兜底组名
第一行匹配某个域名及其子域名,第二行按 IP 所属地区匹配,最后一行是没有匹配到任何规则时的兜底。处理方式既可以是 DIRECT(直连)、REJECT(拒绝),也可以是某个策略组的名字。
社区里有人把整理好的一大批规则打包成模板,名字里常带 ACL。这类模板由谁维护、更新到什么时候,需要你自己核对来源,梯子岛不替任何模板背书。
匹配顺序决定一切
规则从上往下依次比对,命中后通常就停止,后面的不再看。这带来几个实际结论:
| 情形 | 后果 |
|---|---|
| 范围大的规则放在前面 | 把后面更具体的规则“截胡” |
| 兜底规则不在最后 | 之后的规则永远读不到 |
| 同一域名被多条规则覆盖 | 只有最靠前的一条生效 |
| 按 IP 匹配的规则排前面 | 可能触发额外的域名解析 |
常见误解
“规则越多越好。” 规则多会增加维护负担,也增加互相冲突的机会。梯子岛没有用来衡量性能差别的数据,不给“多少条以内”的结论。
“加了域名规则就必然生效。” 如果域名是通过 IP 直接访问,或客户端先按其他规则命中了,这条规则就不会被用到。
“ACL 和防火墙一样。” 概念上同源,但这里只是客户端内部的分流清单,不能当作安全防护。
怎么检查一条规则有没有被用到
- 在客户端的连接或日志界面,找到该网站的记录,看它命中了哪条规则。
- 把可疑规则移到更靠前的位置再测,一次只动一处。
- 对照规则集了解外部规则列表如何被引用。
- 需要完整写法,读Clash 规则怎么写。
下一步
规则的整体思路见分流;要动手改配置,读 Clash 规则怎么写,再回头看订阅转换时带入的模板,参考订阅转换。