XuLaLa.Tech

首页客户端下载Windows 使用V2Ray 教程SSR 教程Clash 教程

Clash(Mihomo) 的规则怎么写?

2025.03.27

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

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

  1. Clash 规则是什么?
  2. Clash 规则的基本结构
    1. 常见的规则类型
    2. 匹配目标
    3. 路由策略
    4. 规则的匹配顺序
  3. 规则的实际应用场景举例
  4. 机场的配置文件举例
  5. 总结

Clash 规则是什么?

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

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

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

Clash 规则的基本结构

每条规则包含三部分:

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

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

常见的规则类型

匹配目标

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

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

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

总结

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

延伸阅读1:知道了基础语法,看下 Clash Verge Rev 里在哪里设置规则。
延伸阅读2:感兴趣的可以看看 Mihomo 官方的规则文档。

© 2010-2022 XuLaLa 保留所有权利 本站由 WordPress 强力驱动
请求次数:69 次,加载用时:0.665 秒,内存占用:32.19 MB