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使用YAML文件作为规则配置文件,首先简要介绍一下YAML。
YAML简介
YAML是”YAML Ain’t markup language”(YAML不是一种标记语言)的缩写,是一种方便读写的数据序列化语言。
YAML有如下特点/优点:
- 文件名以
.yaml
结尾; - 大小写敏感;
- 类似Python,以缩进指示层级关系;
- 不允许使用Tab键,缩进只能用空格;
- 支持数字、字符串、List、Map等数据类型;
- 支持注释,#号后面的内容是注释,会被忽略
SS/SSR/V2ray/trojan等配置文件使用json格式,相对于YAML,json最大不足是不支持注释。
因为YAML支持注释,因此YAML配置文件可以加入字段的详细解释,方便人们理解。本站教程使用的配置文件也都有详细注释。
接下来介绍本站用到的Clash配置文件。
Clash配置文件详解
下面以SS、V2ray、trojan的模板配置文件 https://www.hijk.pw/clash_template.yaml 为例,详细讲解Clash配置文件。
1. 首先下载 https://www.hijk.pw/clash_template.yaml 文件,用记事本、VS Code、Notepad++等打开;
2. 从第一行到第75行(proxies那一行)定义了一些Clash客户端运行时的设置,这些设置基本上都能在客户端界面里直接更改,不必通过配置文件修改:
3. 接下来proxies定义了代理节点配置信息,这一项非常重要。Clash支持SS、V2ray和trojan协议,本站的配置模板分别给出了这些类型的代理模板:
代理节点的主要操作和方法为:
- 如果只有单个代理节点,找到对应类型修改成你服务端的信息就行了
- 如果想删除多余的节点,把
-name
开头的整个节点配置删除,然后继续参考第4步的操作; - 如果想修改节点名称,比如把”ss”改成“香港-ss节点”,改name后面的值,然后继续参考第4步操作;
- 如果想增加节点,根据节点类型(ss/vmess/trojan)复制节点模板,粘贴到节点列表下面,修改name和server等配置信息的值,然后继续参考第4步操作。
需要注意的是,V2ray节点的type是vmess,不是v2ray!
4. 拖动配置文件继续往下,proxy-groups定义代理组,这一项同样非常重要:
模板中的第一个代理组类型是url-test,表示通过测试url的响应时间来确定最快的代理节点。这个代理组中的proxies
字段下面列出了代理节点的名称,表示参与测试的节点。所以,如果上一步修改了节点名称、增加或者删除了节点,请在这里更新节点信息。
接着配置文件定义了其他五个代理组,分别是PROXY、Final、Apple、GlobalMedia和HKMTMedia。对于不看流媒体视频的人来说,只有前两个代理组有用,剩下三个代理组对于看国外视频且有IP限制的网友才有用(当然同上一步提到的代理节点一样,不想用的话不能简单删除,还需要继续修改配置文件中其他用到的地方):
可以看到,PROXY组中的proxies用到了上一步定义的代理节点名称。所以,如果上一步修改了节点的名字、增加或者删除了节点,记得在这里更新节点名称。
聪明的你,看到这里应该明白了:Clash配置文件中name后面的值可以改成自己的,比如把name:"Apple"
改成 name: "苹果"
。但不能简单的修改,而是要把所有用到这个名字的地方也都改成新的名字,否则导入到客户端后就会出错。这也是为什么之前的教程让你看不懂不要乱改name的原因。现在你懂了,那就可以尝试修改(记得先备份原来的配置文件)。
同代理节点一样,根据不同的需求,可以定义许多个代理组。客户端的代理界面就是根据代理节点和代理组的配置生成的。
5. 继续拖动配置文件,进入到规则配置界面(Rule)。我们常说Clash是一个基于规则的代理软件,这一步便是定义Clash使用的规则:
一个代理规则主要由三部分组成:
- 应用对象,包括完整域名(DOMAIN)、域名后缀(DOMAIN-SUFFIX)、域名关键字(DOMAIN-KEYWORD)、IP地址/段(IP-CIDR)以及GEOIP;
- 作用的IP或者域名;
- 采取的规则,包括直连(DIRECT)、屏蔽(REJECT),走某个代理组(上一步定义的PROXY、Apple等代理组)
配置文件中给出了许多域名和IP的代理规则,如果你想删除和修改某个域名/IP走代理还是直连,请在这些规则里修改。
规则最后一行是MATCH,Final
,表示如果客户端运行在基于规则模式,如果匹配到上面的规则,就按照规则定义的路由走,否则走Final这个规则组。
同上文所述,代理组的name可以修改,但是要把规则中出现的名称也一起改了,否则软件无法运行
6. 最后是Clash for Windows需要绕过的IP和域名设置,一般无需更改:
到此一个完成的Clash配置文件结束,通过上面的说明,你应该对Clash配置文件不再感到神奇和害怕了吧?
总结
本文介绍了Clash和其他代理客户端的区别,并给出了配置文件的完整说明。通过对Clash配置文件的理解,能让你更好的使用这个功能强大的代理软件。
文章最后修改日期:2020年6月20日
你好,有事请教,盼回复
freevpn.gg网站上的tcp/udp协议可以转化成clash.yaml节点文件吗
因为用vpn不到半小时就墙了
这,应该不能吧 服务端采用vpn协议 你还能换?
你好 我只保留了vmess 配置,将其他的 Shadowsocks 配置删除了, 其他地方没有动, 放到本地配置文件夹内, 在Clash 无法选择这个配置 请问该怎么办?