在 Clash 配置文件中,rules 用来决定不同流量应该走直连、代理,还是被拦截。
例如下面这段配置:
rules:
- DOMAIN-SUFFIX,google.com,DIRECT
- DOMAIN-KEYWORD,google,DIRECT
- DOMAIN,google.com,DIRECT
- DOMAIN-SUFFIX,ad.com,REJECT
- GEOIP,CN,DIRECT
- MATCH,DIRECT
Clash 会按照规则从上到下依次匹配。
只要某一条规则匹配成功,就会使用这条规则,不再继续往下匹配。
DOMAIN-SUFFIX:匹配域名后缀
- DOMAIN-SUFFIX,google.com,DIRECT
DOMAIN-SUFFIX 表示匹配某个域名后缀。
只要访问的域名以 google.com 结尾,就会走 DIRECT,也就是直连。
例如:
google.com
www.google.com
mail.google.com
这些域名都会匹配这条规则。
这种规则适合用来匹配一个网站及其所有子域名。
DOMAIN-KEYWORD:匹配域名关键词
- DOMAIN-KEYWORD,google,DIRECT
DOMAIN-KEYWORD 表示匹配域名中包含的关键词。
只要域名中出现 google,就会走 DIRECT。
例如:
google.com
googleapis.com
googleusercontent.com
这些域名都会被匹配。
需要注意的是,DOMAIN-KEYWORD 的匹配范围比较大,可能会匹配到一些并不想匹配的域名,所以使用时要谨慎。
DOMAIN:精确匹配域名
- DOMAIN,google.com,DIRECT
DOMAIN 表示精确匹配某个域名。
只有访问的域名正好是:
google.com
才会匹配这条规则。
例如:
www.google.com
mail.google.com
这些子域名不会匹配 DOMAIN,google.com,DIRECT。
如果只想针对某一个具体域名设置规则,可以使用 DOMAIN。
REJECT:拒绝访问
- DOMAIN-SUFFIX,ad.com,REJECT
REJECT 表示拒绝访问匹配到的域名。
这条规则的意思是:只要域名以 ad.com 结尾,就直接拦截。
例如:
ad.com
www.ad.com
track.ad.com
这些域名都会被拒绝访问。
这种写法常用于屏蔽广告、统计、追踪类域名。
GEOIP:根据 IP 地区匹配
- GEOIP,CN,DIRECT
GEOIP 表示根据目标 IP 所属地区进行匹配。
这里的 CN 指中国大陆。
也就是说,如果目标 IP 属于中国大陆,就走 DIRECT,也就是直连。
这类规则常用于让国内网站直连,减少不必要的代理转发。
MATCH:兜底规则
- MATCH,DIRECT
MATCH 表示兜底规则。
当前面的规则都没有匹配成功时,就会使用 MATCH。
这里的意思是:所有没有被前面规则匹配到的流量,都走 DIRECT。
MATCH 一般放在规则列表的最后一行。
规则匹配顺序
Clash 的规则是从上到下匹配的。
例如:
rules:
- DOMAIN-SUFFIX,google.com,DIRECT
- MATCH,DIRECT
当访问 www.google.com 时,会先匹配到第一条规则:
- DOMAIN-SUFFIX,google.com,DIRECT
所以它会直接走 DIRECT,不会再继续匹配 MATCH。
因此,越具体、越重要的规则,通常越应该放在前面。
兜底规则 MATCH 则应该放在最后。
常见规则类型对比
| 规则类型 | 作用 |
|---|---|
DOMAIN |
精确匹配某个域名 |
DOMAIN-SUFFIX |
匹配某个域名后缀 |
DOMAIN-KEYWORD |
匹配域名中的关键词 |
GEOIP |
根据目标 IP 所属地区匹配 |
MATCH |
兜底匹配所有剩余流量 |
常见策略含义
| 策略 | 含义 |
|---|---|
DIRECT |
直连,不走代理 |
REJECT |
拒绝访问 |
| 代理组名称 | 走指定代理或代理组 |
例如:
- DOMAIN-SUFFIX,google.com,PROXY
表示访问 google.com 及其子域名时,走名为 PROXY 的代理组。
而:
- DOMAIN-SUFFIX,google.com,DIRECT
表示访问 google.com 及其子域名时,直接连接,不走代理。
一个简单的理解方式
DOMAIN:只匹配一个完整域名
DOMAIN-SUFFIX:匹配一个域名及其子域名
DOMAIN-KEYWORD:只要域名里包含关键词就匹配
GEOIP:根据 IP 所属地区匹配
MATCH:前面都没匹配上时使用
在实际配置中,通常会把更精确的规则放在前面,把范围更大的规则放在后面,最后再用 MATCH 做兜底。
Top comments (0)