Clash
【保姆级教学】掰碎了给你讲!Clash配置文件详解(含实战演练)
00 分钟
2024-10-18
2024-10-18
type
status
date
slug
summary
tags
category
icon
password
网址

一、概述

教学背景:Clash作为最常用的跨平台代理工具,相信是不少人的选择。然而无论是自建的节点还是机场的订阅链接,当我们要将其转换到代理工具中时,很多人对于其中的分流规则是茫然的。许多订阅转换网站或者机场自带的规则与我们想要的分流效果相去甚远,以至于对于想要访问的目标网站,我们无法随心所欲地控制它应该是选择直连还是代理。
教学对象:此篇教学面向中初级用户,大佬还请无视本人拙劣的知识水平。
教学内容:本文将从配置文件入手,逐一说明每一个板块的作用以及应该如何设置,如果涉及没讲到的配置,那就是我自己觉得没必要配置的,如有大佬补充,请不吝赐教。
适用软件:所有Clash系列软件,包括但不限于 Clash MetaClash for WindowsClash VergeClash Verge Revclash meta for android等Clash客户端。
【温馨提示】 为方便阅读,配置文件和参数解析我都隐藏了,请按需展开。如果不想了解得特别详细的话,可以直接跳到实战演练。

二、Clash配置文件解析

2.1 简述配置文件

先贴出配置文件的简化版:
配置文件简化版
参数解析:
每个参数的作用
参数名称
作用
备注
mixed-port
HTTP(S) 和 SOCKS4(A)/SOCKS5 代理服务共用一个端口
一般不需要将HTTP代理端口和SOCKS5代理端口分开,所以此处不修改
allow-lan
设置为 true 以允许局域网的连接(可用来共享代理)
如没有局域网代理需求可关闭
bind-address
仅当 allow-lantrue 时有效*': 绑定所有 IP 地址192.168.122.11: 绑定单个 IPv4 地址“[aaaa::a8aa:ff:fe09:57d8]”: 绑定单个 IPv6 地址
地址绑定,一般不需要修改
ipv6
当设置为 false 时, 解析器不会将主机名解析为 IPv6 地址
因为我开启此选项老是出现解析错误,故我个人是选择关闭的
mode
Clash 路由工作模式rule: 基于规则的数据包路由global: 所有数据包将被转发到单个节点direct: 直接将数据包转发到互联网
默认为规则模式,不需要更改
log-level
日志级别: info / warning / error / debug / silent
为了平时方便调试我会设置为info
external-controller
RESTful Web API 监听地址
连接第三方Clash GUI的地址和端口,一般不需要修改
secret
RESTful API 的口令(可选)
连接第三方Clash GUI的密码,不需要可不填
dns
DNS 服务设置
为防止DNS解析错误或DNS泄露,此部分需详细配置
proxies
代理节点
你的自建节点或者机场节点
proxy-groups
策略组
代理节点的分组
rules
分流规则
控制是否代理的规则
以上就是每个参数的大致设置和作用,可以看出,要想配置好分流规则,我们重点应该关注“dns”、“proxy-groups(策略组)”、“rules(分流规则)”三个板块。下面我们再详述这三个参数。

2.2 DNS配置

