Clash 规则分流配置详解:自定义规则让国内外流量精准分流
Rule 模式在做什么?
把 Clash 想成交通调度中心:每个网络连接进来,内核要决定「直连」还是「走哪一个代理组」。在 mode: rule 下,这个决定完全由 rules: 列表驱动。列表从第一条开始扫描,一旦某条规则匹配成功,立即采用该条指定的策略或代理组,后面的规则不再参与本次连接。
因此,规则分流的本质是优先级 + 精确度的博弈。更具体、更需要例外的规则应写在前面;宽泛的兜底规则(例如整段 GEOIP 或最后的 MATCH)放在后面。很多「国内网站误走代理」或「国外 API 被直连」的问题,都是顺序写反或缺少关键一条导致的。
与 Global / Direct 的区别:mode: global 几乎全部流量走代理组;mode: direct 则几乎全直连。只有 Rule 模式才让你用 YAML 精细控制分流,也是本文讨论的前提。
常用规则类型速查
下面是最常见、最值得先掌握的几类规则。不同内核分支(如 Mihomo)在扩展规则上会更丰富,但下列写法在主流 Clash 系配置中通用性最好。
| 类型 | 含义 | 示例 |
|---|---|---|
DOMAIN |
完整域名相等匹配 | DOMAIN,www.example.com,节点选择 |
DOMAIN-SUFFIX |
后缀匹配(含子域) | DOMAIN-SUFFIX,google.com,节点选择 |
DOMAIN-KEYWORD |
域名中包含关键字即命中(易误伤,慎用) | DOMAIN-KEYWORD,github,节点选择 |
IP-CIDR / IP-CIDR6 |
目标 IP 落在网段内则命中 | IP-CIDR,192.168.0.0/16,DIRECT,no-resolve |
GEOIP |
按 GeoIP 库判断 IP 归属国家/地区 | GEOIP,CN,DIRECT |
RULE-SET |
引用规则集(需配置 rule-providers) |
RULE-SET,cn_domain,DIRECT |
MATCH |
匹配任意剩余流量,作最终兜底 | MATCH,节点选择 |
IP-CIDR 行尾的 no-resolve 很重要:它告诉内核「在还没解析出 IP 前不要拿这条去凑数」,避免 DNS 查询阶段产生奇怪匹配。若你希望「先解析成 IP 再走 GEOIP」,就要保证 DNS 与 fake-ip 策略不会把域名提前变成虚假 IP,否则 GEOIP 可能永远对不上真实归属。
rule-providers 与 RULE-SET:维护大量规则更轻松
手写几百条 DOMAIN-SUFFIX 很快会失控。社区惯例是把成批域名或 IP 段放到规则集里,通过 rule-providers 声明远程或本地文件,再在 rules 里用 RULE-SET,name,policy 引用。
典型好处有三点:一是订阅式更新,GeoSite / 广告拦截列表可以随上游刷新;二是主配置 config.yaml 保持可读;三是 Mihomo 等内核支持 .mrs 等高效格式,匹配性能更好。使用时注意 provider 的 behavior(domain、ipcidr、classical)要与规则集内容一致,否则可能加载失败或完全不命中。
国内外分流:最常见的一条龙写法
国内用户最常用的目标是:大陆站点与局域网直连,其余走代理。思路上一般是「先排除局域网 → 再处理私有与特殊地址 → 可选广告或追踪列表 → 大陆域名或大陆 IP → 最后 MATCH 到代理组」。
极简版可以只有两行:GEOIP,CN,DIRECT 与 MATCH,你的代理组。但现实中很多国内站点解析到境外 CDN,或部分服务使用非 CN 段 IP,单靠 GEOIP 会误判。更稳妥的做法是同时使用大陆域名规则集(RULE-SET)与 GEOIP,CN,并把你确定要直连的域名用 DOMAIN 置顶。
置顶技巧:公司内网、网银、校园网、常用国内云控制台等,建议单独 DOMAIN 或 DOMAIN-SUFFIX 写在列表最前,再跟规则集与 GEOIP。这样不会被宽泛规则抢先匹配。
DNS、fake-ip 与规则的关系
开启 dns.enhanced-mode: fake-ip 后,应用程序拿到的往往是内核分配的虚拟 IP,真正的域名解析在 Clash 内部完成。此时部分基于 IP 的规则(如 GEOIP、部分 IP-CIDR)要在解析完成后才能正确工作。若你发现「规则明明写了直连,却仍然走代理」,优先检查 DNS 是否指向了合适的国内 DoH/DoT,以及 fake-ip-filter 是否把需要真实解析的域名排除在外。
与规则分流强相关的还有 fallback-filter.geoip 与 nameserver-policy:它们决定「哪些域名用哪套 DNS 解析」。解析结果直接影响后续匹配哪条 IP 规则,和 TUN 模式、系统代理配合使用时尤其要整体考虑,而不是只改 rules 一块。
可参考的最小规则片段(节选)
下面是一段教学用示意:请把其中的 rule-providers URL 换成你信任的上游,并把 节点选择 换成你配置里真实的策略组名称。订阅里的 proxies 与 proxy-groups 此处省略。
YAMLmode: rule
# Example rule-providers: replace URLs with your trusted sources
rule-providers:
cn_domain:
type: http
behavior: domain
url: "https://example.com/rules/cn-domain.txt"
path: ./ruleset/cn_domain.yaml
interval: 86400
proxy-groups:
- name: "节点选择"
type: select
proxies:
- "自动选择"
- DIRECT
- name: "自动选择"
type: url-test
proxies: []
url: "http://www.gstatic.com/generate_204"
interval: 300
rules:
- DOMAIN-SUFFIX,local,DIRECT
- IP-CIDR,127.0.0.0/8,DIRECT,no-resolve
- IP-CIDR,10.0.0.0/8,DIRECT,no-resolve
- IP-CIDR,172.16.0.0/12,DIRECT,no-resolve
- IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
- RULE-SET,cn_domain,DIRECT
- GEOIP,CN,DIRECT
- MATCH,节点选择
若你尚未熟悉订阅与配置合并流程,可先阅读本站订阅导入教程,再在客户端的「配置编辑」或 Mixin 里追加自己的 rules 段落,避免手工拼写出错。
常见现象与排错顺序
第一,国内站走了代理:检查该域名是否被更靠前的 DOMAIN-KEYWORD 或大块 RULE-SET 误伤;尝试在规则顶部加精确 DOMAIN。第二,国外 API 直连失败或被墙:看是否命中了 GEOIP,CN 或大陆规则集(例如目标 IP 落在香港或新加坡 CDN,却被你误判策略)。第三,规则改了不生效:确认已重新加载配置,且 GUI 没有第二份覆盖文件(如 Profile 与 Mixin 优先级问题)。
进阶用户建议打开日志级别 info 或 debug,观察单次连接命中的规则名称;对照 YAML 行号比凭感觉改规则要快得多。
小结
Clash 规则分流不难记:记住自上而下只命中一次,把例外写前、兜底写后;域名与 IP 两类规则搭配使用,比单押 GEOIP 更稳;大规模列表交给 rule-providers;DNS 与 fake-ip 要和规则同一盘棋考虑。
相比「全局代理一切」或「手动切系统代理」,成熟的 Rule 配置能在延迟、流量费用和隐私之间取得更平衡的日常体验。把规则维护当作长期习惯——每隔一段时间根据实际访问日志微调几条——你会明显感到网页打开更跟手、视频缓冲更稳。
若你希望从安装与界面操作开始系统入门,可结合本站教程文档循序渐进;选一款内置 Mihomo、对配置编辑与日志友好的客户端,也会让调试规则轻松不少。
相比许多仅提供固定「全局 / 规则」开关的工具,Clash 系生态在规则表达力和社区规则集方面明显更灵活:同一份配置可以随订阅合并、随设备同步,又能保留你自己的几条置顶直连。若你正在找一款稳定、开源且持续更新的客户端,→ 立即免费下载 Clash,开启流畅上网新体验。
规则集 URL 请只使用可信来源;来路不明的规则可能包含误导性条目或隐私风险。本站下载与文档仅作客户端与配置教学,请遵守当地法律法规与服务条款。