什么是规则分流
规则分流是 Clash 的核心功能。它根据你预先定义的规则,决定每一条网络流量走哪条路径:
- 直连(DIRECT):流量直接发送到目标服务器,不经过代理。
- 代理(Proxy):流量通过你选择的代理节点转发。
- 拒绝(REJECT):直接丢弃该流量(常用于屏蔽广告)。
典型的分流策略是:国内网站直连(速度快)、国外网站走代理(绕过限制)、广告域名拒绝(净化体验)。
规则匹配原理
Clash 的规则匹配是从上到下、逐条匹配的。当一条流量进入 Clash 时:
- 从规则列表的第一条开始检查。
- 如果匹配到某条规则,立即执行该规则指定的动作(DIRECT/Proxy/REJECT),不再继续检查后续规则。
- 如果所有规则都不匹配,流量会交给最后一条
MATCH规则处理。
关键原则:规则的顺序很重要。更具体、优先级更高的规则应该放在前面。例如,如果你想让
google.com 走代理,但 google.cn 直连,那 google.cn 的规则应该写在 google.com 的前面。常见规则类型详解
DOMAIN / DOMAIN-SUFFIX
按域名匹配,最常用的规则类型:
DOMAIN,google.com,Proxy- 精确匹配google.com(不匹配子域名)DOMAIN-SUFFIX,google.com,Proxy- 匹配google.com及其所有子域名(www.google.com、mail.google.com等)
# 示例
rules:
- DOMAIN-SUFFIX,google.com,Proxy
- DOMAIN-SUFFIX,youtube.com,Proxy
- DOMAIN-SUFFIX,baidu.com,DIRECT
- DOMAIN-SUFFIX,taobao.com,DIRECT
DOMAIN-KEYWORD
按域名中包含的关键词匹配:
DOMAIN-KEYWORD,google,Proxy- 匹配任何包含google的域名(google.com、googleapis.com、googletagmanager.com等)
注意:DOMAIN-KEYWORD 匹配范围较广,可能误匹配。建议优先使用 DOMAIN-SUFFIX。
IP-CIDR / IP-CIDR6
按 IP 地址段匹配:
IP-CIDR,192.168.0.0/16,DIRECT- 匹配 192.168.x.x 的所有 IP(局域网)IP-CIDR,10.0.0.0/8,DIRECT- 匹配 10.x.x.x 的所有 IPIP-CIDR6,::1/128,DIRECT- 匹配 IPv6 本地回环地址
# 常见用途:局域网直连
rules:
- IP-CIDR,192.168.0.0/16,DIRECT
- IP-CIDR,10.0.0.0/8,DIRECT
- IP-CIDR,127.0.0.0/8,DIRECT
- IP-CIDR,172.16.0.0/12,DIRECT
GEOIP
根据 IP 的地理位置匹配,使用 MaxMind GeoIP 数据库:
GEOIP,CN,DIRECT- 如果目标 IP 位于中国大陆,直连GEOIP,US,Proxy- 如果目标 IP 位于美国,走代理
# 典型用法:中国 IP 直连,其余走代理
rules:
- GEOIP,CN,DIRECT
- MATCH,Proxy
SRC-IP-CIDR
按源 IP(本机 IP)匹配,用于区分不同设备的流量:
SRC-IP-CIDR,192.168.1.100/32,Proxy- 来自192.168.1.100的流量走代理
适用于路由器部署场景,不同设备走不同策略。
PROCESS-NAME
按发起连接的进程名匹配:
PROCESS-NAME,chrome.exe,Proxy- Chrome 浏览器的流量走代理PROCESS-NAME,WeChat.exe,DIRECT- 微信直连
# 进程分流示例
rules:
- PROCESS-NAME,chrome.exe,Proxy
- PROCESS-NAME,firefox.exe,Proxy
- PROCESS-NAME,WeChat.exe,DIRECT
- PROCESS-NAME,discord.exe,Proxy
注意:PROCESS-NAME 在 TUN 模式下最可靠。系统代理模式下,部分应用可能被系统重写为系统进程名,导致匹配失效。此外,macOS 下需要使用完整路径名。
MATCH
兜底规则,匹配所有流量。必须放在规则列表的最后一位:
MATCH,Proxy- 未被前面规则匹配的所有流量走代理MATCH,DIRECT- 未被前面规则匹配的所有流量直连
规则编写实战
下面是一个实用的规则配置示例,实现「国内直连 + 国外代理 + 广告屏蔽」:
rules:
# 广告域名拒绝
- DOMAIN-KEYWORD,admarvel,REJECT
- DOMAIN-KEYWORD,admaster,REJECT
- DOMAIN-KEYWORD,adsage,REJECT
- DOMAIN-KEYWORD,adsmogo,REJECT
- DOMAIN-KEYWORD,adsrvmedia,REJECT
- DOMAIN-KEYWORD,adwords,REJECT
- DOMAIN-KEYWORD,analytics,REJECT
# 常见代理域名
- DOMAIN-SUFFIX,google.com,Proxy
- DOMAIN-SUFFIX,googleapis.com,Proxy
- DOMAIN-SUFFIX,youtube.com,Proxy
- DOMAIN-SUFFIX,github.com,Proxy
- DOMAIN-SUFFIX,twitter.com,Proxy
- DOMAIN-SUFFIX,facebook.com,Proxy
- DOMAIN-SUFFIX,instagram.com,Proxy
- DOMAIN-SUFFIX,telegram.org,Proxy
- DOMAIN-SUFFIX,t.me,Proxy
# 常见直连域名
- DOMAIN-SUFFIX,cn,DIRECT
- DOMAIN-SUFFIX,baidu.com,DIRECT
- DOMAIN-SUFFIX,qq.com,DIRECT
- DOMAIN-SUFFIX,weixin.qq.com,DIRECT
- DOMAIN-SUFFIX,taobao.com,DIRECT
- DOMAIN-SUFFIX,jd.com,DIRECT
- DOMAIN-SUFFIX,163.com,DIRECT
- DOMAIN-SUFFIX,bilibili.com,DIRECT
# 局域网直连
- IP-CIDR,192.168.0.0/16,DIRECT
- IP-CIDR,10.0.0.0/8,DIRECT
- IP-CIDR,127.0.0.0/8,DIRECT
# 中国 IP 直连
- GEOIP,CN,DIRECT
# 兜底:其余走代理
- MATCH,Proxy
Rule Provider 使用方法
手动维护大量规则很繁琐。Rule Provider(规则集提供器)允许你引用外部规则文件,自动保持更新:
# 在配置文件中定义规则集提供器
rule-providers:
reject:
type: http
behavior: domain
url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/reject.txt"
path: ./ruleset/reject.yaml
interval: 86400 # 每天更新一次
proxy:
type: http
behavior: domain
url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/proxy.txt"
path: ./ruleset/proxy.yaml
interval: 86400
direct:
type: http
behavior: domain
url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/direct.txt"
path: ./ruleset/direct.yaml
interval: 86400
lan:
type: http
behavior: ipcidr
url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/lan.txt"
path: ./ruleset/lan.yaml
interval: 86400
cncidr:
type: http
behavior: ipcidr
url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/cncidr.txt"
path: ./ruleset/cncidr.yaml
interval: 86400
# 在 rules 中引用
rules:
- RULE-SET,reject,REJECT
- RULE-SET,proxy,Proxy
- RULE-SET,direct,DIRECT
- RULE-SET,lan,DIRECT
- RULE-SET,cncidr,DIRECT
- GEOIP,CN,DIRECT
- MATCH,Proxy
推荐社区规则集
以下是社区维护的高质量规则集:
| 项目名称 | 特点 | 适用场景 |
|---|---|---|
| Loyalsoldier/clash-rules | 每日自动更新,覆盖广告/代理/直连/局域网等 | 通用场景 |
| blackmatrix7/ios_rule_script | 规则全面,同时支持多种客户端格式 | 多平台用户 |
| ACL4SSR | 针对中国用户优化,分流精细 | 国内用户 |
规则调试技巧
当你发现某个网站没有按预期分流时,可以用以下方法排查:
- 查看连接日志:在 Clash Verge Rev 的「Logs」面板中,将日志级别设为
debug,观察目标域名和匹配到的规则。 - 查看实时连接:在「Connections」面板中,可以看到每条连接匹配了哪条规则和哪个代理组。
- 使用 API 查询:Clash 提供了 RESTful API,可以查询特定域名的匹配结果:
curl -s "http://127.0.0.1:9090/rules" | python -m json.tool - 测试单条规则:临时将可疑规则移到最前面,测试是否生效。
掌握规则配置后,建议结合 DNS 防污染配置 一起使用,确保域名解析也不泄漏。完整安装配置可参考 Windows 安装指南。