深入理解Clash配置文件

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

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

V2ray
Clash for Windows配置V2ray教程
ClashX mac配置V2ray教程
Clash for Android配置V2ray教程
trojan
Clash for Windows配置trojan教程
ClashX mac配置Trojan教程
Clash for Android配置trojan教程
Just My Socks
Clash for Windows配置Just My Socks教程
ClashX mac配置Just My Socks教程
Clash for Android配置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. 支持数字、字符串、ListMap等数据类型;
  6. 支持注释,#号后面的内容是注释,会被忽略

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

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

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

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

Clash配置文件详解

下面以SS、V2ray、trojan的模板配置文件http://www.xiaoglt.top/wp-content/uploads/2022/08/clash_template2.yaml为例,详细讲解Clash配置文件。

1. 首先下载http://www.xiaoglt.top/wp-content/uploads/2022/08/clash_template2.yaml文件,用记事本、VS Code、Notepad++等打开;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

总结

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