Clash 的规则怎么写?

clash rules guide 科学上网

本文介绍下 Clash 的规则以及如何配置规则。

前几天有朋友留言,觉得某个机场的规则很好,但很可惜它又跑路了(是的,说的就是 Duangcloud)。刚好今天说下自己要怎么写规则。

Sponsored links
Sponsored links

Clash 规则是什么?

Clash 的规则是一套用于流量分流的配置规则,通过这些规则,Clash 能够对网络请求进行分类,并根据规则决定如何处理这些请求。简单说,这些规则决定了哪些网站或IP是使用代理访问,哪些是直接访问。例如,你开着代理软件的时候,访问bilibili就希望是直接访问,不要经过代理,不然你的流量一下就跑没了。

于是,通过规则,你就可以实现:

  • 流量分流:区分哪些流量走代理,哪些直连。
  • 广告屏蔽:通过特定规则屏蔽广告域名或 IP。
  • 优化流媒体和游戏:指定流媒体(如Netflix)、游戏(如Steam)走特定代理。

Clash 规则的基本结构

每条规则包含三部分:

规则类型, 匹配目标, 路由策略
  • 规则类型:指定如何匹配流量(如域名、IP、地理位置等)。
  • 匹配目标:定义要匹配的内容(如具体的域名、IP 地址等)。
  • 路由策略:决定匹配后的处理方式(如 DIRECTPROXYREJECT)。

看明白了吧,规则类型和匹配目标就是条件,当你要访问的某个域名符合你制定的条件,那么就按照你给它规定的路由策略来决定流量走不走代理。

常见的规则类型

规则类型说明示例
DOMAIN精确匹配某个域名。DOMAIN, www.google.com, PROXY
DOMAIN-SUFFIX匹配域名的后缀。DOMAIN-SUFFIX, google.com, PROXY
DOMAIN-KEYWORD匹配包含指定关键字的域名。DOMAIN-KEYWORD, google, PROXY
IP-CIDR匹配某个 IP 范围。IP-CIDR, 8.8.8.0/24, PROXY
GEOIP根据 IP 所属地理区域匹配。GEOIP, CN, DIRECT
MATCH匹配所有剩余流量,通常用于兜底规则。MATCH, PROXY

匹配目标

匹配目标可以是域名(如 www.google.com)、IP 地址(如 8.8.8.8)、关键字(如 ads)或地理区域(如 CN 表示中国)。

路由策略

  • DIRECT:直连,不使用代理。
  • PROXY:使用代理。
  • REJECT:拦截流量,丢弃请求。

不过一般机场的路由策略会采用一些自定义的分组,下面会说。

规则的匹配顺序

Clash 从规则列表的顶部开始逐行匹配,直到找到第一个满足条件的规则为止。因此:

  1. 高优先级规则放在顶部。
  2. 常见规则放在中间。
  3. MATCH(兜底规则)放在底部,确保所有流量都有处理。

例如:

rules:
  - DOMAIN-SUFFIX, google.com, PROXY   # 访问 *.google.com 走代理
  - GEOIP, CN, DIRECT                 # 所有中国流量直连
  - MATCH, PROXY                      # 其余流量走代理

这几条规则的意思是:

  1. 如果访问 www.google.com,匹配第一条规则,走代理。
  2. 如果访问中国大陆的 IP,匹配第二条规则,直连。
  3. 如果没有匹配到,默认使用最后的 MATCH 规则,走代理。

这里用的是 DOMAIN-SUFFIX 的类型,会匹配所有域名后缀是 google.com 的网络请求。例如 play.google.com, ads.google.com, www.google.com 等都会匹配上。但是 google.co.uk 就不会匹配上。

规则的实际应用场景举例

1. 屏蔽广告

rules:
- DOMAIN-SUFFIX, adservice.google.com, REJECT
- DOMAIN-KEYWORD, ads, REJECT

2. 分流国内外流量

rules:
- GEOIP, CN, DIRECT
- MATCH, PROXY

3. 优化流媒体访问

rules:
- DOMAIN-SUFFIX, netflix.com, PROXY
- DOMAIN-SUFFIX, youtube.com, PROXY
- GEOIP, CN, DIRECT
- MATCH, PROXY

4. 局域网直连

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 是用于管理代理节点选择的部分,它定义了一个或多个代理组,每个组包含一系列代理节点,用户可以通过这些代理组轻松切换节点或设置自动选择策略。你可以根据自己的需求,把节点分组为手动选择、自动选择、特定用途(如流媒体、聊天工具)等类型。

clash proxy groups

从上图可以看出,分组的格式一般是这样的:

- { name: '🚀 节点选择', type: select, proxies: [...] }
  • name: 组的名称,比如 🚀 节点选择。这是用户在客户端界面上看到的名称。
  • type: 组的类型,有以下几种:
    • select: 手动选择。用户可以在客户端中手动选择具体节点。
    • url-test: 自动测试所有节点的延迟,并选择最快的节点。
    • fallback: 备用机制。主要节点不可用时切换到可用的节点。
    • load-balance: 负载均衡,在多个节点间分配流量。
  • proxies: 该组内包含的具体代理节点的列表。

总结

Clash 的规则配置乍一看好像挺复杂,密密麻麻一堆字。但你掌握了基础的语法和逻辑之后,还是很容易理解的。一般情况下,也不需要配置这些规则,因为机场都给你配置好了。默认就开规则模式,如果遇到访问不了的站,再开全局。但总有用得上的时候,谁知道你买的机场写的规则全不全面呢?

延伸阅读:知道了基础语法,看下 Clash Verge Rev 里在哪里设置规则

Rate this post
订阅评论
提醒
guest
1 评论
内联反馈
查看所有评论
qinkun
qinkun
15 天 前

言简意赅

1
0
希望看到您的想法,请您发表评论x