Clash 规则配置完整指南

规则是 Clash 最核心的功能。掌握规则配置,你就能精确控制哪些流量走代理、哪些直连、哪些拒绝。这篇文章从基础到进阶,详细讲解 Clash 的规则类型、编写方法、常用规则集,以及实战案例。

规则的工作原理

当你访问一个网站时,Clash 会按照配置文件中的规则列表,从上到下依次匹配。一旦匹配到第一条符合的规则,就按照规则指定的策略处理,不再继续往下匹配。

比如你的规则是这样的:

rules:
  - DOMAIN,www.google.com,Proxy
  - DOMAIN-SUFFIX,google.com,Direct
  - GEOIP,CN,Direct
  - MATCH,Proxy

当你访问 www.google.com 时:

这就是为什么规则顺序很重要:特殊规则放前面,通用规则放后面。

规则类型详解

DOMAIN - 域名精确匹配

只匹配完全相同的域名。

示例
DOMAIN,www.google.com,Proxy

匹配:www.google.com

不匹配:google.com、mail.google.com、m.google.com

使用场景:针对特定子域名使用不同策略。比如 GitHub 的某些子域名可能需要特殊处理。

DOMAIN-SUFFIX - 域名后缀匹配

匹配域名及其所有子域名。这是最常用的规则类型。

示例
DOMAIN-SUFFIX,google.com,Proxy

匹配:google.com、www.google.com、mail.google.com、accounts.google.com 等所有 .google.com 域名

使用场景:绝大部分情况用这个就够了。一条规则覆盖整个网站的所有子域名。

DOMAIN-KEYWORD - 域名关键词匹配

只要域名中包含指定关键词就匹配。

示例
DOMAIN-KEYWORD,google,Proxy

匹配:google.com、googleapis.com、googleusercontent.com、googlevideo.com

使用场景:某些服务的多个相关域名都包含同一个词,用一条规则全覆盖。但要小心误匹配。

注意:DOMAIN-KEYWORD 很容易误匹配。比如 DOMAIN-KEYWORD,google 会匹配 mygoogleanalytics.com 这种无关域名。能用 DOMAIN-SUFFIX 就别用 KEYWORD。

IP-CIDR - IP 地址段匹配

匹配特定的 IP 地址或 IP 段。

示例
IP-CIDR,192.168.0.0/16,Direct
IP-CIDR,10.0.0.0/8,Direct

使用场景:

  • 局域网流量直连(192.168.x.x、10.x.x.x)
  • 特定服务器 IP 段走特殊路由
  • 屏蔽某些 IP 段

GEOIP - 地理位置匹配

根据 IP 地址的地理位置匹配。Clash 内置了 IP 地理位置数据库。

示例
GEOIP,CN,Direct
GEOIP,US,US-Group

最常用的规则:GEOIP,CN,Direct - 所有中国大陆 IP 直连,不走代理。

这条规则几乎是必备的,能自动处理所有国内网站,不需要一个个添加域名规则。

MATCH - 兜底规则

匹配所有没有被前面规则匹配到的流量。

示例
MATCH,Proxy

必须放在规则列表的最后一行,作为兜底。前面所有规则都没匹配到的,按这条规则处理。

完整配置示例

这是一个典型的 Clash 配置文件结构,带详细注释:

# 基础配置
port: 7890                # HTTP 代理端口
socks-port: 7891         # SOCKS5 代理端口
allow-lan: false         # 是否允许局域网连接
mode: rule               # 模式:rule(规则)/global(全局)/direct(直连)
log-level: info          # 日志级别

# DNS 配置
dns:
  enable: true
  enhanced-mode: fake-ip  # fake-ip 或 redir-host
  fake-ip-range: 198.18.0.1/16
  nameserver:
    - 223.5.5.5           # 阿里 DNS
    - 119.29.29.29        # 腾讯 DNS
  fallback:
    - 8.8.8.8             # Google DNS
    - 1.1.1.1             # Cloudflare DNS
  fallback-filter:
    geoip: true
    geoip-code: CN

# 代理节点(通常从订阅获取,这里是示例)
proxies:
  - name: "香港-01"
    type: vmess
    server: hk1.example.com
    port: 443
    uuid: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
    alterId: 0
    cipher: auto

  - name: "美国-01"
    type: trojan
    server: us1.example.com
    port: 443
    password: your-password
    sni: us1.example.com

# 代理组
proxy-groups:
  # 手动选择组
  - name: "Proxy"
    type: select
    proxies:
      - "Auto"
      - "香港-01"
      - "美国-01"
      - DIRECT

  # 自动选择(延迟最低)
  - name: "Auto"
    type: url-test
    proxies:
      - "香港-01"
      - "美国-01"
    url: 'http://www.gstatic.com/generate_204'
    interval: 300

  # YouTube 专用组
  - name: "YouTube"
    type: select
    proxies:
      - "香港-01"
      - "美国-01"

