Clash 规则配置详解:自定义你的代理策略
Clash 作为一款功能强大的网络代理工具,其精髓在于其高度可定制的规则系统。通过精细地配置规则,用户可以实现对网络流量的自动化、智能化管理,无论是想区分国内外流量、屏蔽广告、还是为特定应用优化网络,都能游刃有余。本文将从入门到进阶,详细拆解 Clash 的规则配置,帮助你打造最适合自己的代理策略。
1. Clash 规则的核心工作原理
在深入配置之前,必须理解 Clash 规则最核心的原则:自上而下,匹配即停。
当一个网络请求产生时,Clash 会从规则列表的第一条开始逐一进行匹配:
– 如果请求符合某条规则的条件,Clash 将立即采纳该规则指定的策略(如 PROXY 或 DIRECT),并停止后续所有规则的匹配。
– 如果请求不符合当前规则,则继续向下匹配,直到找到符合的规则为止。
– 如果所有规则都匹配失败,Clash 会采用最后的 MATCH 兜底规则。
这个机制意味着,规则的顺序至关重要。通常,我们应该将更精确、更具体的规则放在前面,而将更宽泛的规则放在后面。
2. 规则的基本语法
一条标准的 Clash 规则由三个核心部分组成:
TYPE, ARGUMENT, POLICY
- TYPE: 规则的类型,决定了 Clash 以何种方式匹配流量(例如,基于域名、IP 或进程名)。
- ARGUMENT: 规则的参数,即匹配的具体内容(例如,
google.com这个域名或1.1.1.1/32这个 IP 段)。 - POLICY: 策略,即匹配成功后要执行的动作(例如,走代理、直连或拒绝)。
3. 常用规则类型 (TYPE)
以下是配置中最常使用的几种规则类型:
| 类型 | 参数示例 | 描述 |
|---|---|---|
DOMAIN-SUFFIX |
google.com |
匹配所有以 google.com 结尾的域名,如 www.google.com, ads.google.com。这是最常用、最高效的域名规则。 |
DOMAIN |
www.google.com |
仅精确匹配 www.google.com 这一个域名。 |
DOMAIN-KEYWORD |
google |
匹配任何包含 google 关键词的域名,如 www.google.com.hk。谨慎使用,可能导致意外的匹配。 |
GEOIP |
CN |
匹配目标 IP 地址的归属地。CN 代表中国大陆。此规则依赖于 IP 数据库,用于区分国内外流量。 |
IP-CIDR |
192.168.1.0/24 |
匹配目标地址在指定 IP 段内的流量。常用于局域网或特定服务地址。 |
PROCESS-NAME |
Telegram.exe |
匹配由特定应用程序发出的流量(仅部分 Clash 核心和客户端支持)。 |
MATCH |
(无参数) | 匹配所有流量。它通常作为最后一条规则,充当“兜底”角色,处理所有未被前面规则匹配的流量。 |
4. 核心策略 (POLICY)
策略决定了流量的最终走向:
| 策略 | 描述 |
|---|---|
DIRECT |
直连,不通过任何代理服务器。通常用于国内网站或局域网服务。 |
REJECT |
拒绝连接。常用于屏蔽广告、跟踪器或恶意网站,节省带宽。 |
Proxy |
将流量导向你在 proxies 部分定义的单个代理节点。 |
Proxy Group |
将流量导向你在 proxy-groups 部分定义的代理组。代理组可以实现自动选择延迟最低的节点、负载均衡或故障转移,是实现智能化代理的关键。 |
5. 实战配置策略与示例
理解了基本组成部分后,我们来看如何组合它们来满足常见需求。以下配置片段应添加至你配置文件的 rules: 部分。
策略一:区分国内外流量(推荐)
这是最基础也是最高效的策略。目标是让国内服务直连以获得最快速度,国外服务走代理。
“`yaml
rules:
# 1. 优先处理局域网和特殊地址,全部直连
– IP-CIDR,127.0.0.1/32,DIRECT
– IP-CIDR,192.168.0.0/16,DIRECT
# 2. 广告屏蔽规则,直接拒绝连接
– DOMAIN-SUFFIX,adservice.google.com,REJECT
– DOMAIN-KEYWORD,adaway,REJECT
# 3. 常见需要代理的国外网站 (例如 Google, YouTube, Netflix)
# 使用 GLOBAL 代理组,该组可以由用户在客户端界面自由选择节点
– DOMAIN-SUFFIX,google.com,GLOBAL
– DOMAIN-SUFFIX,youtube.com,GLOBAL
– DOMAIN-SUFFIX,netflix.com,GLOBAL
– DOMAIN-SUFFIX,github.com,GLOBAL
# 4. 国内网站全部直连
# GEOIP,CN 规则匹配所有目标 IP 在中国的流量
– GEOIP,CN,DIRECT
# 5. 兜底规则:所有其他未匹配到的流量都走代理
# 这确保了新的、未在列表中的国外网站也能正常访问
– MATCH,GLOBAL
“`
策略二:使用 Rule-Provider 管理庞大规则集
当规则数量非常多时,直接写在主配置文件中会显得十分臃肿。Clash 提供了 rule-provider(规则提供者)功能,允许你将规则集拆分到单独的文件中。
第一步:在主配置文件中定义 rule-providers
在 config.yaml 中添加如下部分(与 rules: 同级):
“`yaml
rule-providers:
# 定义一个名为 “AdBlock” 的规则提供者
AdBlock:
type: http
behavior: domain # 规则行为是基于域名的
url: “https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/reject.txt”
path: ./ruleset/adblock.yaml # 下载后保存的路径
interval: 86400 # 更新间隔(秒),一天更新一次
# 定义一个名为 “Streaming” 的规则提供者
Streaming:
type: http
behavior: classical # classic 类型表示完整的 TYPE,ARGUMENT,POLICY 格式
url: “https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/streaming.txt”
path: ./ruleset/streaming.yaml
interval: 86400
“`
第二步:在 rules 部分引用规则集
“`yaml
rules:
# … 其他规则 …
# 使用 RULE-SET 引用规则提供者
– RULE-SET,AdBlock,REJECT
– RULE-SET,Streaming,STREAMING_GROUP # STREAMING_GROUP 是一个专门用于看流媒体的代理组
# … 其他规则 …
“`
这样配置后,Clash 会自动下载并应用外部规则文件,主配置文件保持了极大的简洁性。
6. 如何持久化你的自定义规则
许多用户直接使用机场提供的订阅链接,但每次更新订阅都会覆盖掉本地的自定义规则。有两种主流方法可以解决这个问题:
-
使用 Clash 的 Parser 功能:这是一种预处理机制,在更新订阅前,通过脚本将你的自定义规则(例如存储在一个单独文件里)与订阅文件合并。这种方法较为复杂,需要一定的脚本知识。
-
推荐:使用支持
mixin或prepend-rules的客户端:- Clash for Windows / Clash Verge: 在配置文件编辑界面,通常会提供
prepend-rules或类似的选项,允许你在订阅规则之前插入自定义规则。 - Stash (iOS): 支持
mixin功能,可以方便地将本地规则与远程订阅混合。
使用这种方式,你只需将自定义规则(如广告屏蔽、特定网站策略)保存在本地,客户端会在每次更新后自动将其应用,既方便又高效。
示例(Clash Verge 的 Mixin 写法):
yaml
mixin:
rules:
# 在这里写下你不想被覆盖的规则
- DOMAIN-SUFFIX,my-private-tracker.com,PROXY
- PROCESS-NAME,Steam.exe,DIRECT - Clash for Windows / Clash Verge: 在配置文件编辑界面,通常会提供
结论
掌握 Clash 规则配置是发挥其全部潜力的关键。从简单的 DOMAIN-SUFFIX 到强大的 RULE-SET,再到精巧的 mixin 管理,每一步都能让你的网络体验更加顺畅和个性化。希望本文能为你提供清晰的指引,现在就开始动手,打造属于你自己的完美代理策略吧!