本文带你深入理解 Clash 配置文件,揭开 Clash 功能强大的面纱。 参考官方文档:doc

三个板块

**proxies:节点信息

proxy-groups:策略组

rules:规则 **

proxy-groups 中的 type

type 代表这个组的类型,有下面四种情况

  • select 手动选择,该组在节点列表上,手动选择列表或者 proxy-group
  • url-test 延迟最低节点,测试该组所有节点的延迟
  • fallback 回落,连接该组第一个节点,不可用时切换到下一个节点
  • load-balance 负载均衡,由该组 2 个以上的节点提供链接

proxy-groups 和 rules 实现分流

两个配合相当于一层过滤,你的网站都走这个,然后根据规则分流 比如说 rules 里面有一条

1 - DOMAIN-KEYWORD,pingfore,🛑 全球拦截

Copy

proxy-groups 里有一条:

1 2 3 4 5 - name: 🛑 全球拦截 type: select proxies: - REJECT - DIRECT

Copy

这个意思就是,当你全球拦截中选择 REJECT 时,每当你访问包含 pingfore 这个关键字的域名时。就会走 REJECT,也就是无法访问

Clash 配置代理规则

新版 clash 中,Rule 指令已经被弃用,使用 rules 代替

一个代理规则主要由三部分组成:

应用对象,包括完整域名 (DOMAIN)、域名后缀 (DOMAIN-SUFFIX)、域名关键字 (DOMAIN-KEYWORD)、IP 地址 / 段 (IP-CIDR) 以及 GEOIP;

- DOMAIN-SUFFIX:域名后缀匹配 - DOMAIN:域名匹配 - DOMAIN-KEYWORD:域名关键字匹配 - IP-CIDR:IP 段匹配 - SRC-IP-CIDR:源 IP 段匹配 - GEOIP:GEOIP 数据库(国家代码)匹配 - DST-PORT:目标端口匹配 - SRC-PORT:源端口匹配 - PROCESS-NAME:源进程名匹配 - RULE-SET:Rule Provider 规则匹配 - MATCH:全匹配,一般放在最后,除了上述规则外全走 MATCH

配置文件中给出了许多域名和 IP 的代理规则,如果你想删除和修改某个域名 / IP 走代理还是直连,请在这些规则里修改。

规则最后一行是 “MATCH, 漏网之鱼”,表示如果客户端运行在基于规则模式,如果匹配到上面的规则,就按照规则定义的路由走,否则走漏网之鱼这个规则组。

同上文所述,代理组的 name 可以修改,但是要把规则中出现的名称也一起改了,否则软件无法运行

Clash 配置文件中添加多个机场订阅

provider 代码

1 2 3 4 5 6 7 8 9 10 11 proxy-providers: free1: type: http url: "https://gitlab.com/free9999/ipupdate/-/raw/master/clash/config.yaml" interval: 86400 path: ./free1.yaml health-check: enable: true interval: 600 url: http://www.gstatic.com/generate_204

Copy

添加订阅到 groups,provider 需要用 use, 节点用 proxies

1 2 use: - free1

Copy

很久以前的内容


Clash 特点

开始之前,先介绍一下 Clash 和其他代理软件的差别。

Clash 和其他 SS/SSR/V2ray/trojan 等客户端的第一个不同点是:不能在界面上配置代理节点信息,只能通过编辑配置文件或者 URL 导入。对于机场用户,导入订阅 URL 就好了,然而对于只有原始信息的自建用户或普通用户,要么变成链接形式通过第三方 API 转换成 URL 导入,要么只能编辑配置添加节点。这种半手工编辑和半 GUI 的操作,不少人也觉得 Clash 有点蛋疼。

Clash 和其他客户端另外一点重要差别是:代理 (proxies) 信息是根据配置文件生成的,不同的写法就有不同的界面。虽然用的同一个软件,如果别人的界面和你的不一样,请不要惊讶。

img

上图 clash 代理界面

Clash 的一个重要特点是:Clash 配置文件只要按照指定语法写就可以了,可以自由发挥,不需要遵守什么特定格式。默认安装的官方配置文件非常简单,实际中使用的配置文件比官方带的复杂多了,功能也强大许多。

幸运的是,不少大佬维护了 Clash 配置文件的模板,一般情况下根据模板改改就能用。

下面提供一个神机模板:

接下来以本站教程中出现的模板配置文件为例,深入介绍 Clash 配置文件。

深入理解 Clash 配置文件

Clash 使用 YAML 文件作为规则配置文件,首先简要介绍一下 YAML。

YAML 简介

YAML 是”YAML Ain’t markup language”(YAML 不是一种标记语言)的缩写,是一种方便读写的数据序列化语言。

YAML 有如下特点 / 优点:

  1. 文件名以 .yaml 结尾;
  2. 大小写敏感;
  3. 类似 Python,以缩进指示层级关系;
  4. 不允许使用 Tab 键,缩进只能用空格;
  5. 支持数字、字符串、List、Map 等数据类型;
  6. 支持注释,# 号后面的内容是注释,会被忽略

SS/SSR/V2ray/trojan 等配置文件使用 json 格式,相对于 YAML,json 最大不足是不支持注释。

