Clash 规则配置完整指南
规则是 Clash 最核心的功能。掌握规则配置,你就能精确控制哪些流量走代理、哪些直连、哪些拒绝。这篇文章从基础到进阶,详细讲解 Clash 的规则类型、编写方法、常用规则集,以及实战案例。
规则的工作原理
当你访问一个网站时,Clash 会按照配置文件中的规则列表,从上到下依次匹配。一旦匹配到第一条符合的规则,就按照规则指定的策略处理,不再继续往下匹配。
比如你的规则是这样的:
rules:
- DOMAIN,www.google.com,Proxy
- DOMAIN-SUFFIX,google.com,Direct
- GEOIP,CN,Direct
- MATCH,Proxy
当你访问 www.google.com 时:
- 第 1 条规则匹配成功(精确匹配 www.google.com),走代理,不再继续匹配
- 第 2 条规则不会执行,虽然它也能匹配 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,google 会匹配 mygoogleanalytics.com 这种无关域名。能用 DOMAIN-SUFFIX 就别用 KEYWORD。
IP-CIDR - IP 地址段匹配
匹配特定的 IP 地址或 IP 段。
IP-CIDR,192.168.0.0/16,DirectIP-CIDR,10.0.0.0/8,Direct
使用场景:
- 局域网流量直连(192.168.x.x、10.x.x.x)
- 特定服务器 IP 段走特殊路由
- 屏蔽某些 IP 段
GEOIP - 地理位置匹配
根据 IP 地址的地理位置匹配。Clash 内置了 IP 地理位置数据库。
GEOIP,CN,DirectGEOIP,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 规则集 - 最流行,每日更新:
- reject.txt - 广告屏蔽
- proxy.txt - 常见国外网站
- direct.txt - 国内网站
- gfw.txt - 被墙网站
- greatfire.txt - GreatFire 列表
ACL4SSR 规则集 - 分类详细:
- 按地区分类(中国、香港、台湾、日本、美国等)
- 按服务分类(Google、Netflix、GitHub、游戏等)
- 广告拦截、隐私保护
规则编写技巧
- 特殊规则在前,通用规则在后
- 精确匹配(DOMAIN)在前,模糊匹配(KEYWORD)在后
- GEOIP,CN,DIRECT 放在靠后位置
- MATCH 永远是最后一条
规则越多,匹配越慢。优先使用:
- DOMAIN-SUFFIX 代替多条 DOMAIN
- GEOIP,CN 代替几百条国内域名规则
- 规则集代替手动列举
修改规则后:
- 查看 Clash 的连接日志,确认流量走向
- 访问不同网站测试分流是否正确
- 用
curl -v命令行测试特定域名
常见问题
检查规则顺序。可能前面有个 DIRECT 规则先匹配了。比如你写了
DOMAIN-KEYWORD,google,Proxy,但前面有条 GEOIP,CN,DIRECT,如果这个网站的 IP 被解析成国内 IP,就会先匹配 GEOIP 规则直连。
会,但影响不大。几百条规则的话,延迟增加通常在 10ms 以内。如果有几千条规则,建议用规则集,Clash 对规则集有优化。
DOMAIN 只匹配完全相同的域名,DOMAIN-SUFFIX 匹配域名及其所有子域名。99% 的情况用 DOMAIN-SUFFIX 就够了。