实战教程

Clash 规则集使用指南:精准分流,告别乱走代理

用好规则集,让国内网站直连、国外网站走代理、流媒体精准分流。本文从规则基础到规则集引用,手把手带你配置完美的分流策略。

很多人刚开始用 Clash 的时候,最头疼的就是分流问题。要么是开了全局模式,导致国内网站打开巨慢,甚至连外卖都点不了。要么是开了直连,国外网页又刷不出来。其实,Clash 真正强大的地方不在于它能翻墙,而在于它那套精细到头发丝儿的规则分流系统。

如果你还在手动切换“全局”和“直连”,那真的只发挥了 Clash 一成的功力。今天阿明就带大家深入聊聊 Clash 的规则配置,从基础语法到高端的 Rule-Providers(规则集),让你彻底告别代理乱走的烦恼。

为什么你需要掌握规则分流?

简单来说,规则分流就是给流量指路。你的流量来到 Clash 门口,规则会告诉它:你是淘宝的流量,直接走本地网络(DIRECT);你是 YouTube 的流量,去走香港节点;你是 Netflix 的流量,去走新加坡节点。

这样做的好处显而易见:

  1. 速度快:国内网站不经过代理服务器,几乎零延迟。
  2. 省流量:代理节点的流量通常比较珍贵,没必要浪费在看抖音上。
  3. 更智能:看流媒体时自动切换到对应地区的节点,不用手动切来切去。

Clash 规则基础语法

在深入规则集之前,我们要先看懂最基本的规则长什么样。每一条规则通常由三个部分组成:类型、内容、策略组(或策略)。

1. 域名匹配 (DOMAIN)

这是最常见的规则类型,直接指定某个域名。

  • DOMAIN:精确匹配某个域名。比如 DOMAIN,google.com,Proxy,只有访问 google.com 时才走代理,访问 sub.google.com 就不管用了。
  • DOMAIN-SUFFIX:匹配域名后缀。这是用得最多的。比如 DOMAIN-SUFFIX,google.com,Proxy,那么 google.com、www.google.com、mail.google.com 全都会走代理。
  • DOMAIN-KEYWORD:匹配包含某个关键词的域名。比如 DOMAIN-KEYWORD,google,Proxy,只要域名里带 google 字符,全都抓过来走代理。

2. IP 与地理位置 (IP/GEOIP)

有时候域名不固定,或者我们要针对整个国家的流量做处理,就要用到这些。

  • IP-CIDR:匹配特定的 IP 段。比如 IP-CIDR,192.168.1.0/24,DIRECT,这是处理局域网流量的常用手段。
  • GEOIP:根据地理位置分流。最经典的就是 GEOIP,CN,DIRECT,只要是中国的 IP,一律直连。

3. 其他常用类型

  • MATCH:这是一条全匹配规则,通常放在配置文件的最后一行。它的作用是把前面所有规则都没抓到的流量统一处理。比如 MATCH,Others

规则匹配的核心原则:从上到下

这里有一个非常关键的知识点:Clash 的规则是从上往下依次匹配的。

只要你的流量撞上了第一条符合条件的规则,它就直接按那条规则走了,不会再往下看后面的规则。所以,规则的摆放顺序非常讲究。

通常的建议顺序是:

  1. 拦截规则:比如广告过滤,一定要放在最上面,先把它干掉。
  2. 手动指定规则:你自己特别设置的一些域名分流。
  3. 流媒体规则:为了保证看片不卡顿,优先级要高一些。
  4. 全球加速/国外网站:常见的第三方规则集。
  5. 国内直连:剩下的国内 IP 和域名。
  6. MATCH:兜底规则。

进阶玩法:Rule-Providers 规则集

如果你手动在配置文件里写几百条 DOMAIN-SUFFIX,那维护起来简直是噩梦。这时候就要引入 Rule-Providers,也就是规则集。

你可以把规则集理解为一个外部的“规则包”。你不需要在主配置文件里写具体的域名,只需要引用这个包的地址,Clash 就会自动下载并更新。

远程规则集 vs 本地规则集

  • 远程规则集:直接引用网上的 URL。优点是省心,维护者更新了,你这边重启或者到期了也会跟着变。
  • 本地规则集:你自己写一个文件放在文件夹里。优点是稳定,不受网络波动影响。

阿明个人强烈建议大家使用成熟的远程规则集,因为网络环境变化太快,自己维护太累了。

主流规则集推荐

目前圈子里公认好用的规则集主要有两家:

1. Loyalsoldier/clash-rules

这是目前最火的规则集之一。它的分类非常科学,包含了常见广告、国内域名、国外常用域名、苹果服务等等。如果你追求极简,直接用这家的分类就够了。

2. blackmatrix7/ios_rule_script

这个规则集的特点是极其详尽。它把各种流媒体(Netflix、Disney+、HBO)、各种社交软件(Telegram、WhatsApp)甚至各种银行 App 的规则都单独拆出来了。如果你有非常细致的分流需求(比如 Telegram 走专用节点),选它没错。

完整配置示例

空谈理论没意思,阿明直接给大家上一段实战用的 YAML 配置片段。你可以把它整合进你的 Clash 配置文件里。

