自定义分流规则
深入了解 Clash Party 的配置覆写功能,学习如何编写自定义分流规则,掌握 DOMAIN、IP-CIDR 等常用规则语法。通过实战示例,掌握规则的编写和生效技巧。
Clash Party 的「配置覆写」功能允许你在不修改原始订阅文件的情况下,注入自定义的配置。这在需要对特定网站进行强制代理、直连或拦截时非常有用。
本文将详细介绍规则的编写语法,并提供大量实用的例子。
什么是分流规则?
分流规则(Rules)是 Clash 处理网络请求的核心逻辑。每当一个网络请求发起时,Clash 会从上到下依次匹配规则列表。
- 一旦匹配成功,就会按照该规则指定的**策略(Strategy)**进行处理(如走代理、直连或拒绝)。
- 如果所有规则都不匹配,通常会使用默认的兜底策略(通常是
MATCH或FINAL)。
如何添加自定义规则
在 Clash Party 中添加自定义规则的步骤如下:
- 进入 设置 (Settings) > 配置覆写 (Configuration Override)。
- 点击 新建 (New) 按钮。
- 选择 规则 (Rules) 类型。
- 在编辑器中输入你的规则(YAML 格式)。
- 保存并启用该覆写配置。
提示
规则语法结构
一条标准的 Clash 规则由三个部分组成,用逗号分隔:
类型,条件,策略
- 类型 (Type):匹配的方式,如域名后缀、关键字、IP 范围等。
- 条件 (Value):具体的匹配内容,如
google.com或192.168.0.0/16。 - 策略 (Strategy):匹配后的动作,如
Proxy(代理)、Direct(直连)、Reject(拒绝/拦截),或者是你策略组的具体名称(如US Node)。
常用策略 (Strategy)
- DIRECT:直连,不经过代理。
- REJECT:拒绝,拦截请求(常用于去广告)。
- PROXY / Proxy:使用默认代理节点或策略组(取决于你的主策略组名称,通常订阅中会有一个名为 Proxy 或 节点选择 的组)。
- 策略组名称:你可以在这里填写订阅中存在的任意策略组名称,例如
Streaming、Apple等。
规则类型详解
1. 域名类规则
DOMAIN-SUFFIX (域名后缀匹配)
最常用的规则类型。匹配该域名及其所有子域名。
- 语法:
DOMAIN-SUFFIX,域名,策略 - 示例:
# 匹配 google.com, www.google.com, maps.google.com 等 - DOMAIN-SUFFIX,google.com,Proxy
DOMAIN-KEYWORD (域名关键字匹配)
只要域名中包含该关键字就匹配。速度稍慢,建议仅在无法确定完整域名时使用。
- 语法:
DOMAIN-KEYWORD,关键字,策略 - 示例:
# 匹配 adservice.google.com, my-ad-site.com 等 - DOMAIN-KEYWORD,ad,REJECT
DOMAIN (完整域名匹配)
精确匹配整个域名,子域名不生效。
- 语法:
DOMAIN,域名,策略 - 示例:
# 仅匹配 www.google.com,不匹配 mail.google.com - DOMAIN,www.google.com,Proxy
2. IP 类规则
IP-CIDR / IP-CIDR6 (IP 段匹配)
匹配目标 IP 地址是否在指定的网段内。no-resolve 是可选参数,表示不进行 DNS 解析(如果请求已经是 IP 形式)。
- 语法:
IP-CIDR,IP地址/掩码,策略[,no-resolve] - 示例:
# 局域网直连 - IP-CIDR,192.168.0.0/16,DIRECT # 谷歌 DNS 走代理 - IP-CIDR,8.8.8.8/32,Proxy
GEOIP (地理位置匹配)
根据目标 IP 的归属地进行匹配。需要依赖 GeoIP 数据库。
- 语法:
GEOIP,国家代码,策略[,no-resolve] - 示例:
# 中国大陆 IP 直连 - GEOIP,CN,DIRECT
3. 端口与进程规则
DST-PORT (目标端口匹配)
匹配请求的目标端口。
- 语法:
DST-PORT,端口号,策略 - 示例:
# 拦截 80 端口的 HTTP 流量(仅作示例,慎用) - DST-PORT,80,REJECT
PROCESS-NAME (进程名匹配)
匹配发起请求的应用程序名称。这在 Windows/macOS 上非常有用。
- 语法:
PROCESS-NAME,进程名,策略 - 示例:
# 让 Telegram 强制走代理 - PROCESS-NAME,Telegram.exe,Proxy # 让网易云音乐强制直连 - PROCESS-NAME,NeteaseMusic.exe,DIRECT
实战示例库
以下是一些常见的配置场景,你可以直接复制到配置覆写中。
场景一:强制特定网站走代理
有时候自动分流规则可能不准确,或者你想强制某个国内网站走代理(例如为了测试)。
- DOMAIN-SUFFIX,bilibili.com,Proxy
- DOMAIN-SUFFIX,weibo.com,Proxy
场景二:自定义去广告/拦截
拦截特定的跟踪器或广告域名。
- DOMAIN-SUFFIX,doubleclick.net,REJECT
- DOMAIN-KEYWORD,analytics,REJECT
场景三:解决银行应用无法访问的问题
有些银行 App 或网站对代理非常敏感,必须强制直连。
- DOMAIN-SUFFIX,cmbchina.com,DIRECT # 招商银行
- DOMAIN-SUFFIX,95559.com.cn,DIRECT # 交通银行
- DOMAIN-KEYWORD,bank,DIRECT
场景四:特定软件分流
让 Zoom 会议软件强制直连以保证稳定性,让 Discord 强制走代理。
# Windows 示例
- PROCESS-NAME,Zoom.exe,DIRECT
- PROCESS-NAME,Discord.exe,Proxy
# macOS 示例 (通常不需要 .app 后缀,取决于进程实际名称)
- PROCESS-NAME,Zoom,DIRECT
- PROCESS-NAME,Discord,Proxy
场景五:开发环境分流
如果你是开发者,可能需要连接公司内网或特定测试服务器。
# 公司内网 IP 段直连
- IP-CIDR,10.0.0.0/8,DIRECT
# 特定测试域名走代理
- DOMAIN-SUFFIX,test-env.company.com,Proxy
常见问题与注意事项
优先级问题: 自定义规则通常添加在列表顶部,因此优先级最高。如果你写了
DOMAIN-SUFFIX,google.com,DIRECT,那么即使订阅中有google.com,Proxy,也会优先执行你的直连规则。策略组名称必须存在: 如果你在策略部分填写的不是
DIRECT、REJECT,而是一个具体的策略组名称(如Netflix),请确保你的订阅中确实存在这个名称的策略组,否则会导致配置错误。YAML 格式敏感:
- 冒号后面通常需要空格。
- 缩进必须使用空格,不能用 Tab。
- 列表项使用
-开头。
no-resolve 的作用: 在 IP 规则中使用
no-resolve可以避免 Clash 为了匹配 IP 规则而发起不必要的 DNS 解析请求。如果流量本身就是基于域名的,Clash 会先解析域名得到 IP 再匹配 IP 规则。加上no-resolve后,如果请求是域名,则直接跳过这条 IP 规则(除非 DNS 解析已经在之前的步骤中完成)。通常建议在GEOIP和IP-CIDR规则末尾加上,no-resolve。
推荐的开源规则集
如果你需要大量、分类完善的规则(如“所有苹果服务”、“所有广告域名”等),直接手写可能太繁琐。以下是一些社区维护的知名规则集项目,你可以参考它们的列表内容,或通过 rule-providers 方式引用(进阶用法):
Loyalsoldier/clash-rules
- 特点:非常知名,专注于 GeoIP 和域名分类,适合作为基础规则库。
- 包含:
Google,Apple,Telegram,GFW,Greatfire等分类。 - 链接:GitHub 仓库
ACL4SSR/ACL4SSR
- 特点:历史悠久,分类极其细致,很多订阅转换服务默认使用其规则。
- 包含:
Netflix,Disney+,Spotify,Steam,OneDrive等各类流媒体与应用分流。 - 链接:GitHub 仓库
blackmatrix7/ios_rule_script
- 特点:更新频率极高,覆盖了海量的应用和服务,几乎能找到所有你听过的 APP 的规则。
- 包含:按 APP 名称分类(如
TikTok,Twitter,OpenAI等),非常适合查找特定应用的域名列表。 - 链接:GitHub 仓库
通过掌握这些规则写法,你可以完全掌控 Clash Party 的分流行为,打造最适合自己的网络环境。