DNS配置在站内也是老生常谈的内容了,相信也有不少佬友给出了自己的见解,我在这里就不对DNS泄漏以及其它原理做出过多论述了,大致讲一下我的配置逻辑即可。
先贴出DNS配置完整版文件:
DNS配置完整版文件
参数解析:
每个参数的作用
参数名称
作用
备注
enable
是否启动自定义dns模块
若为false,则使用系统 DNS 解析,我们需要自己配置DNS解析,因此选true
prefer-h3
是否优先使用 DOH 的 http/3
一种加密的基于 QUIC 协议实现的DNS 协议,据说查询速度很快,所以我打开了
use-hosts
是否查询配置中的 hosts,默认 true
虽然我没有配置hosts,但是一般还是开启的
use-system-hosts
是否查询系统 hosts,默认 true
同上
respect-rules
dns 连接跟随 rules,需配置proxy-server-nameserver
一般不需要,我个人选择关闭
listen
DNS 服务监听,仅支持 udp
保持默认就行
ipv6
是否解析 IPV6, 如为 false, 则回应 AAAA 的空解析
因为我开启此选项老是出现解析错误,故我个人是选择关闭的
enhanced-mode
DNS 处理模式可选值 normal/fake-ip/redir-host,默认normal
不深入讲解,这里我选择fake-ip
fake-ip-range
fakeip 下的 IP 段设置,tun的默认 IPV4 地址
保持默认即可
fake-ip-filter
fakeip 过滤,以下地址不会下发 fakeip 映射用于连接
fake ip白名单列表,保持默认即可
default-nameserver
默认 DNS, 用于解析nameserver中的加密 dns
此处必须为 IP, 可为加密 DNS,我设置为国内明文DNS
nameserver-policy
指定域名查询的解析服务器,可使用 geosite, 优先于 nameserver/fallback 查询
保持默认就行
nameserver
默认的域名解析服务器,如不配置 fallback/proxy-server-nameserver , 则所有域名都由 nameserver 解析
我设置为国内加密dns
proxy-server-nameserver
代理节点域名解析服务器,仅用于解析代理节点的域名
我设置为国内加密dns
fallback
后备域名解析服务器,一般情况下使用境外 DNS, 保证结果可信配置 fallback后默认启用 fallback-filter,geoip-code为 cn
解析墙外域名的,因此不能使用国内DNS,我设置为国外加密 dns
fallback-filter
后备域名解析服务器筛选,满足条件的将使用 fallback结果或只使用 fallback解析
geoip
是否启用 fallback filter
默认开启就行
geoip-code
可选值为 国家缩写,默认值为 CN除了 geoip-code 配置的国家 IP, 其他的 IP 结果会被视为污染geoip-code 配置的国家的结果会直接采用,否则将采用 fallback结果
默认CN就行
geosite
可选值为对于的 geosite 内包含的集合geosite 列表的内容被视为已污染,匹配到 geosite 的域名,将只使用 fallback解析,不去使用 nameserver
保持默认就行
ipcidr
书写内容为 IP/掩码这些网段的结果会被视为污染,nameserver解析出这些结果时将会采用 fallback的解析结果
保持默认就行
domain
这些域名被视为已污染,匹配到这些域名,会直接使用 fallback解析,不去使用 nameserver
保持默认就行
以上就是我针对DNS的全部设置,因本人对于DNS的运行逻辑只是一知半解,如果有佬友有更好的配置,后续会不断优化此短篇幅。

2.3 策略组

策略组是我们选择哪个网站选用什么方式连接的前置条件,简而言之就是给你的节点如何分流进行分组。
举一个最简单的策略组配置文件:
最简单的策略组配置文件
每个参数的作用
参数名称
作用
备注
name
策略组的名字
用于区分策略组
type
策略组的类型分为select、url-test、fallback、load-balance、relay。
select:手动选择url-test:自动选择fallback:当前选择节点超时,则会按顺序切换到下一个可以节点load-balance:负载均衡relay:链式代理
proxies
引入代理节点或其他策略组
选择分流策略
url
健康检查测试地址
保持默认即可
interval
健康检查间隔,如不为 0 则启用定时测试,单位为秒
保持默认即可
lazy
懒惰状态,默认为true,未选择到当前策略组时,不进行测试
保持默认即可
timeout
健康检查超时时间,单位为毫秒
保持默认即可
max-failed-times
最大失败次数,超过则触发一次强制健康检查,默认 5
保持默认即可
tolerance
节点切换容差,单位 ms
保持默认即可
以上就是针对策略组的简单介绍,高级玩家可自行定制属于自己的策略组,中初级玩家可直接套用大佬们的策略组方案。

2.4 分流规则

