Clash 自定义规则设置完全指南:掌控网络流量,优化代理体验
Clash 作为一款功能强大且广受欢迎的网络代理客户端,以其灵活的配置和高效的性能赢得了众多用户的青睐。其核心魅力之一就在于强大的规则系统,允许用户精细化地控制网络流量的走向。默认配置往往只能满足基本需求,而通过自定义规则,您可以实现诸如广告屏蔽、国内外流量分流、特定应用/网站指定代理、绕过局域网地址等高级功能,从而极大地优化您的网络体验。
本文将是一篇详尽的教程,旨在引导您从零开始,深入理解 Clash 的规则机制,并掌握自定义规则的编写与应用,助您成为 Clash 配置的“高手”。
一、 理解 Clash 规则的基础
在深入编写自定义规则之前,我们必须先理解 Clash 规则的工作原理和基本构成。
- 规则的本质: Clash 规则本质上是一系列条件判断语句。当一个网络连接发起时,Clash 会按照配置文件中
rules:
列表从上到下的顺序,逐一检查该连接是否满足某条规则的匹配条件。 - 匹配即停止: 一旦连接匹配到某条规则,Clash 就会根据该规则指定的策略(Policy)来处理这个连接,并且不再继续检查后续的规则。这个“匹配即停止”的原则至关重要,意味着规则的顺序直接影响其优先级。
-
规则的组成: 一条典型的 Clash 规则由三个部分组成,格式通常为:
TYPE, VALUE, POLICY
- TYPE(类型): 定义了匹配流量的方式。常见的类型包括基于域名、IP 地址、地理位置、进程名等。
- VALUE(值): 具体的匹配内容。例如,域名后缀、具体的 IP 地址段、国家代码等。
- POLICY(策略): 指定了匹配成功后流量应如何处理。这通常指向您在配置文件
proxy-groups:
部分定义的代理策略组或内置策略(如DIRECT
、REJECT
)。
-
内置策略:
DIRECT
:直连,流量不通过任何代理服务器。REJECT
:拒绝连接,常用于屏蔽广告或追踪器。还可以附加参数实现更精细的控制,如REJECT(tcp-rst)
。Proxy
/策略组名
:将流量导向指定的单个代理服务器或一个代理策略组(如Proxy
,国外流量
,节点选择
等,这些名称需与proxy-groups
中定义的名称一致)。
-
Fallback / Final 规则: 在所有自定义规则检查完毕后,如果没有任何一条规则匹配成功,Clash 会使用配置文件末尾通常存在的
MATCH
或FINAL
规则。这条规则是“兜底”规则,确保所有未被明确指定的流量都有一个最终去向。MATCH, POLICY
: 匹配所有剩余流量。FINAL, POLICY
: 功能类似MATCH
,但在某些 Clash 衍生版本(如 Clash.Meta)中,FINAL
规则的处理时机和行为可能略有不同(例如,它可能在 DNS 解析之后才最终决定),通常用于需要根据最终解析 IP 判断的场景。对于标准 Clash 核心,MATCH
更为常用。
二、 常见的规则类型详解与示例
掌握了基本概念后,我们来详细了解几种最常用的规则类型及其用法:
-
DOMAIN-SUFFIX (域名后缀)
- 作用: 匹配指定域名后缀的所有子域名。这是最常用也最高效的规则之一。
- 示例:
“`yaml
# 规则:所有 google.com 及其子域名(如 www.google.com, mail.google.com)都走 “国外代理” 策略组- DOMAIN-SUFFIX,google.com,国外代理
规则:所有 apple.com 及其子域名走 “苹果服务” 策略组
- DOMAIN-SUFFIX,apple.com,苹果服务
规则:屏蔽常见的广告域名后缀
- DOMAIN-SUFFIX,adservice.google.com,REJECT
- DOMAIN-SUFFIX,doubleclick.net,REJECT
“`
- 注意:
DOMAIN-SUFFIX
匹配的是域名本身及其所有子域名。DOMAIN-SUFFIX,google.com
会匹配google.com
和www.google.com
,但不匹配google.com.cn
。
-
DOMAIN (域名)
- 作用: 精确匹配某个域名,不包括其子域名。
- 示例:
“`yaml
# 规则:仅精确匹配 www.example.com 这个域名,走 “特定代理”- DOMAIN,www.example.com,特定代理
“`
- DOMAIN,www.example.com,特定代理
- 使用场景: 当你需要对某个特定域名(而非其所有子域名)进行精确控制时使用。相对
DOMAIN-SUFFIX
使用频率较低。
-
DOMAIN-KEYWORD (域名关键字)
- 作用: 匹配域名中包含指定关键字的连接。
- 示例:
“`yaml
# 规则:域名中包含 “google” 关键字的走 “国外代理”- DOMAIN-KEYWORD,google,国外代理
规则:域名中包含 “ad” 或 “tracker” 关键字的予以拒绝
- DOMAIN-KEYWORD,ad,REJECT
- DOMAIN-KEYWORD,tracker,REJECT
“`
- 注意:
DOMAIN-KEYWORD
匹配范围较广,可能导致误判(例如download.com
包含ad
)。性能开销相对DOMAIN-SUFFIX
也更大,需谨慎使用。
-
IP-CIDR (IP 地址段)
- 作用: 匹配目标 IP 地址是否在指定的 CIDR (无类别域间路由) 地址块内。
- 示例:
“`yaml
# 规则:目标 IP 地址为局域网地址的,全部直连- IP-CIDR,192.168.0.0/16,DIRECT
- IP-CIDR,10.0.0.0/8,DIRECT
- IP-CIDR,172.16.0.0/12,DIRECT
- IP-CIDR,127.0.0.0/8,DIRECT
规则:目标 IP 为某特定服务商的 IP 段,走 “专线代理”
- IP-CIDR,1.2.3.0/24,专线代理
“`
- 重要性: 局域网直连规则通常是必须的,且优先级应较高,避免访问本地设备(如路由器、NAS)时流量误走代理。
-
GEOIP (地理位置 IP)
- 作用: 匹配目标 IP 地址的归属国家/地区。这需要 Clash 加载 GeoIP 数据库(通常是
Country.mmdb
文件)。 - 示例:
“`yaml
# 规则:目标 IP 归属地为中国的,直连- GEOIP,CN,DIRECT
规则:目标 IP 归属地为美国的,走 “美国节点” 策略组
- GEOIP,US,美国节点
“`
- 注意:
- 需要确保 Clash 配置文件或运行目录下存在有效的
Country.mmdb
文件。 - GeoIP 数据库需要定期更新以保证准确性。
GEOIP,CN
通常放在规则列表的靠前位置(但在局域网规则之后),用于实现国内外分流的基础。
- 需要确保 Clash 配置文件或运行目录下存在有效的
- 作用: 匹配目标 IP 地址的归属国家/地区。这需要 Clash 加载 GeoIP 数据库(通常是
-
PROCESS-NAME (进程名) – (部分客户端/平台支持)
- 作用: 根据发起连接的应用程序进程名来匹配。
- 示例:
“`yaml
# 规则:所有 Chrome 浏览器发起的连接走 “浏览器代理”- PROCESS-NAME,chrome.exe,浏览器代理 # Windows 示例
- PROCESS-NAME,Google Chrome,浏览器代理 # macOS 示例
规则:特定游戏进程直连
- PROCESS-NAME,gamelauncher.exe,DIRECT
“`
- 注意:
- 此规则并非所有 Clash 客户端和操作系统平台都支持,兼容性需查阅具体客户端文档。
- 进程名可能因软件版本或操作系统而异。
- 性能开销相对较大。
-
SRC-IP-CIDR (源 IP 地址段) – (高级用法)
- 作用: 匹配发起连接的源 IP 地址。主要用于 Clash 作为网关为局域网内其他设备提供代理服务的场景,可以基于局域网内不同设备的 IP 进行策略分流。
- 示例:
“`yaml
# 规则:来自 192.168.1.100 这台设备的流量,走 “特殊设备代理”- SRC-IP-CIDR,192.168.1.100/32,特殊设备代理
“`
- SRC-IP-CIDR,192.168.1.100/32,特殊设备代理
三、 Rule Providers:更优雅地管理规则集
当自定义规则数量庞大,或者需要频繁更新(如广告屏蔽列表、特定服务域名列表)时,直接在主配置文件 config.yaml
中维护会变得非常 cumbersome。这时,Rule Providers
(规则提供者) 就派上了用场。
Rule Providers
允许您将规则列表定义在外部文件中(本地或远程 URL),然后在主配置文件的 rules:
部分引用这些外部规则集。
-
定义 Rule Provider:
在配置文件的rule-providers:
部分定义一个或多个规则提供者。
“`yaml
rule-providers:
# 广告屏蔽规则提供者 (从远程 URL 加载)
adblock:
type: http
behavior: domain # 或 classical,根据规则文件内容格式决定
url: “https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Providers/BanAD.yaml”
path: ./ruleset/adblock.yaml # 下载后保存在本地的路径
interval: 86400 # 更新间隔(秒),例如一天更新一次# 国内网站直连规则提供者 (使用本地文件)
cn_direct:
type: file
behavior: domain
path: ./ruleset/cn_direct.txt # 本地规则文件路径# 特定应用规则提供者
streaming_media:
type: http
behavior: classical # 假设这个列表是 TYPE,VALUE 格式
url: “URL_TO_STREAMING_RULES”
path: ./ruleset/streaming.yaml
interval: 3600
``
type
*:
http表示从 URL 下载,
file表示使用本地文件。
behavior
*: 决定了规则集文件内容的格式。
domain
*: 文件内容每行只有一个域名,Clash 会自动为其添加
DOMAIN-SUFFIX类型。
ipcidr
*: 文件内容每行只有一个 IP CIDR,Clash 会自动为其添加
IP-CIDR类型。
classical
*: 文件内容本身就是完整的
TYPE,VALUE格式(没有 POLICY),Clash 会在引用时为其添加 POLICY。
url
*: 远程规则文件的 URL (仅当
type: http)。
path
*: 规则文件在本地的存储路径。对于
http类型,这是下载后保存的位置;对于
file类型,这是直接读取的位置。
interval
*: 自动更新检查的间隔时间(秒),仅对
http` 类型有效。 -
在
rules:
中引用 Rule Provider:
使用RULE-SET
类型来引用定义好的规则提供者。
“`yaml
rules:
# 引用广告屏蔽规则集,匹配到的流量拒绝- RULE-SET,adblock,REJECT
# 引用国内网站规则集,匹配到的流量直连 - RULE-SET,cn_direct,DIRECT
# 引用流媒体规则集,匹配到的流量走 “流媒体策略” - RULE-SET,streaming_media,流媒体策略
# … 其他自定义规则 … - GEOIP,CN,DIRECT
- MATCH,国外代理 # 最后的兜底规则
“`
- RULE-SET,adblock,REJECT
-
优势:
- 模块化: 主配置文件更简洁,逻辑更清晰。
- 易于维护: 更新规则只需修改对应的外部文件或等待自动更新,无需改动主配置。
- 共享与复用: 可以方便地使用社区维护的优秀规则集。
四、 编写自定义规则的实践步骤与技巧
-
确定需求: 首先明确你想要通过自定义规则实现什么目标?是屏蔽广告?让国内网站直连?让特定应用走特定代理?还是其他更复杂的需求?
-
选择合适的规则类型: 根据需求选择最精确且高效的规则类型。
- 域名控制优先使用
DOMAIN-SUFFIX
。 - IP 控制使用
IP-CIDR
。 - 大范围屏蔽使用
DOMAIN-KEYWORD
时要小心副作用。 - 国内外分流基础用
GEOIP,CN,DIRECT
。 - 局域网访问务必添加
IP-CIDR
直连规则。
- 域名控制优先使用
-
组织规则顺序: 这是自定义规则成功的关键。
- 高优先级在前: 最重要、最需要精确匹配的规则放在最前面。例如,局域网直连规则通常应该非常靠前。
- 精细规则在前,宽泛规则在后:
DOMAIN
规则应在DOMAIN-SUFFIX
之前(如果需要精确匹配),DOMAIN-SUFFIX
应在DOMAIN-KEYWORD
之前。特定的IP-CIDR
规则应在GEOIP
规则之前。 - 屏蔽规则靠前: 广告屏蔽、追踪器屏蔽等
REJECT
规则通常也建议放在前面,尽早拦截不需要的连接。 - 常用分流规则居中: 如
GEOIP,CN,DIRECT
和一些常用的DOMAIN-SUFFIX
规则。 - 兜底规则在最后:
MATCH
或FINAL
规则必须放在所有规则的末尾。
-
编辑配置文件:
- 找到你的 Clash 配置文件
config.yaml
(具体位置取决于你的客户端和操作系统)。 - 强烈建议先备份原始配置文件!
- 找到
rules:
字段,它是一个 YAML 列表(以-
开头)。 - 在
rules:
列表下,按照你规划好的顺序添加或修改规则。确保 YAML 格式正确(主要是缩进)。 - 如果你使用了
Rule Providers
,确保rule-providers:
部分也正确配置,并在rules:
中正确引用。
- 找到你的 Clash 配置文件
-
重载配置与测试:
- 保存修改后的
config.yaml
文件。 - 在 Clash 客户端中执行“重载配置”或重启 Clash 服务。
- 测试!测试!测试! 这是必不可少的一步。
- 访问你添加或修改规则针对的网站/服务,检查流量是否按预期走向(直连、拒绝、走指定代理)。
- 使用 Clash 客户端通常提供的“连接”或“Connections”面板,实时查看每个连接命中了哪条规则以及走了哪个策略。这是调试规则最直接有效的方法。
- 检查 Clash 的日志(通常需要开启日志记录),日志中会记录规则匹配的详细信息和潜在错误。
- 保存修改后的
-
迭代优化:
- 自定义规则往往不是一蹴而就的。根据测试结果,不断调整规则内容、顺序,处理误伤或遗漏的情况。
- 关注社区分享的规则集和经验,持续学习和改进。
五、 实用场景示例
以下是一些整合了上述知识点的实用规则片段(仅为示例,需根据你的实际策略组名称调整):
“`yaml
config.yaml
… (省略其他配置如 proxies, proxy-groups) …
规则提供者定义 (可选)
rule-providers:
adblock:
type: http
behavior: domain
url: “https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Providers/BanAD.yaml”
path: ./ruleset/adblock.yaml
interval: 86400
cn_sites:
type: http
behavior: domain
url: “https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Providers/Direct.yaml” # 示例国内域名列表
path: ./ruleset/cn_sites.yaml
interval: 86400
telegram_cidr:
type: http
behavior: ipcidr
url: “https://raw.githubusercontent.com/telegramdesktop/tdesktop/dev/infra/tdata/ip_list.txt” # 假设这是Telegram的IP列表
path: ./ruleset/telegram_cidr.yaml
interval: 86400
规则列表
rules:
# — 高优先级规则 —
# 1. 广告屏蔽 (使用 Rule Provider)
– RULE-SET,adblock,REJECT
# 2. 局域网地址直连
– IP-CIDR,192.168.0.0/16,DIRECT
– IP-CIDR,10.0.0.0/8,DIRECT
– IP-CIDR,172.16.0.0/12,DIRECT
– IP-CIDR,127.0.0.0/8,DIRECT
– DOMAIN-SUFFIX,localhost,DIRECT # 本地主机名
# — 特定服务规则 —
# 3. Telegram 使用 IP 规则走特定代理 (如果 DNS 污染严重,IP 规则更可靠)
– RULE-SET,telegram_cidr,Telegram专线
# 4. Netflix, Disney+ 等流媒体走 “流媒体策略”
– DOMAIN-SUFFIX,netflix.com,流媒体策略
– DOMAIN-SUFFIX,nflxvideo.net,流媒体策略
– DOMAIN-SUFFIX,disneyplus.com,流媒体策略
# 5. 国内常用网站直连 (使用 Rule Provider)
– RULE-SET,cn_sites,DIRECT
# 6. Apple 服务走直连或特定代理 (根据网络情况决定)
– DOMAIN-SUFFIX,apple.com,DIRECT # 或 苹果服务代理
– DOMAIN-SUFFIX,icloud.com,DIRECT # 或 苹果服务代理
# 7. 微软服务直连 (避免影响 Office 激活、Windows 更新等)
– DOMAIN-SUFFIX,microsoft.com,DIRECT
– DOMAIN-SUFFIX,live.com,DIRECT
– DOMAIN-SUFFIX,office.com,DIRECT
# — 基础分流规则 —
# 8. 中国大陆 IP 直连 (作为国内流量的基础保障)
– GEOIP,CN,DIRECT
# — 兜底规则 —
# 9. 所有其他未匹配流量,走 “全球代理” 策略组
– MATCH,全球代理
注意: 上述策略名如 “Telegram专线”, “流媒体策略”, “全球代理”, “苹果服务代理”
需要在 config.yaml 的 proxy-groups 部分有对应的定义。
“`
六、 结语
Clash 的自定义规则是其强大功能的集中体现。通过深入理解规则类型、匹配逻辑、顺序重要性以及 Rule Providers
的运用,您可以将 Clash 打造成完全符合个人需求的智能网络流量调度中心。虽然初看可能有些复杂,但只要遵循“先理解、后实践、多测试、勤优化”的原则,逐步积累经验,您一定能够熟练掌握自定义规则的配置,享受更加顺畅、高效、个性化的网络代理体验。
记住,网络环境和需求是不断变化的,保持对新规则类型、优秀规则集和社区实践的关注,将有助于您持续优化您的 Clash 配置。祝您配置顺利!