Clash策略组详解:fallback、url-test与select工作原理
Clash策略组详解:fallback、url-test与select工作原理
策略组(Strategy Group)是Clash配置文件中最强大的功能之一。它允许用户将多个代理节点组合在一起,通过不同的策略逻辑实现智能切换、负载均衡和故障转移。本文将深入解析Clash三大核心策略组类型——fallback、url-test和select——的工作原理、配置方法和最佳实践。
什么是Clash策略组
策略组的基本概念
在Clash中,策略组是一个容器,可以将多个代理节点(Proxies)或子策略组(Proxy Groups)放入其中。通过指定不同的策略类型,Clash会根据预设规则从中选择一个最优节点来转发流量。
策略组的核心优势包括:
- 自动故障转移:当某个节点失效时自动切换到备用节点
- 智能节点选择:根据延迟或可用性动态选择最优节点
- 灵活流量管理:可以为不同网站或应用分配不同的策略组
- 简化规则配置:规则中只需引用策略组名称,无需指定具体节点
策略组在配置文件中的位置
策略组在Clash配置文件中位于 proxy-groups 部分:
proxy-groups:
- name: "自动选择"
type: url-test
proxies:
- 节点1
- 节点2
- 节点3
url: "http://www.gstatic.com/generate_204"
interval: 300
- name: "故障转移"
type: fallback
proxies:
- 节点1
- 节点2
url: "http://www.gstatic.com/generate_204"
interval: 300
- name: "手动选择"
type: select
proxies:
- 节点1
- 节点2
- DIRECT
url-test 策略组:延迟测速自动选优
工作原理
url-test 策略组会定期对组内所有节点进行延迟测试,然后自动选择延迟最低的节点来转发流量。如果当前使用的节点延迟变高或失效,它会自动切换到另一个延迟更低的节点。
核心参数详解
| 参数名 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| name | string | 是 | - | 策略组名称 |
| type | string | 是 | - | 固定为 url-test |
| proxies | array | 是 | - | 节点或子策略组列表 |
| url | string | 是 | - | 测速目标URL |
| interval | integer | 否 | 300 | 测速间隔(秒) |
| tolerance | integer | 否 | 50 | 延迟容差(毫秒) |
| timeout | integer | 否 | 5000 | 单次测速超时(毫秒) |
配置示例
proxy-groups:
- name: "自动选择-香港"
type: url-test
proxies:
- 香港-节点1
- 香港-节点2
- 香港-节点3
- 香港-节点4
url: "http://www.gstatic.com/generate_204"
interval: 300
tolerance: 100
timeout: 3000
tolerance 参数解析
tolerance 是 url-test 中一个容易误解但非常重要的参数。它定义了切换节点的延迟阈值:
- 假设当前节点A的延迟为 120ms
- 节点B的延迟为 80ms
- 差值为 40ms,小于 tolerance 100ms
- 结果:不会切换,继续保留节点A
这个机制的作用是避免频繁切换。如果差值超过 tolerance,才会触发切换。例如:
- 节点A延迟变为 200ms
- 节点B延迟为 80ms
- 差值为 120ms,超过 tolerance 100ms
- 结果:切换到节点B
最佳实践建议
- 测速URL选择:使用 Google 的
generate_204或 Cloudflare 的cp.cloudflare.com/generate_204,响应稳定且全球可用 - interval 设置:建议 300-600 秒(5-10分钟),过于频繁会增加不必要的网络开销
- timeout 设置:建议 3000-5000ms,过短会导致节点被误判为不可用
- tolerance 设置:根据网络环境,一般设置 50-150ms,WiFi环境可以设小一点,移动网络可以设大一点
fallback 策略组:优先级故障转移
工作原理
fallback 策略组按照 proxies 列表中的顺序排列优先级。它会优先使用列表中的第一个节点,只有当该节点不可用时,才会依次尝试后面的节点。它非常适合构建主备架构。
与 url-test 的核心区别
| 特性 | url-test | fallback |
|---|---|---|
| 选择依据 | 延迟测速结果 | 列表顺序 |
| 切换触发 | 延迟差值超过tolerance | 当前节点不可用 |
| 使用场景 | 追求最低延迟 | 追求稳定连接 |
| 优先级 | 动态 | 静态(按列表顺序) |
| 节点权重 | 均等 | 按列表顺序递减 |
配置示例
proxy-groups:
- name: "主力线路"
type: fallback
proxies:
- 专线-主节点
- 专线-备用节点
- 普通节点1
- 普通节点2
- DIRECT
url: "http://www.gstatic.com/generate_204"
interval: 300
这个配置的策略是:
- 优先使用专线主节点
- 主节点失效时切换到专线备用节点
- 专线都失效时降级到普通节点
- 所有节点都失效时直连(DIRECT)
适用场景
fallback 策略组特别适合以下场景:
- 有专线或优质节点的用户:将专线节点排在前面,普通节点作为兜底
- 对稳定性要求高于延迟:直播、游戏等场景,宁可慢一点也不要频繁断线
- 构建多层级冗余:主节点 → 备用节点 → 直连的三层保护
select 策略组:手动选择
工作原理
select 是最简单的策略组类型。它不会在后台自动测速或切换,而是将选择权交给用户。在 Clash Verge 或 Clash Dashboard 等客户端中,用户可以通过下拉菜单手动选择要使用的节点。
配置示例
proxy-groups:
- name: "节点选择"
type: select
proxies:
- 自动选择-香港
- 自动选择-日本
- 自动选择-美国
- 自动选择-新加坡
- DIRECT
- name: "流媒体解锁"
type: select
proxies:
- 美国-Netflix专用
- 日本-Abema专用
- 香港-Viu专用
- 自动选择-美国
- DIRECT
与其他策略组嵌套
select 的真正威力在于与其他策略组嵌套使用。上面的第一个例子中,select 的选项不是单个节点,而是其他 url-test 策略组。这意味着:
- 用户可以选择“香港区域”或“日本区域”
- 选定区域后,区域内的最优节点由 url-test 自动决定
- 实现了“手动选择区域 + 自动选择最优节点”的混合模式
特殊选项:DIRECT 和 REJECT
select 策略组可以包含两个特殊选项:
- DIRECT:直接连接,不经过任何代理节点
- REJECT:拒绝连接(可用于广告拦截或黑名单)
proxy-groups:
- name: "广告拦截"
type: select
proxies:
- REJECT
- DIRECT
这个配置默认拒绝所有广告域名,但用户可以手动切换到 DIRECT 以排查误拦截问题。
策略组组合实战:构建完整的分流体系
推荐的策略组架构
一个成熟的分流配置通常包含以下层级:
proxy-groups:
# 第一层:按地理位置分组(url-test)
- name: "香港自动"
type: url-test
proxies:
- 香港-1
- 香港-2
url: "http://www.gstatic.com/generate_204"
interval: 300
- name: "日本自动"
type: url-test
proxies:
- 日本-1
- 日本-2
url: "http://www.gstatic.com/generate_204"
interval: 300
- name: "美国自动"
type: url-test
proxies:
- 美国-1
- 美国-2
url: "http://www.gstatic.com/generate_204"
interval: 300
# 第二层:手动选择策略组(select)
- name: "手动选择"
type: select
proxies:
- 香港自动
- 日本自动
- 美国自动
- DIRECT
# 第三层:故障转移(fallback)
- name: "故障转移"
type: fallback
proxies:
- 香港自动
- 日本自动
- 美国自动
- DIRECT
url: "http://www.gstatic.com/generate_204"
interval: 300
# 第四层:特殊用途策略组
- name: "流媒体"
type: select
proxies:
- 美国自动
- 香港自动
- 日本自动
- DIRECT
规则与策略组配合
在 rules 部分引用策略组:
rules:
- GEOIP,CN,DIRECT
- DOMAIN-SUFFIX,netflix.com,流媒体
- DOMAIN-SUFFIX,openai.com,美国自动
- DOMAIN-SUFFIX,google.com,手动选择
- MATCH,故障转移
策略组调试技巧
查看当前策略组状态
在 Clash Verge 中,点击左侧“代理”面板,可以看到所有策略组及其当前选择的节点。对于 url-test 策略组,还可以查看每个节点的实时延迟。
常见问题排查
| 问题 | 可能原因 | 解决方法 |
|---|---|---|
| url-test 不切换节点 | tolerance 设置过大 | 适当减小 tolerance 值 |
| fallback 不切换备用 | 节点并未真正失效 | 检查测速URL是否可达 |
| 延迟测速不准确 | 测速URL被干扰 | 更换测速目标 |
| 策略组显示为空 | 引用了不存在的节点 | 检查节点名称拼写 |
| 切换后速度反而更慢 | 延迟不等于实际速度 | 综合考虑延迟和带宽 |
总结
Clash 的三种策略组各有优势:
- url-test:适合追求最低延迟的用户,自动测速选优
- fallback:适合追求稳定性的用户,按优先级故障转移
- select:适合需要手动控制的用户,灵活但需人工干预
在实际配置中,最佳实践是三种策略组组合使用:用 select 做顶层控制,用 url-test 做区域自动选择,用 fallback 做兜底保障。这样的多层架构既能享受自动化带来的便利,又能保留手动干预的灵活性,是构建高效 Clash 配置的核心。
这篇教程有帮助吗?立即下载Clash入门试试吧!
全平台支持 · 安全无毒 · 官方最新版