此项参数最终决定了哪个网站选用什么方式连接,通过不同的匹配策略自由地选择自己的分流规则。
我们直接来看官方文档给出的示例:
官方文档
以上规则匹配的优先级按照从上到下的顺序匹配,列表顶部的规则优先级高于其底下的规则。
每个参数的作用
匹配方式
匹配内容
举例
DOMAIN
匹配完整域名
DOMAIN-SUFFIX
匹配域名后缀
DOMAIN-KEYWORD
使用域名关键字匹配
google
DOMAIN-REGEX
域名正则表达式匹配
^abc.*com
GEOSITE
匹配 Geosite 内的域名
youtube
IP-CIDR/IP-CIDR6
匹配 IP 地址范围IP-CIDRIP-CIDR6效果是一样的,IP-CIDR6只是一个别名
127.0.0.0/82620:0:2d0:200::7/32
IP-SUFFIX
匹配 IP 后缀范围
8.8.8.8/24
IP-ASN
匹配 IP 所属 ASN
13335
GEOIP
匹配 IP 所属国家代码
CN
SRC-GEOIP
匹配来源 IP 所属国家代码
cn
SRC-IP-ASN
匹配来源 IP 所属 ASN
9808
SRC-IP-CIDR
匹配来源 IP 地址范围
192.168.1.201/32
SRC-IP-SUFFIX
匹配来源 IP 后缀范围
192.168.1.201/8
DST-PORT
匹配请求目标端口范围
80
SRC-PORT
匹配请求来源端口范围
7777
IN-PORT
匹配入站端口,可用端口范围
7890
IN-TYPE
匹配入站类型
SOCKS/HTTP
IN-USER
匹配入站用户名,支持使用 / 分隔多个用户名
linuxdo
IN-NAME
匹配入站名称
ss
PROCESS-PATH
使用完整进程路径匹配
D:\chrome.exe
PROCESS-PATH-REGEX
使用进程路径正则表达式匹配
*bin/wget
PROCESS-NAME
使用进程匹配,在Android平台可以匹配包名
chrome.exe
PROCESS-NAME-REGEX
使用进程名称正则表达式匹配,在Android平台可以匹配包名
curl$
UID
匹配 Linux USER ID
1001
NETWORK
匹配tcp或者udp
udp
DSCP
匹配DSCP标记 (仅限 tproxy udp 入站)
4
RULE-SET
引用规则集合,需配置rule-providers
providername
AND/OR/NOT
逻辑规则,需要注意括号的使用
((DOMAIN,baidu.com),(NETWORK,UDP))
SUB-RULE
匹配至子规则,需要注意括号的使用
(NETWORK,tcp)
MATCH
匹配所有请求,无需条件
备注:【no-resolve】 用于跳过目标IP的DNS解析
可以看出,分流配置是先进行匹配,再选择分流的规则(直连、拒绝还是代理)。中初级用户可能看着规则很多,觉得有点头晕目眩,其实我们用到的类型很少,并且不少大佬都已经为我们做好了现成的规则集。比如ACL4SSR佬为我们整理的本地/局域网地址合集 100。【附一个ACL4SSR大佬的规则集 119Github地址。】
那么我们该如何应用这些合集地址,生成我们自己想要的配置文件呢,别着急我们慢慢讲。

三、远程配置文件解析

要想把节点转换成Clash能用的配置文件,订阅转换网站可以大幅降低中初级玩家的工作量,其大致的逻辑就是让“节点”以“远程配置文件”的规则形成“clash配置文件”。
notion image
在订阅转网网站的远程配置一栏,可以看到ACL4SSR佬很贴心地为我们给出了不同的配置文件供我们选择,我们还是抽取一个文件举例说明。
我们以最齐全的ACL4SSR_Online_Full.ini 203为例,解析有哪些内容。
ACL4SSR_Online_Full.ini
每个参数的作用
参数名称
参数内容
备注
ruleset
规则集
设置对应的策略组里应该如何分流
custom_proxy_group
策略组
为不同的场景设置分组
enable_rule_generator
启用规则生成器
默认开启就行
overwrite_original_rules
覆盖原有规则
默认开启就行
clash_rule_base
clash基础配置
clash文件的配置,也就是我们上一章节讲的内容
ruleset我们按需选择自己需要的规则集,custom_proxy_group也是按需设置我们需要的策略组即可。
clash_rule_base的链接我们需要填写我们自己的clash配置文件地址。
远程配置文件相比Clash配置文件是不是要简单多啦,下面我们开始实战演练。

四、实战演练

4.1 上传配置

4.1.1 将clash基础配置上传到github

此前我们以及完成了clash配置文件的设置,这里贴一个完整版:
base.yml
将其上传至github,存为base.yml

4.2.2 将远程配置上传到github

下面贴一个简单的远程配置文件作为示例:
远程配置.ini
同样将其上传至github,存为你的远程配置名称.ini

4.3.3 使用你自己的远程配置

进入订阅转换网站,以我自己的为例。
notion image
点击转换
复制到浏览器窗口检查。
notion image
大功告成!完结撒花!
感谢你的点赞,你的每一个小心心都证明了我不是只会水贴
上一篇
纯V6小鸡访问github的办法【DNS64-NAT64】IPV6 DNS
下一篇
Docker 数据管理:备份和恢复指南