# 规则列表
rules:
  # 局域网直连
  - DOMAIN-SUFFIX,local,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

  # 常用网站规则
  - DOMAIN-SUFFIX,google.com,Proxy
  - DOMAIN-SUFFIX,youtube.com,YouTube
  - DOMAIN-SUFFIX,googleapis.com,Proxy
  - DOMAIN-SUFFIX,github.com,Proxy
  - DOMAIN-SUFFIX,githubusercontent.com,Proxy
  - DOMAIN-SUFFIX,openai.com,Proxy
  - DOMAIN-SUFFIX,chatgpt.com,Proxy

  # 国内网站直连
  - DOMAIN-SUFFIX,qq.com,DIRECT
  - DOMAIN-SUFFIX,taobao.com,DIRECT
  - DOMAIN-SUFFIX,baidu.com,DIRECT
  - DOMAIN-SUFFIX,bilibili.com,DIRECT

  # 屏蔽广告
  - DOMAIN-SUFFIX,ad.com,REJECT
  - DOMAIN-KEYWORD,analytics,REJECT

  # 中国 IP 直连
  - GEOIP,CN,DIRECT

  # 兜底规则
  - MATCH,Proxy

实用规则案例

案例 1:开发者常用规则

rules:
  # GitHub 及相关服务
  - DOMAIN-SUFFIX,github.com,Proxy
  - DOMAIN-SUFFIX,githubusercontent.com,Proxy
  - DOMAIN-SUFFIX,github.io,Proxy
  - DOMAIN-SUFFIX,githubassets.com,Proxy

  # NPM 和前端工具
  - DOMAIN-SUFFIX,npmjs.org,Proxy
  - DOMAIN-SUFFIX,npmjs.com,Proxy
  - DOMAIN-SUFFIX,yarnpkg.com,Proxy

  # Docker
  - DOMAIN-SUFFIX,docker.com,Proxy
  - DOMAIN-SUFFIX,docker.io,Proxy

  # Google 开发者资源
  - DOMAIN-SUFFIX,golang.org,Proxy
  - DOMAIN-SUFFIX,stackoverflow.com,Proxy

案例 2:流媒体分流

# 先创建流媒体专用代理组
proxy-groups:
  - name: "Netflix"
    type: select
    proxies:
      - "美国节点"
      - "新加坡节点"

  - name: "YouTube"
    type: select
    proxies:
      - "香港节点"
      - "台湾节点"

rules:
  # Netflix 走美国或新加坡
  - DOMAIN-SUFFIX,netflix.com,Netflix
  - DOMAIN-SUFFIX,nflxvideo.net,Netflix

  # YouTube 走香港或台湾
  - DOMAIN-SUFFIX,youtube.com,YouTube
  - DOMAIN-SUFFIX,googlevideo.com,YouTube
  - DOMAIN-SUFFIX,ytimg.com,YouTube

案例 3:屏蔽广告

rules:
  # 常见广告域名
  - DOMAIN-SUFFIX,googleads.com,REJECT
  - DOMAIN-SUFFIX,doubleclick.net,REJECT
  - DOMAIN-KEYWORD,analytics,REJECT
  - DOMAIN-KEYWORD,tracker,REJECT
  - DOMAIN-KEYWORD,adservice,REJECT

  # 国内广告
  - DOMAIN-SUFFIX,tanx.com,REJECT
  - DOMAIN-SUFFIX,mmstat.com,REJECT

使用规则集(Rule Providers)

手动维护几百条规则很麻烦,Clash 支持订阅规则集。社区维护的规则集会定期更新,包含最新的分流规则。

配置规则集

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

# 使用规则集
rules:
  - RULE-SET,reject,REJECT
  - RULE-SET,proxy,Proxy
  - RULE-SET,direct,DIRECT
  - GEOIP,CN,DIRECT
  - MATCH,Proxy

常用规则集推荐

Loyalsoldier 规则集 - 最流行,每日更新:

ACL4SSR 规则集 - 分类详细:

规则编写技巧

技巧 1:规则顺序
  • 特殊规则在前,通用规则在后
  • 精确匹配(DOMAIN)在前,模糊匹配(KEYWORD)在后
  • GEOIP,CN,DIRECT 放在靠后位置
  • MATCH 永远是最后一条
技巧 2:减少规则数量

规则越多,匹配越慢。优先使用:

  • DOMAIN-SUFFIX 代替多条 DOMAIN
  • GEOIP,CN 代替几百条国内域名规则
  • 规则集代替手动列举
技巧 3:测试规则

修改规则后:

  • 查看 Clash 的连接日志,确认流量走向
  • 访问不同网站测试分流是否正确
  • 用 curl -v 命令行测试特定域名

常见问题

Q: 为什么某个网站没走代理?
检查规则顺序。可能前面有个 DIRECT 规则先匹配了。比如你写了 DOMAIN-KEYWORD,google,Proxy,但前面有条 GEOIP,CN,DIRECT,如果这个网站的 IP 被解析成国内 IP,就会先匹配 GEOIP 规则直连。
Q: 规则太多会影响速度吗?
会,但影响不大。几百条规则的话,延迟增加通常在 10ms 以内。如果有几千条规则,建议用规则集,Clash 对规则集有优化。
Q: DOMAIN 规则和 DOMAIN-SUFFIX 规则有什么区别?
DOMAIN 只匹配完全相同的域名,DOMAIN-SUFFIX 匹配域名及其所有子域名。99% 的情况用 DOMAIN-SUFFIX 就够了。