深入理解Clash配置文件

V2ray节点|
1795

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

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

V2ray:

trojan:

  • Clash for Windows配置trojan教程

  • ClashX配置Trojan教程

  • Clash for Android配置trojan教程


    上述配置教程应付基本使用已经足够,但是如果你想进行更多个性化配置,那么需要对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配置文件

    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的模板配置文件为例,详细讲解Clash配置文件。

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

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

    Clash基础配置

    Clash基础配置

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

    Clash配置代理节点信息

    Clash配置代理节点信息

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

    • 如果只有单个代理节点,找到对应类型修改成你服务端的信息就行了

    • 如果想删除多余的节点,把 -name 开头的整个节点配置删除,然后继续参考第4步的操作;

    • 如果想修改节点名称,比如把”ss”改成“香港-ss节点”,改name后面的值,然后继续参考第4步操作;

    • 如果想增加节点,根据节点类型(ss/vmess/trojan)复制节点模板,粘贴到节点列表下面,修改name和server等配置信息的值,然后继续参考第4步操作。

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

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

    Clash配置节点代理组策略

    Clash配置节点代理组策略

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

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

    Clash配置其他代理组

    Clash配置其他代理组

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

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

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

    5. 继续拖动配置文件,进入到规则配置界面(Rule)。我们常说Clash是一个基于规则的代理软件,这一步便是定义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和其他代理客户端的区别,并给出了配置文件的完整说明。通过对Clash配置文件的理解,能让你更好的使用这个功能强大的代理软件。