月下博客

深入理解Clash配置文件

Clash是一个跨平台、支持SS/V2ray/Trojan协议、基于规则的网络代理软件,功能强大、界面美观、支持订阅,尤其适合机场和付费服务使用。Clash功能全加颜值好看,使得Clash深受喜爱,有一大批死忠粉。

本站之前已经简单介绍过Clash的基本配置和使用方法,参考:

V2ray:

trojan:

Just My Socks:

上述配置教程应付基本使用已经足够,但是如果你想进行更多个性化配置,那么需要对Clash配置文件有更深入的理解,才能更好的玩转Clash。

本文带你深入理解Clash配置文件,揭开Clash功能强大的面纱。

Clash特点

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

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

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

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. 支持注释,#号后面的内容是注释,会被忽略

更多YAML的介绍请参考:YAML,另一种标记语言?不止是标记语言!

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

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

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

Clash配置文件详解

下面以SS、V2ray、trojan的模板配置文件 https://v2raytech.com/clash_template2.yaml 为例,详细讲解Clash配置文件。

1. 首先下载 https://v2raytech.com/clash_template2.yaml 文件,用记事本、VS Code、Notepad++等打开;

2. 从第一行到第75行(proxies那一行)定义了一些Clash客户端运行时的设置,这些设置基本上都能在客户端界面里直接更改,不必通过配置文件修改:

Clash基础配置

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

Clash配置代理节点信息

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

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

4. 拖动配置文件继续往下,proxy-groups定义代理组,这一项同样非常重要:

Clash配置节点代理组策略

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

接着配置文件定义了其他五个代理组,分别是PROXY、Final、Apple、GlobalMedia和HKMTMedia。对于不看流媒体视频的人来说,只有前两个代理组有用,剩下三个代理组对于看国外视频且有IP限制的网友才有用(当然同上一步提到的代理节点一样,不想用的话不能简单删除,还需要继续修改配置文件中其他用到的地方):

Clash配置其他代理组

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

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

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

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

Clash配置代理规则

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

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

  1. 应用对象,包括完整域名(DOMAIN)、域名后缀(DOMAIN-SUFFIX)、域名关键字(DOMAIN-KEYWORD)、IP地址/段(IP-CIDR)以及GEOIP;
  2. 作用的IP或者域名;
  3. 采取的规则,包括直连(DIRECT)、屏蔽(REJECT),走某个代理组(上一步定义的PROXY、Apple等代理组)

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

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

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

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

Clash绕过列表

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

总结

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