本文详细讲解Clash规则集的定义、引用方式及分流优先级,结合代理组类型与TUN模式对比,帮助用户构建高效的跨境访问规则。
什么是Clash规则集
规则集(rule-set)是Clash配置中用于组织分流逻辑的外部规则文件,通过将复杂规则模块化,用户可以独立维护不同用途的规则组,提升配置可读性与复用性,规则集文件通常托管在GitHub或自建服务器,格式为YAML或自制格式。
规则集的基本语法
在Clash配置中,规则集使用rules字段下的RULE-SET类型声明:
rules: - RULE-SET,ads-block,REJECT - RULE-SET,streaming,PROXY - RULE-SET,cn-direct,DIRECT - DOMAIN-SUFFIX,google.com,PROXY - GEOIP,CN,DIRECT
其中ads-block、streaming为规则集名称,REJECT、PROXY、DIRECT为规则动作。
代理组类型与适用场景
Clash代理组决定流量如何分配到具体节点,理解三种核心类型是配置关键:
| 代理组类型 | 语法 | 适用场景 |
|---|---|---|
| select | type: select |
手动选择节点,需用户主动切换 |
| url-test | type: url-test |
自动选择延迟最低的节点 |
| fallback | type: fallback |
优先使用列表中首个可用节点 |
select适合对节点有明确偏好的用户;url-test适合日常上网,自动选择最优线路;fallback适合需要稳定连接的场景,如远程办公。
TUN模式与系统代理的区别
TUN模式创建虚拟网卡,直接接管设备所有流量,包括UDP数据包和游戏流量,系统代理仅处理HTTP/HTTPS请求,无法代理游戏或UDP协议的应用。
启用TUN模式后,Clash配置需添加dns字段和tun字段:
dns:
enable: true
listen: 0.0.0.0:53
enhanced-mode: fake-ip
nameserver:
- 223.5.5.5
- 119.29.29.29
tun:
enable: true
stack: system
dns-hijack:
- 8.8.8.8
- 8.8.4.4
分流规则写法与优先级
Clash规则按从上到下顺序匹配,命中后立即执行对应动作,常用规则类型:
- DOMAIN:精确匹配域名,优先级最高
- DOMAIN-SUFFIX:匹配域名后缀
- IP-CIDR:匹配IP段
- GEOIP:匹配国家/地区代码
优先级顺序为:DOMAIN > DOMAIN-SUFFIX > IP-CIDR > GEOIP,配置时应将精确规则置于通用规则之前。
常见问题FAQ
规则集不生效
现象:配置了rule-set但流量未按预期分流。原因可能是规则集URL无法访问或格式错误。解决方法:检查URL可访问性,使用本地文件测试,确认YAML格式正确。
代理组无节点可用
现象:url-test或fallback代理组显示无可用节点。原因是节点全部离线或测试URL无法访问。解决方法:更换测试URL(如http://www.gstatic.com/generate_204),检查节点订阅是否过期。
TUN模式导致断网
现象开启TUN后无法访问任何网站。原因是DNS配置冲突或TUN栈模式不兼容。解决方法:将stack改为system,或关闭DNS增强模式。
客户端下载与平台选择
- Windows:推荐Clash Verge Rev,GitHub Release页面下载,支持便携模式
- Mac:ClashX Pro,M1/M2芯片选择arm64版本
- Android:FlClash或Clash for Android,华为设备需手动下载APK
- iOS:App Store无Clash,Shadowrocket或Quantumult X可替代
- 路由器:OpenWrt使用OpenClash插件,内核建议选择Meta版本
节点选择建议
不同使用场景对节点要求不同:4K视频需要高带宽支持,游戏需要低延迟和UDP转发,跨境办公需要稳定连接,选择节点时关注延迟、带宽和稳定性三要素,避免单一节点长期使用。
