Skip to content

Clash 分流规则详解与示例

Clash 的路由分流功能是其最强大的特性之一。通过配置 Rules(规则),你可以精确地控制每一个网络请求是走代理、直连还是拒绝。

规则基本语法

Clash 的规则配置按从上到下的顺序进行匹配,一旦匹配成功,就会执行指定策略,并忽略后续规则。

语法格式:

yaml
- TYPE,VALUE,PROXY
  • TYPE: 匹配类型(如域名、IP、进程名等)
  • VALUE: 匹配的内容(如 google.com, US, 192.168.0.0/16)
  • PROXY: 策略组名称(如 Proxy, DIRECT, REJECT)

常用匹配类型详解

1. 域名类 (Domain)

最常用的规则类型,用于根据请求的域名进行分流。

类型描述示例说明
DOMAIN-SUFFIX域名后缀匹配DOMAIN-SUFFIX,google.com,Proxy匹配 google.com 及其所有子域名(如 www.google.com),效率最高,最推荐
DOMAIN-KEYWORD域名关键词匹配DOMAIN-KEYWORD,google,Proxy只要域名中包含 google 字符串即匹配(如 ads-google.com)。效率略低,慎用。
DOMAIN完整域名匹配DOMAIN,www.baidu.com,DIRECT必须完全一致才匹配,map.baidu.com 不会匹配。

2. IP 类 (IP-CIDR)

用于根据目标 IP 地址进行分流。

⚠️ 注意:如果规则中包含 IP 类规则,Clash 必须先进行 DNS 解析拿到 IP 后才能进行匹配(除非开启 no-resolve)。

类型描述示例说明
IP-CIDRIPv4 网段匹配IP-CIDR,127.0.0.0/8,DIRECT匹配特定网段。
IP-CIDR6IPv6 网段匹配IP-CIDR6,2620:0:2d0:200::7/32,Proxy匹配 IPv6。
GEOIPIP 地理位置匹配GEOIP,CN,DIRECT根据 IP 所属国家代码分流。需配合 Country.mmdb 数据库。

关于 no-resolve 如果你希望在匹配 IP 规则时不触发 DNS 解析(例如只是想兜底匹配某些直接访问 IP 的请求),可以加上 no-resolve 选项:

yaml
- GEOIP,CN,DIRECT,no-resolve

这意味着:如果请求本身就是域名(如 www.baidu.com),Clash 会先跳过这条规则(不解析 DNS),继续往下匹配。直到所有域名规则都匹配失败,最后不得不解析 DNS 时,或者请求本身就是直接访问 IP(如 114.114.114.114),才会回头来匹配这条规则。这能显著提高匹配速度并减少不必要的 DNS 查询。

3. 特殊类 (Process, Src-IP)

类型描述示例
SRC-IP-CIDR源 IP 匹配SRC-IP-CIDR,192.168.1.101/32,DIRECT
指定局域网内某台设备直连或走特定代理。
DST-PORT目标端口匹配DST-PORT,80,DIRECT
PROCESS-NAME进程名匹配PROCESS-NAME,nc.exe,DIRECT
Windows/macOS/Linux 生效,Android 不支持。

4. 规则集 (Rule Providers) - 进阶推荐

将大量规则写在 config.yaml 中会导致文件臃肿。Clash Premium 和 Meta内核支持 RULE-SET,引用外部规则文件。

定义 Provider:

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

使用 Rule Set:

yaml
rules:
  - RULE-SET,google,Proxy
  - GEOIP,CN,DIRECT
  - MATCH,Proxy

极简配置模板 (Template)

一份适合大多数人的基础分流规则顺序:

yaml
rules:
  # 1. 拦截广告(可选)
  - DOMAIN-KEYWORD,adsite,REJECT
  
  # 2. 局域网和私有地址直连
  - DOMAIN-SUFFIX,local,DIRECT
  - IP-CIDR,192.168.0.0/16,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,127.0.0.0/8,DIRECT,no-resolve

  # 3. 常见国内域名直连 (建议使用 Rule Provider 维护)
  - DOMAIN-SUFFIX,cn,DIRECT
  - DOMAIN-KEYWORD,baidu,DIRECT
  - DOMAIN-SUFFIX,bilibili.com,DIRECT

  # 4. 常见国外域名走代理
  - DOMAIN-SUFFIX,google.com,Proxy
  - DOMAIN-SUFFIX,github.com,Proxy
  - DOMAIN-SUFFIX,telegram.org,Proxy

  # 5. Telegram IP 规则 (因为 TG 经常直接使用 IP)
  - IP-CIDR,91.108.4.0/22,Proxy,no-resolve
  - IP-CIDR,149.154.160.0/20,Proxy,no-resolve

  # 6. GeoIP 中国直连
  - GEOIP,CN,DIRECT

  # 7. 兜底规则(未匹配到的全走代理)
  - MATCH,Proxy

💡 提示

Clash Meta (Mihomo) 内核引入了更多高级规则,如 GEOSITE(基于域名的地理位置/类别数据库),比 DOMAIN-SUFFIX 列表更易维护:

yaml
rules:
  - GEOSITE,category-ads-all,REJECT
  - GEOSITE,cn,DIRECT
  - GEOSITE,geolocation-!cn,Proxy
  - MATCH,Proxy

这需要配合 geosite.dat 文件使用。

  1. 策略组:配置了「自动选择」策略组,会自动选择延迟最低的节点。
  2. GeoIP/GeoSite:使用了 Meta 内核特有的 GEOSITE 规则,请确保你的客户端内核支持(Clash Meta / Mihomo)。

💡 提示

如果你使用的是 Clash for Windows 原版内核,可能不支持 GEOSITE 规则,建议改为标准的 DOMAIN-SUFFIX 等规则或更换内核。