本文介绍下 Clash 的规则以及如何配置规则。
前几天有朋友留言,觉得某个机场的规则很好,但很可惜它又跑路了(是的,说的就是 Duangcloud)。刚好今天说下自己要怎么写规则。
Clash 的规则是一套用于流量分流的配置规则,通过这些规则,Clash 能够对网络请求进行分类,并根据规则决定如何处理这些请求。简单说,这些规则决定了哪些网站或IP是使用代理访问,哪些是直接访问。例如,你开着代理软件的时候,访问bilibili就希望是直接访问,不要经过代理,不然你的流量一下就跑没了。
于是,通过规则,你就可以实现:
每条规则包含三部分:
规则类型, 匹配目标, 路由策略
DIRECT
、PROXY
或 REJECT
)。看明白了吧,规则类型和匹配目标就是条件,当你要访问的某个域名符合你制定的条件,那么就按照你给它规定的路由策略来决定流量走不走代理。
www.google.com
)、IP 地址(如 8.8.8.8
)、关键字(如 ads
)或地理区域(如 CN
表示中国)。不过一般机场的路由策略会采用一些自定义的分组,下面会说。
Clash 从规则列表的顶部开始逐行匹配,直到找到第一个满足条件的规则为止。因此:
MATCH
(兜底规则)放在底部,确保所有流量都有处理。例如:
rules:- DOMAIN-SUFFIX, google.com, PROXY # 访问 *.google.com 走代理- GEOIP, CN, DIRECT # 所有中国流量直连- MATCH, PROXY # 其余流量走代理
这几条规则的意思是:
www.google.com
,匹配第一条规则,走代理。MATCH
规则,走代理。DOMAIN-SUFFIX
的类型,会匹配所有域名后缀是 google.com
的网络请求。例如 play.google.com, ads.google.com, www.google.com
等都会匹配上。但是 google.co.uk
就不会匹配上。rules:
- DOMAIN-SUFFIX, adservice.google.com, REJECT
- DOMAIN-KEYWORD, ads, REJECT
rules:
- GEOIP, CN, DIRECT
- MATCH, PROXY
rules:
- DOMAIN-SUFFIX, netflix.com, PROXY
- DOMAIN-SUFFIX, youtube.com, PROXY
- GEOIP, CN, DIRECT
- MATCH, PROXY
rules:
- IP-CIDR, 192.168.1.0/24, DIRECT
拿前面提到的机场的配置文件来看一下:
rules:- 'DOMAIN,api.duangss.cloud,DIRECT'- 'DOMAIN-SUFFIX,acl4ssr,🎯 全球直连'- 'DOMAIN-SUFFIX,localhost,🎯 全球直连'- 'IP-CIDR,10.0.0.0/8,🎯 全球直连,no-resolve'- 'IP-CIDR,100.64.0.0/10,🎯 全球直连,no-resolve'- 'DOMAIN,router.asus.com,🎯 全球直连'- 'DOMAIN-SUFFIX,hiwifi.com,🎯 全球直连'- 'DOMAIN-KEYWORD,adservice,🛑 全球拦截'- 'DOMAIN-KEYWORD,adsh,🛑 全球拦截'- 'DOMAIN-KEYWORD,adsmogo,🛑 全球拦截'- 'DOMAIN-SUFFIX,a.youdao.com,🍃 应用净化'- 'DOMAIN-SUFFIX,adgeo.corp.163.com,🍃 应用净化'- 'DOMAIN-SUFFIX,analytics.126.net,🍃 应用净化'- 'DOMAIN-KEYWORD,1drv,Ⓜ️ 微软服务'- 'DOMAIN-KEYWORD,microsoft,Ⓜ️ 微软服务'- 'DOMAIN,apple.comscoreresearch.com,🍎 苹果服务'- 'DOMAIN-SUFFIX,aaplimg.com,🍎 苹果服务'- 'DOMAIN-SUFFIX,edgedatg.com,🌍 国外媒体'- 'DOMAIN-SUFFIX,go.com,🌍 国外媒体'- 'DOMAIN-KEYWORD,abematv.akamaized.net,🌍 国外媒体'- 'DOMAIN-SUFFIX,1password.com,🚀 节点选择'- 'GEOIP,CN,🎯 全球直连'- 'MATCH,🐟 漏网之鱼'
结合上面的内容,这时候你就能明白这些是什么意思了。但是呢,你会发现为什么他后面路由策略的地方写的是 🎯 全球直连、 🌍 国外媒体
这样的,而不是 DIRECT、PROXY
。这是因为这里用到了 proxy-groups
的功能。在 Clash 的配置中,proxy-groups
是用于管理代理节点选择的部分,它定义了一个或多个代理组,每个组包含一系列代理节点,用户可以通过这些代理组轻松切换节点或设置自动选择策略。你可以根据自己的需求,把节点分组为手动选择、自动选择、特定用途(如流媒体、聊天工具)等类型。从上图可以看出,分组的格式一般是这样的:
- { name: '🚀 节点选择', type: select, proxies: [...] }
name
: 组的名称,比如 🚀 节点选择
。这是用户在客户端界面上看到的名称。type
: 组的类型,有以下几种:select
: 手动选择。用户可以在客户端中手动选择具体节点。url-test
: 自动测试所有节点的延迟,并选择最快的节点。fallback
: 备用机制。主要节点不可用时切换到可用的节点。load-balance
: 负载均衡,在多个节点间分配流量。proxies
: 该组内包含的具体代理节点的列表。Clash 的规则配置乍一看好像挺复杂,密密麻麻一堆字。但你掌握了基础的语法和逻辑之后,还是很容易理解的。一般情况下,也不需要配置这些规则,因为机场都给你配置好了。默认就开规则模式,如果遇到访问不了的站,再开全局。但总有用得上的时候,谁知道你买的机场写的规则全不全面呢?
延伸阅读1:知道了基础语法,看下 Clash Verge Rev 里在哪里设置规则。
延伸阅读2:感兴趣的可以看看 Mihomo 官方的规则文档。