注意:应用这套规则时,推荐配合 ClashX 使用,macOS 下的体验最稳。

# 规则集定义
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

  icloud:
    type: http
    behavior: domain
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/icloud.txt"
    path: ./ruleset/icloud.yaml
    interval: 86400

  apple:
    type: http
    behavior: domain
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/apple.txt"
    path: ./ruleset/apple.yaml
    interval: 86400

  google:
    type: http
    behavior: domain
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/google.txt"
    path: ./ruleset/google.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

  private:
    type: http
    behavior: domain
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/private.txt"
    path: ./ruleset/private.yaml
    interval: 86400

  telegramcidr:
    type: http
    behavior: ipcidr
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/telegramcidr.txt"
    path: ./ruleset/telegramcidr.yaml
    interval: 86400

  cnip:
    type: http
    behavior: ipcidr
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/cnip.txt"
    path: ./ruleset/cnip.yaml
    interval: 86400

# 规则分流逻辑
rules:
  - RULE-SET,private,DIRECT
  - RULE-SET,reject,REJECT
  - RULE-SET,icloud,DIRECT
  - RULE-SET,apple,DIRECT
  - RULE-SET,google,代理节点
  - RULE-SET,proxy,代理节点
  - RULE-SET,direct,DIRECT
  - RULE-SET,telegramcidr,代理节点
  - RULE-SET,cnip,DIRECT
  - GEOIP,LAN,DIRECT
  - GEOIP,CN,DIRECT
  - MATCH,代理节点

这段配置的意思是:

  • 私有网络和苹果服务优先走直连。
  • 广告过滤规则集里的内容直接拦截。
  • Google 和已知的国外代理域名走“代理节点”这个策略组。
  • 已知的国内域名和中国 IP 走直连。
  • 剩下的乱七八糟没被抓住的流量,统一走代理。

流媒体专项分流:看片不卡顿的秘诀

如果你是个影迷,一定希望 Netflix 走新加坡或者香港,因为有中文字幕;而 Disney+ 可能要走美国或者新加坡。

这时候你需要针对流媒体单独设置策略组。比如:

proxy-groups:
  - name: Netflix
    type: select
    proxies:
      - 新加坡节点
      - 香港节点
      - 台湾节点

rules:
  - DOMAIN-SUFFIX,netflix.com,Netflix
  - DOMAIN-SUFFIX,netflix.net,Netflix
  - DOMAIN-SUFFIX,nflxext.com,Netflix
  - DOMAIN-SUFFIX,nflximg.com,Netflix
  - DOMAIN-SUFFIX,nflximg.net,Netflix
  - DOMAIN-SUFFIX,nflxvideo.net,Netflix

这样,当你打开 Netflix 时,Clash 会自动调用你为它专门准备的节点,而不会影响你刷网页用的其他代理节点。

常见问题解答 (FAQ)

1. 规则集太多会导致内存占用高吗?

确实会。每一个规则集加载后都会占用一定的内存。如果你的路由器或者老电脑内存只有 256MB 甚至更低,建议精简规则集,只保留最核心的 proxydirect。但对于现在的 macOS 设备来说,这点内存几乎可以忽略不计。

2. 规则集更新失败怎么办?

由于规则集的托管地址(如 GitHub 或 jsDelivr)在国内访问可能不稳定,经常会出现更新失败的情况。 解决办法:

  • 检查你的配置,确保 Clash 在更新规则集时能走一个稳定的代理。
  • 或者手动下载那些文本文件,改成本地路径(type: file)。

3. 怎么知道我的流量到底命中了哪条规则?

这是新手最容易忽略的一点。打开 ClashX 的菜单,选择“日志”或者“控制面板”,在日志流里你可以清晰地看到每一条请求的去向。 比如你看到一条 [Rule] Match Rule-Set(proxy) -> Proxy,你就知道它是被 proxy 这个规则集抓住了。如果发现某个本该直连的网站走了代理,在这里排查非常有效。

规则集调试技巧

当你发现配置了规则却不生效时,阿明建议你按照这个顺序自查:

  1. 缓存干扰:浏览器可能会有 DNS 缓存。尝试清理缓存或者用无痕模式打开网站。
  2. DNS 配置:Clash 的分流极度依赖 DNS。如果你的 DNS 配置不当,导致解析出来的 IP 被污染,那规则可能就失效了。建议开启 Clash 的 fake-ip 模式,这能解决 90% 的分流不准问题。
  3. 优先级冲突:回头看看你的 rules 列表,是不是在上面有一条大范围的规则把流量提前拦截了。

总结

学会用规则,是把 Clash 从“能用”变成“好用”的关键一步。虽然刚开始看那些 YAML 代码有点头大,但只要你搞清楚了“从上到下匹配”和“规则集引用”这两个核心概念,剩下的就是修修补补的工作了。

如果你在 macOS 上操作,阿明推荐使用 ClashX 来加载你的配置。它界面简洁,而且对规则集的管理非常直观。

别再对着“全局模式”叹气了,动手写一套属于你自己的完美分流规则吧!如果在这个过程中遇到什么坑,欢迎留言和阿明交流。