Clash 策略组 url-test、fallback、load-balance 区别与写法

逐一拆解三类自动策略组的选择逻辑、interval 与 tolerance 等参数含义,给出按稳定性或均衡需求组合策略组的配置思路。

三类自动策略组如何选择

Clash 策略组负责在多个出站之间做选择,规则负责决定连接进入哪个策略组。两者不是同一层设置:即使自动组配置正确,规则把连接送到 DIRECT,该连接也不会使用组内节点。本文以 mihomo(原 Clash Meta)配置语法为基准;其他内核及较旧版本的参数支持可能不同,编辑前应在客户端的「关于」或内核信息页确认实际使用的内核。

先按需求选择类型:希望延迟较低,使用 url-test;希望主线路可用时一直用主线路,使用 fallback;希望不同连接分配给多个出口,使用 load-balance。三者都可以检测可用性,但检测结果参与决策的方式不同。

类型 选择依据 适用场景 主要边界
url-test 比较候选出站对测试地址的延迟,结合容差选择。 日常浏览、同地区节点自动择优。 测试延迟低,不代表大文件下载速度高。
fallback 按列表顺序选择第一个可用出站。 主备线路、固定地区优先。 优先节点变慢但仍可用时,通常不会让位。
load-balance 按指定分配算法,在可用出站间安排连接。 多个任务并发、分散连接负载。 不把单条 TCP 连接拆成多条线路叠加带宽。

url-test 写法:自动择优与切换容差

以下示例假设当前配置的 proxies 或代理提供者中,已经存在名为「香港-01」「香港-02」「日本-01」的节点。它们是引用名称,不是完整节点定义。实际使用时必须改成配置中确实存在的名称;如果已有 proxy-groups,请合并列表项,不要再创建一个同名顶层键。

proxy-groups:
  - name: 自动择优
    type: url-test
    proxies:
      - 香港-01
      - 香港-02
      - 日本-01
    url: https://www.gstatic.com/generate_204
    interval: 300
    tolerance: 50
    lazy: true

interval 与 tolerance 分别控制什么

  • interval: 300:周期检测间隔为 300 秒,即 5 分钟,不是 300 毫秒。
  • tolerance: 50:切换容差为 50 毫秒,用于减少小幅延迟波动引发的频繁更换。它不是探测超时时间,也不是延迟上限。
  • lazy: true:启用惰性检测,组未被使用时可跳过周期检测。手动测速、首次使用等行为还会受到客户端与内核实现影响。
  • url:可用性和延迟测试的目标地址。应选择稳定、响应体小、能代表目标网络路径的地址。

例如,当前节点测试延迟为 110 毫秒,另一个节点为 95 毫秒,差距只有 15 毫秒;容差设为 50 毫秒时,不应期待每次都切到数字最小的节点。容差用于抑制抖动,而不是承诺某个固定切换时刻。当前节点失效时,内核也不能继续仅按这两个延迟值做判断。

这组数值是说明参数的算例,不是线路实测结果。测试地址的 TLS 握手、网络拥塞、服务端响应和连接复用情况都会影响读数。若网页延迟较低而下载仍慢,应再检查吞吐、丢包和晚高峰拥塞,不要反复把 tolerance 调成 0 来替代诊断。

fallback 写法:明确主备顺序

fallback 关注的是“列表中谁先可用”,而不是“谁最快”。主线路可用时,即便备用线路的测试值更低,也通常继续使用主线路。它适合有地区、资费或出口偏好的场景。

proxy-groups:
  - name: 主备线路
    type: fallback
    proxies:
      - 香港-01
      - 香港-02
      - 日本-01
    url: https://www.gstatic.com/generate_204
    interval: 120
    lazy: true

在这个顺序中,香港-01 是第一优先级,香港-02 是第二优先级,日本-01 是最后备用。若第一项对测试目标失败,第二项正常,组会选择第二项;后续检测发现第一项恢复可用后,会重新优先考虑第一项。

自动故障切换不等于连接无缝迁移

  • 周期为 120 秒,不代表任意故障都能在 120 秒内完成恢复;还涉及检测触发、探测耗时以及应用自身重试。
  • 节点能打开测试地址,不代表它一定能访问业务网站;地区限制、目标站封禁或单站路由异常可能检测不到。
  • 策略切换主要影响后续新建连接,已建立的下载、视频或 WebSocket 连接不会自动迁移到另一条线路。

load-balance 写法:分配连接而非叠加单连接带宽

load-balance 适用于同时存在多条连接的任务。下面使用 consistent-hashing,使相同目标在候选集合稳定时尽量保持相同的出口映射。它有助于减少同一网站频繁更换出口,但不是永久固定 IP 的保证。

proxy-groups:
  - name: 并发分配
    type: load-balance
    proxies:
      - 香港-01
      - 香港-02
    url: https://www.gstatic.com/generate_204
    interval: 300
    lazy: true
    strategy: consistent-hashing

