type
status
date
slug
summary
tags
category
icon
password
网址
一、概述
教学背景:Clash作为最常用的跨平台代理工具,相信是不少人的选择。然而无论是自建的节点还是机场的订阅链接,当我们要将其转换到代理工具中时,很多人对于其中的分流规则是茫然的。许多订阅转换网站或者机场自带的规则与我们想要的分流效果相去甚远,以至于对于想要访问的目标网站,我们无法随心所欲地控制它应该是选择直连还是代理。
教学对象:此篇教学面向中初级用户,大佬还请无视本人拙劣的知识水平。
教学内容:本文将从配置文件入手,逐一说明每一个板块的作用以及应该如何设置,如果涉及没讲到的配置,那就是我自己觉得没必要配置的,如有大佬补充,请不吝赐教。
适用软件:所有Clash系列软件,包括但不限于 Clash Meta、 Clash for Windows、 Clash Verge、 Clash Verge Rev、 clash meta for android等Clash客户端。
【温馨提示】 为方便阅读,配置文件和参数解析我都隐藏了,请按需展开。如果不想了解得特别详细的话,可以直接跳到实战演练。
二、Clash配置文件解析
2.1 简述配置文件
先贴出配置文件的简化版:
配置文件简化版
参数解析:
每个参数的作用
参数名称 | 作用 | 备注 |
mixed-port | HTTP(S) 和 SOCKS4(A)/SOCKS5 代理服务共用一个端口 | 一般不需要将HTTP代理端口和SOCKS5代理端口分开,所以此处不修改 |
allow-lan | 设置为 true 以允许局域网的连接(可用来共享代理) | 如没有局域网代理需求可关闭 |
bind-address | 仅当 allow-lan 为 true 时有效*': 绑定所有 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-CIDR和IP-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配置文件”。

在订阅转网网站的远程配置一栏,可以看到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 使用你自己的远程配置
进入订阅转换网站,以我自己的为例。

填写你的远程配置名称.ini的github地址,如:https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/config/ACL4SSR_Online_Full.ini 203
点击转换。
复制到浏览器窗口检查。

大功告成!完结撒花!
感谢你的点赞,你的每一个小心心都证明了我不是只会水贴
- 作者:PANZ
- 链接:https://tangly1024.com/article/clash
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。