因为 YAML 支持注释,因此 YAML 配置文件可以加入字段的详细解释,方便人们理解。本站教程使用的配置文件也都有详细注释。

接下来介绍本站用到的 Clash 配置文件。

Clash 配置文件详解

下面以 SS、V2ray、trojan 的模板配置文件为例,详细讲解 Clash 配置文件。

  1. 首先下载 yaml 文件,用记事本、VS Code、Notepad++ 等打开;
  2. 从第一行到第 proxies (proxies 那一行) 定义了一些 Clash 客户端运行时的设置,这些设置基本上都能在客户端界面里直接更改,不必通过配置文件修改:

img

Clash 基础配置

  1. 接下来 proxies 定义了代理节点配置信息,这一项非常重要。Clash 支持 SS、V2ray 和 trojan 协议,本站的配置模板分别给出了这些类型的代理模板:

img

Vmess 格式如下

img

Clash 配置代理节点信息

代理节点的主要操作和方法为:

  • 如果只有单个代理节点,找到对应类型修改成你服务端的信息就行了
  • 如果想删除多余的节点,把 name 开头的整个节点配置删除,然后继续参考第 4 步的操作;
  • 如果想修改节点名称,比如把”ss” 改成 “香港 - ss 节点”,改 name 后面的值,然后继续参考第 4 步操作;
  • 如果想增加节点,根据节点类型 (ss/vmess/trojan) 复制节点模板,粘贴到节点列表下面,修改 name 和 server 等配置信息的值,然后继续参考第 4 步操作。

需要注意的是,V2ray 节点的 type 是 vmess,不是 v2ray!

  1. Clash 配置节点代理组策略

模板中的第二个代理组类型是 url-test,表示通过测试 url 的响应时间来确定最快的代理节点。这个代理组中的 proxies 字段下面列出了代理节点的名称,表示参与测试的节点。所以,如果上一步修改了节点名称、增加或者删除了节点,请在这里更新节点信息。

接着配置文件定义了其他代理组,分别是节点选择、国外媒体、国内媒体、电报苹果,拦截等等

img

Clash 配置其他代理组

可以看到,节点选择组中的 proxies 用到了上一步定义的代理节点名称。所以,如果上一步修改了节点的名字、增加或者删除了节点,记得在这里更新节点名称。

聪明的你,看到这里应该明白了:Clash 配置文件中 name 后面的值可以改成自己的,比如把 name:"节点选择" 改成 name: "choose"。但不能简单的修改,而是要把所有用到这个名字的地方也都改成新的名字,否则导入到客户端后就会出错。这也是为什么之前的教程让你看不懂不要乱改 name 的原因。现在你懂了,那就可以尝试修改 (记得先备份原来的配置文件)。

同代理节点一样,根据不同的需求,可以定义许多个代理组。客户端的代理界面就是根据代理节点和代理组的配置生成的。

  1. 继续拖动配置文件,进入到规则配置界面 (Rule)。我们常说 Clash 是一个基于规则的代理软件,这一步便是定义 Clash 使用的规则:

img

Clash 配置代理规则

新版 clash 中,Rule 指令已经被弃用,使用 rules 代替

一个代理规则主要由三部分组成:

  1. 应用对象,包括完整域名 (DOMAIN)、域名后缀 (DOMAIN-SUFFIX)、域名关键字 (DOMAIN-KEYWORD)、IP 地址 / 段 (IP-CIDR) 以及 GEOIP;
  • DOMAIN-SUFFIX:域名后缀匹配
  • DOMAIN:域名匹配
  • DOMAIN-KEYWORD:域名关键字匹配
  • IP-CIDR:IP 段匹配
  • SRC-IP-CIDR:源 IP 段匹配
  • GEOIP:GEOIP 数据库(国家代码)匹配
  • DST-PORT:目标端口匹配
  • SRC-PORT:源端口匹配
  • PROCESS-NAME:源进程名匹配
  • RULE-SET:Rule Provider 规则匹配
  • MATCH:全匹配
  1. 作用的 IP 或者域名;
  2. 采取的规则,包括直连 (DIRECT)、屏蔽 (REJECT),因为规则都写好了所以,这里是走某个代理组 (上一步定义的直连,拦截等代理组)

配置文件中给出了许多域名和 IP 的代理规则,如果你想删除和修改某个域名 / IP 走代理还是直连,请在这些规则里修改。

规则最后一行是 “MATCH, 漏网之鱼”,表示如果客户端运行在基于规则模式,如果匹配到上面的规则,就按照规则定义的路由走,否则走漏网之鱼这个规则组。

同上文所述,代理组的 name 可以修改,但是要把规则中出现的名称也一起改了,否则软件无法运行

  1. 最后是 Clash for Windows 需要绕过的 IP 和域名设置,一般无需更改:

到此一个完成的 Clash 配置文件结束,通过上面的说明,你应该对 Clash 配置文件不再感到神奇和害怕了吧?

总结

本文介绍了 Clash 和其他代理客户端的区别,并给出了配置文件的完整说明。通过对 Clash 配置文件的理解,能让你更好的使用这个功能强大的代理软件。