DEV Community

amoorzheyu
amoorzheyu

Posted on

Clash 规则配置解析:DOMAIN、GEOIP、MATCH 是什么意思?

在 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
Enter fullscreen mode Exit fullscreen mode

Clash 会按照规则从上到下依次匹配。

只要某一条规则匹配成功,就会使用这条规则,不再继续往下匹配。

DOMAIN-SUFFIX:匹配域名后缀

- DOMAIN-SUFFIX,google.com,DIRECT
Enter fullscreen mode Exit fullscreen mode

DOMAIN-SUFFIX 表示匹配某个域名后缀。

只要访问的域名以 google.com 结尾,就会走 DIRECT,也就是直连。

例如:

google.com
www.google.com
mail.google.com
Enter fullscreen mode Exit fullscreen mode

这些域名都会匹配这条规则。

这种规则适合用来匹配一个网站及其所有子域名。

DOMAIN-KEYWORD:匹配域名关键词

- DOMAIN-KEYWORD,google,DIRECT
Enter fullscreen mode Exit fullscreen mode

DOMAIN-KEYWORD 表示匹配域名中包含的关键词。

只要域名中出现 google,就会走 DIRECT

例如:

google.com
googleapis.com
googleusercontent.com
Enter fullscreen mode Exit fullscreen mode

这些域名都会被匹配。

需要注意的是,DOMAIN-KEYWORD 的匹配范围比较大,可能会匹配到一些并不想匹配的域名,所以使用时要谨慎。

DOMAIN:精确匹配域名

- DOMAIN,google.com,DIRECT
Enter fullscreen mode Exit fullscreen mode

DOMAIN 表示精确匹配某个域名。

只有访问的域名正好是:

google.com
Enter fullscreen mode Exit fullscreen mode

才会匹配这条规则。

例如:

www.google.com
mail.google.com
Enter fullscreen mode Exit fullscreen mode

这些子域名不会匹配 DOMAIN,google.com,DIRECT

如果只想针对某一个具体域名设置规则,可以使用 DOMAIN

REJECT:拒绝访问

- DOMAIN-SUFFIX,ad.com,REJECT
Enter fullscreen mode Exit fullscreen mode

REJECT 表示拒绝访问匹配到的域名。

这条规则的意思是:只要域名以 ad.com 结尾,就直接拦截。

例如:

ad.com
www.ad.com
track.ad.com
Enter fullscreen mode Exit fullscreen mode

这些域名都会被拒绝访问。

这种写法常用于屏蔽广告、统计、追踪类域名。

GEOIP:根据 IP 地区匹配

- GEOIP,CN,DIRECT
Enter fullscreen mode Exit fullscreen mode

GEOIP 表示根据目标 IP 所属地区进行匹配。

这里的 CN 指中国大陆。

也就是说,如果目标 IP 属于中国大陆,就走 DIRECT,也就是直连。

这类规则常用于让国内网站直连,减少不必要的代理转发。

MATCH:兜底规则

- MATCH,DIRECT
Enter fullscreen mode Exit fullscreen mode

MATCH 表示兜底规则。

当前面的规则都没有匹配成功时,就会使用 MATCH

这里的意思是:所有没有被前面规则匹配到的流量,都走 DIRECT

MATCH 一般放在规则列表的最后一行。

规则匹配顺序

Clash 的规则是从上到下匹配的。

例如:

rules:
  - DOMAIN-SUFFIX,google.com,DIRECT
  - MATCH,DIRECT
Enter fullscreen mode Exit fullscreen mode

当访问 www.google.com 时,会先匹配到第一条规则:

- DOMAIN-SUFFIX,google.com,DIRECT
Enter fullscreen mode Exit fullscreen mode

所以它会直接走 DIRECT,不会再继续匹配 MATCH

因此,越具体、越重要的规则,通常越应该放在前面。

兜底规则 MATCH 则应该放在最后。

常见规则类型对比

规则类型 作用
DOMAIN 精确匹配某个域名
DOMAIN-SUFFIX 匹配某个域名后缀
DOMAIN-KEYWORD 匹配域名中的关键词
GEOIP 根据目标 IP 所属地区匹配
MATCH 兜底匹配所有剩余流量

常见策略含义

策略 含义
DIRECT 直连,不走代理
REJECT 拒绝访问
代理组名称 走指定代理或代理组

例如:

- DOMAIN-SUFFIX,google.com,PROXY
Enter fullscreen mode Exit fullscreen mode

表示访问 google.com 及其子域名时,走名为 PROXY 的代理组。

而:

- DOMAIN-SUFFIX,google.com,DIRECT
Enter fullscreen mode Exit fullscreen mode

表示访问 google.com 及其子域名时,直接连接,不走代理。

一个简单的理解方式

DOMAIN:只匹配一个完整域名
DOMAIN-SUFFIX:匹配一个域名及其子域名
DOMAIN-KEYWORD:只要域名里包含关键词就匹配
GEOIP:根据 IP 所属地区匹配
MATCH:前面都没匹配上时使用
Enter fullscreen mode Exit fullscreen mode

在实际配置中,通常会把更精确的规则放在前面,把范围更大的规则放在后面,最后再用 MATCH 做兜底。

Top comments (0)