常见分配算法怎么选

  • consistent-hashing:依据目标信息进行一致性哈希分配。目标域名是否可见、候选节点是否变化,都会影响分配结果。
  • round-robin:轮询分配连接。它更直观,但连接数量相近不等于流量大小相近,也不保证每条线路承担相同字节数。

例如,一个程序同时建立 8 条下载连接,负载均衡可能让这些连接分布到不同节点;如果服务器只允许一条连接,仍然只有一条连接所选线路的吞吐。浏览器还可能通过 HTTP/2 在一条连接上复用多个请求,所以看到页面包含很多资源,也不能据此判断它一定会均匀使用所有节点。

网银、账户管理、需要固定地区的服务,应优先考虑固定节点或固定地区策略。即使采用一致性哈希,节点离线、候选列表变更或目标域名变化后,出口仍可能改变。涉及身份验证的业务,不宜仅为了“均衡”而扩大候选地区范围。

组合策略组:按用途保留手动入口

日常配置可以把三种自动组放入一个 select 组:默认选自动择优,需要固定优先级时切到主备线路,并发任务再选并发分配。以下片段应追加到前面已有的 proxy-groups 列表中;rules 只是展示兜底规则的独立示例,不能直接覆盖已有的完整分流规则。

proxy-groups:
  - name: 网络出口
    type: select
    proxies:
      - 自动择优
      - 主备线路
      - 并发分配
      - 香港-01

rules:
  - MATCH,网络出口

上面的 MATCH 会接住所有到达此处、尚未匹配的连接。如果要保留局域网、国内站点或业务专用规则,应将这些具体规则放在它前面。规则一般按从上到下的顺序匹配,不能把兜底规则放在最前面,再期待后面的分流继续生效。

组名引用必须精确一致,也不能形成循环。例如「网络出口」引用「自动择优」时,「自动择优」不能再引用「网络出口」。初次排查建议采用一层手动选择器加一层自动组,避免过深嵌套让测速路径和最终出口难以辨认。

订阅更新后如何保留修改

  1. 先备份当前配置,记录节点名称、组名以及相关规则。
  2. 确认客户端是否提供覆写、合并或扩展配置功能。直接编辑订阅生成文件,可能在下次更新时被覆盖。
  3. 若使用 proxy-providers,可按客户端支持情况用 use 引用提供者;不要把提供者名称误写成节点名称放进 proxies。
  4. 更新订阅后检查节点重命名和候选列表变化,再做配置检查与手动测速。

自动策略不生效时的排查顺序

先确认配置加载成功,再追踪实际连接,不要同时更改 DNS、TUN、策略类型和测试地址。每次只改一项,才容易判断是哪一个参数产生了影响。

第一步:检查 YAML 与引用关系

缩进使用空格,不使用制表符;列表项前保留 -;同一文件避免重复顶层 proxy-groups。本地安装了 mihomo 命令行程序时,可运行下面的配置测试。命令中的文件名为当前目录下的 config.yaml,不是要求把订阅改成这个名字。

mihomo -t -f config.yaml

如果提示找不到某个代理或策略组,先修复名称引用。语法检查通过,只说明配置能被解析,并不能证明远程节点可连接或测试地址正常。

第二步:核对流量是否进入目标组

在客户端连接列表中查找目标域名,查看命中的规则、策略链和最终节点。系统代理通常只影响读取该设置的应用;TUN 则负责通过虚拟网卡接管匹配流量,它们都不会改变 fallback 的优先级算法。若应用没有进入内核,调整策略组参数也无法改变该应用的出口。

若配置确实设置了 mixed-port: 7890,可以用以下命令显式经过本地代理请求一个网页。这里的 7890 是示例监听端口,应与实际配置一致;不要误用外部控制接口的端口。

curl -x http://127.0.0.1:7890 -I https://example.com

第三步:区分测速异常与业务异常

  • 所有节点都显示超时:先检查本地网络、节点凭据和测试目标是否可达,不要立即认定所有线路同时失效。
  • 自动组有延迟,网站仍失败:查看目标网站的 DNS、规则命中和连接日志,确认失败是否仅限该站。
  • 几分钟内反复切换:先保持同一测试地址,再适当增加 url-test 容差,例如从 20 毫秒调整到 50 毫秒,并观察后续检测结果。
  • 切换后旧任务没有变化:用新连接重试。必要时只关闭对应连接,避免直接中断所有正在进行的任务。

最终选择可以保持简单:延迟优先选 url-test,顺序优先选 fallback,连接分配选 load-balance。再通过规则明确流量入口,并保留一个可手动选择的出口,通常比堆叠多层自动组更容易维护。完整语法可结合本站协议手册核对,首次配置可先阅读安装与配置教程。

下载Clash