大多数用户用代理客户端的方式是:导入机场给的订阅链接,然后开始用。这没有任何问题。但如果你想真正理解配置文件在做什么,或者想自己调整分流逻辑,就需要搞清楚规则(rules)这一节。
01 为什么需要规则
代理不是一个开关。你不会希望访问百度时流量绕到海外再回来,也不会希望访问 GitHub 时走国内网络。规则就是告诉客户端:对于某类流量,走代理还是直连,或者走哪个节点。
一份合理的规则配置通常实现这样的效果:
- 国内网站和 IP → 直连
- 被屏蔽的网站 → 走代理
- 广告域名 → 拒绝
- 其他未匹配流量 → 走代理(兜底)
02 规则基本语法
每条规则的格式是三段:
规则类型,匹配值,策略
例如:
rules:
- DOMAIN,google.com,Proxy
- DOMAIN-SUFFIX,github.com,Proxy
- IP-CIDR,192.168.0.0/16,DIRECT
- GEOIP,CN,DIRECT
- MATCH,Proxy
规则从上到下匹配,第一条命中的规则生效,后面的规则不再判断。MATCH 是兜底规则,没有匹配值,必须放在最后。
03 域名类规则
DOMAIN:精确匹配完整域名。
- DOMAIN,ads.example.com,REJECT
只匹配 ads.example.com,不匹配 example.com 或 sub.ads.example.com。
DOMAIN-SUFFIX:匹配域名及其所有子域名。
- DOMAIN-SUFFIX,google.com,Proxy
匹配 google.com、www.google.com、mail.google.com 等所有以 .google.com 结尾的域名。这是最常用的域名规则类型。
DOMAIN-KEYWORD:匹配域名中包含关键词的请求。
- DOMAIN-KEYWORD,twitter,Proxy
匹配任何域名中含有 twitter 的请求,包括 twitter.com、api.twitter.com、cdn.twitter.com 等。精度比前两种低,但写起来最省事。
优先用 DOMAIN-SUFFIX 而不是 DOMAIN-KEYWORD。关键词匹配可能误伤不相关的域名——比如 DOMAIN-KEYWORD,you 会同时匹配 youtube.com 和任何含有 you 的域名。
DOMAIN-REGEX:正则表达式匹配。性能开销最大,非必要不用。
04 IP 类规则
IP-CIDR:匹配 IPv4 地址段。
- IP-CIDR,10.0.0.0/8,DIRECT
- IP-CIDR,172.16.0.0/12,DIRECT
- IP-CIDR,192.168.0.0/16,DIRECT
这三条是局域网地址,直连是标准做法。
IP-CIDR6:IPv6 版本,用法相同。
- IP-CIDR6,::1/128,DIRECT
- IP-CIDR6,fc00::/7,DIRECT
IP 规则的触发需要先做 DNS 解析。如果你开启了 TUN 模式,DNS 由 Clash 内核接管,IP 规则能可靠命中。在普通系统代理模式下,部分流量可能绕过 DNS 解析直接走 IP,IP 规则有时会不稳定。
05 GeoIP:一行搞定国内直连
手动维护几千条国内域名和 IP 是不现实的。GEOIP 规则通过离线的 GeoIP 数据库,判断一个 IP 属于哪个国家:
- GEOIP,CN,DIRECT
这一条规则等价于几千条 IP-CIDR 规则,把所有判断为中国 IP 的请求直连。
Clash.Meta / mihomo 内置了 geoip.dat 数据库,并支持自动更新。你不需要手动维护这个文件。
GEOIP 规则使用 MaxMind GeoLite2 数据库或社区维护的 Country.mmdb,准确率在 99% 以上。
— Clash.Meta 文档
类似地,还有 GEOSITE 规则(在部分版本中可用),用于匹配特定地区或类别的域名集合:
- GEOSITE,CN,DIRECT
- GEOSITE,category-ads-all,REJECT
06 策略组与规则的关系
规则里的第三段(策略)可以是:
DIRECT:直连,不走任何代理REJECT:拒绝,直接丢弃请求(常用于屏蔽广告)- 任意一个你在
proxy-groups里定义的策略组名称
例如,你在 proxy-groups 里定义了一个叫 Proxy 的自动选择组:
proxy-groups:
- name: Proxy
type: url-test
proxies:
- 香港01
- 日本01
- 新加坡01
url: http://www.gstatic.com/generate_204
interval: 300
规则里写 - DOMAIN-SUFFIX,google.com,Proxy,命中时就会自动选这个组里延迟最低的节点。
07 一份可用的最小配置结构
下面是一份精简的规则结构,覆盖了大多数使用场景:
rules:
# 局域网直连
- IP-CIDR,192.168.0.0/16,DIRECT
- IP-CIDR,10.0.0.0/8,DIRECT
- IP-CIDR,172.16.0.0/12,DIRECT
# 常用国内服务直连
- DOMAIN-SUFFIX,baidu.com,DIRECT
- DOMAIN-SUFFIX,qq.com,DIRECT
- DOMAIN-SUFFIX,wechat.com,DIRECT
- DOMAIN-SUFFIX,taobao.com,DIRECT
- DOMAIN-SUFFIX,jd.com,DIRECT
- DOMAIN-SUFFIX,bilibili.com,DIRECT
# 常见需代理的服务
- DOMAIN-SUFFIX,google.com,Proxy
- DOMAIN-SUFFIX,youtube.com,Proxy
- DOMAIN-SUFFIX,twitter.com,Proxy
- DOMAIN-SUFFIX,github.com,Proxy
- DOMAIN-SUFFIX,openai.com,Proxy
# GeoIP 兜底:国内 IP 直连
- GEOIP,CN,DIRECT
# 其余全走代理
- MATCH,Proxy
这个结构的逻辑是:先处理明确的直连(局域网、国内常用服务),再处理明确需要代理的服务,然后用 GeoIP 兜住剩余的国内 IP,最后所有未匹配的流量走代理。
实际使用中,机场提供的订阅文件通常已经包含了一套完整的规则,你不需要从头写。但理解了这套语法,就能在遇到问题时知道该在哪里调整——比如某个网站访问慢,加一条 DOMAIN-SUFFIX 改成 DIRECT;某个服务需要特定地区的节点,创建一个新的策略组。
Terraka 完整支持上述所有规则类型,包括 GEOIP、GEOSITE 和正则匹配。如果你有一份现有的 Clash 配置,可以直接导入。