Configuration is the router

连接怎么安排,由你的配置说了算

Clash 本身不预设任何走向,它只是忠实地执行一份配置文件:proxies 列出所有可用节点,proxy-groups 把这些节点编成可切换的线路组,rules 则逐条判断一个连接该去哪里。规则自上而下匹配,第一条命中的规则立即决定出口,全部落空时由末尾的 MATCH 兜底。换句话说,你看到的每一条连接路径,都是自己写下的结果。

配置的三层:先定节点,再编组,最后写规则

  • 01proxies 节点清单。每个条目包含类型、服务器地址、端口与认证信息。这一层只负责"有哪些可用线路",不关心谁去用。
  • 02proxy-groups 线路编组。把节点按用途归类,并决定组内是手动切换、自动测速还是按条件回退。组名是后续规则引用的唯一凭据。
  • 03rules 分流规则。以 DOMAIN、DOMAIN-SUFFIX、IP-CIDR、GEOIP 等类型描述匹配条件,并指定目标组、DIRECT 直连或 REJECT 拦截。

匹配是一次有序扫描,不是择优

很多人以为 Clash 会挑一条"最合适"的规则,实际上它只做一件事:从上往下读,读到第一个满足条件的就停下。所以规则的书写顺序本身就是策略——把高频访问的直连域名放在前面,能减少不必要的判断;把范围过宽的 DOMAIN-SUFFIX 放在前面,则会遮蔽后面所有更精确的条目。写得越具体越靠前,写得越宽泛越靠后,是稳妥的排列习惯。

规则决定方向,分组决定质量

方向与质量是两件事。规则说"这个连接交给「自动选择」组",而该组内部用什么方法挑节点,由 proxy-groups 的 type 决定:select 完全听你手动拨动,url-test 按延迟自动择优,fallback 则在前者失联时才换下一个。想让关键业务稳定走固定出口,用手动组;想日常浏览省心,用测速组。配置的主动权,就体现在这两层的组合里。

改动之后,记得重载

编辑保存并不等于已经生效,客户端需要重新载入配置文件才会应用新结构。若出现整份配置加载失败,通常不是逻辑写错,而是缩进用了制表符、冒号后缺少空格、或某个组名被规则引用却并不存在。YAML 对格式相当敏感,逐层核对比反复重启更省时间。

常见疑问

写配置时最常卡住的几处

规则的先后顺序真的会影响体验吗?

会。匹配是一次从上到下的扫描,命中第一条即结束。把常用的直连域名、精确域名前置,可以避免被后面宽泛的规则误捕获;反过来,一条过宽的后缀规则如果位置靠前,会让其后所有更精确的条目形同虚设。

改完配置为什么没有任何变化?

多数情况是没有重新载入。保存文件后需要在客户端里重载配置或重启内核,新结构才会被读取。其次是 YAML 语法问题:制表符缩进、冒号后缺空格、规则引用了不存在的组名,都会导致整份文件加载失败。

select 和 url-test 该选哪一个?

select 是完全手动,线路不会自己变,适合要求出口固定的场景。url-test 会周期性测速并自动切到延迟最低的节点,日常使用更省心,但出口会随网络状况变化。需要稳定就手动,需要省事就测速。

切到全局模式后,规则还有用吗?

全局模式下所有连接统一走同一出口,规则暂时不参与判断。但配置文件本身仍保留这些规则,切回规则模式后立即恢复生效,因此不需要为了临时切换而删除它们。

从一份看得懂的配置开始

先写清节点,再规划分组,最后按具体到宽泛的顺序铺开规则。三层理顺之后,连接怎么走,就完全由你掌握。

回到结构说明