MANUAL · ZERO TO PRO

Clash 从零到精通完整手册

九章线性推进:从核心概念到客户端选择与安装,再到订阅导入、代理模式、规则分流TUN 模式,最后是日常维护与进阶路线。每章可独立查阅,也可从头顺序读完。

章节 9 · 内核 mihomo (Clash Meta) · 覆盖 Windows / macOS / Linux / Android / iOS
本页与入门指南的分工:如果目标是十分钟内连上网络,先看 入门指南,那边只保留"跟着做就能完成"的主线步骤;本手册是系统查阅版,按知识阶梯完整展开每个环节的原理、参数与差异,遇到指南里没讲透的地方,回到这里按章节目录定位。

01核心概念:内核、客户端与配置文件

内核与客户端是两层东西

Clash 生态由两层组成。底层是内核:一个命令行程序,负责监听本机端口、接收应用流量、按规则匹配后转发到对应的代理服务器或直连出口。当前生态的主流内核是 mihomo(即 Clash Meta 分支),它在原版 Clash 内核归档后继续维护,扩展了出站协议、规则集与 TUN 栈,详见博客《mihomo 内核与原版 Clash 有什么区别》

上层是图形客户端:Clash Plus、Clash Verge Rev、FlClash 这些名字各异的应用,本质都是内核的"驾驶舱"——负责导入订阅、切换节点、开关系统代理与 TUN、展示日志与连接。理解这一点后很多疑问会自动消解:不同客户端的功能差异主要在界面与封装,分流能力取决于内核;换客户端不需要换订阅,配置文件对任何内核兼容的客户端都通用。

配置文件的三大块

内核的全部行为由一份 YAML 配置文件(通常叫 config.yaml,客户端里称 Profile)决定。无论文件多长,骨架都是三块:

  1. 入站与全局参数:监听端口、局域网访问开关、运行模式、日志级别、DNS 设置。
  2. proxies 与 proxy-groups:节点列表(每个节点是一台代理服务器的地址、端口、协议与凭据)和代理组(把节点按策略编组,供规则引用)。
  3. rules:分流规则列表,决定每条连接走哪个代理组。

这三块的边界值得记牢:出问题时先判断症状落在哪一块,排查范围立刻缩小三分之二。端口冲突、局域网设备连不上属于第一块;节点全部超时、测速转圈属于第二块;某个网站走错出口、该直连的却绕了一圈属于第三块。后面第八章的故障对照表就是按这个思路组织的。

一份最小可读的全局参数段长这样:

mixed-port: 7890        # HTTP 与 SOCKS5 合一的混合入站端口
allow-lan: false        # 是否允许局域网设备接入
mode: rule              # rule / global / direct 三种运行模式
log-level: info         # silent / error / warning / info / debug
external-controller: 127.0.0.1:9090   # 本机 API 控制端口

其中 mixed-port 是最常被问到的字段:它同时接受 HTTP 与 SOCKS5 两种协议的连接,所以浏览器、命令行工具、下载器填同一个端口都能用,不必像早年那样分别配置 portsocks-portallow-lan 打开后,同一局域网的手机、电视盒子把代理指向这台机器的内网地址即可共享分流,但也意味着任何能访问该网段的设备都能借用你的代理,在公共网络下不要开启。external-controller 默认只监听 127.0.0.1,把它改成 0.0.0.0 会把控制接口暴露到局域网,必须同时设置 secret 口令。

高频名词速查

名词含义
节点(Proxy)一台代理服务器的连接信息:地址、端口、协议、加密与凭据。
代理组(Proxy Group)按策略组织的节点集合,如手动选择、自动测速、故障转移。
订阅(Subscription)机场提供的 URL,访问后返回一份完整配置文件,节点变动时重新拉取即可同步。
Profile客户端里对"一份配置文件"的称呼,可同时保存多份并随时切换。
延迟测试客户端向测试地址发起请求测量往返耗时,反映链路可用性而非带宽。
规则集(Rule Set)把大量同类规则打包成外部文件,配置里一行引用,支持定期更新。
GEO 数据GeoIP / GeoSite 数据库,提供"按国家 IP 段""按站点分类域名"的批量匹配能力。

02选客户端:平台矩阵与取舍

先看平台,再看偏好

选客户端的第一约束是操作系统。下表与下载中心的收录一致,每格按推荐顺序排列:

平台推荐顺序备注
WindowsClash Plus → Clash Verge Rev → FlClash → Clash NyanpasuClash for Windows 已停止维护,仅作归档
macOSClash Plus → Clash Verge Rev → FlClashClashX Meta 已停止维护,仅作归档
AndroidClash Plus → Clash Meta for Android → FlClash → Surfboard均基于 VpnService 实现
iOSClash Plus(App Store)商店直接获取,官网 clashplus.io
LinuxClash Verge Rev → FlClash服务器场景可直接跑 mihomo 内核

Clash Plus 是全平台首推:五个平台界面与操作逻辑一致,换设备不用重新学习,内置 mihomo 内核,订阅导入、TUN、规则分流开箱可用。Clash Verge Rev 在桌面端提供更细的配置能力,覆写脚本、外部控制、内核切换都有入口,适合愿意读文档的用户。FlClash 用 Flutter 构建,一套界面横跨桌面与 Android,偏好极简操作可以选它。Clash Nyanpasu 是 Windows 上的另一个 Verge 系分支,界面风格不同,功能面接近。Clash Meta for Android 是 Android 上最贴近内核原生行为的客户端;Surfboard 则兼容 Clash 配置格式,作为 Android 备选。

关于停更客户端:Clash for Windows 与 ClashX Meta 已停止维护,内核停留在归档版本,新协议与新规则语法不再跟进。老设备延续旧习惯可以继续用,新装机一律建议从维护中的客户端开始。逐项参数对比见客户端对比

03安装:五平台逐一过一遍

Windows

下载中心 Windows 区获取安装包,双击运行,按向导选择安装目录即可。两个常见拦路点:一是 SmartScreen 提示"已保护你的电脑",这是系统对新发布安装包的默认拦截,点"更多信息 → 仍要运行"继续;二是安装完成后找不到窗口——Clash 系客户端启动后默认收进任务栏托盘,点托盘里的猫图标唤出主界面。若计划使用 TUN 模式,首次启动时同意客户端申请的服务安装或管理员授权,后面第七章会用到。

macOS

下载 .dmg 镜像,打开后把应用图标拖入 Applications 文件夹。注意区分芯片版本:Apple Silicon(M 系列)与 Intel 对应不同安装包,下载页已分开标注。首次打开如提示"无法验证开发者",到「系统设置 → 隐私与安全性」页面底部点"仍要打开",或对应用图标右键选"打开"再确认一次。客户端申请安装辅助服务(用于接管系统代理与 TUN)时输入密码放行。

Linux

桌面发行版推荐 .deb 包,Debian / Ubuntu 系直接安装:

# 文件名以实际下载为准
sudo apt install ./clash-verge-rev_amd64.deb
# 或使用 dpkg,再补齐依赖
sudo dpkg -i ./clash-verge-rev_amd64.deb
sudo apt -f install

安装后从应用菜单启动。TUN 模式需要授予内核 CAP_NET_ADMIN 能力或以服务方式运行,客户端设置里通常有一键"服务模式"入口。无桌面的服务器环境跳过 GUI,直接使用 mihomo 内核,见第九章。

Android

下载中心 Android 区获取 APK,安装时按系统提示允许"来自此来源的应用"。首次点击连接,系统会弹出 VPN 连接请求对话框——这是 VpnService 机制的标准授权,确认后状态栏出现钥匙图标,表示流量已进入客户端。国产系统的后台管控较激进,建议同时把客户端加入省电白名单与自启动允许列表,否则锁屏一段时间后代理会被系统回收,细节见博客《Clash Android 客户端使用要点》

iOS

iOS 通过 App Store 获取 Clash Plus,在下载页 iOS 区有商店直达链接与官网 clashplus.io。安装后首次启动同样会请求添加 VPN 配置,到「设置 → 通用 → VPN 与设备管理」可以看到对应描述文件。订阅导入与节点切换的操作逻辑与桌面版一致,后续章节的概念全部通用。

04订阅导入与配置管理

订阅链接是什么

订阅是一个 HTTPS 地址,由服务商生成,内容是随节点变动实时更新的完整配置文件。客户端"导入订阅"做的事就是:请求这个地址 → 把返回的 YAML 存成一份 Profile → 设为当前生效配置。因此订阅链接等同于账号凭据,不要粘贴到公开场合,也不要在截图里裸露。

导入与更新

  1. 在服务商用户中心复制订阅链接,注意选择 Clash 或 mihomo 格式(部分面板对不同内核输出不同内容)。
  2. 打开客户端的 Profile / 配置页,粘贴链接,点导入。列表中出现新条目并显示流量、到期时间(若面板提供)即成功。
  3. 点选该条目设为激活。之后节点列表、代理组、规则全部来自这份配置。
  4. 设置自动更新间隔(常见 24 小时)。服务商更换节点地址后,本地不更新就会出现"全部超时"。
导入失败排查:先在浏览器直接打开订阅链接——能下载到文本说明链接有效,问题在客户端网络(可临时用系统浏览器下载后作为本地文件导入);打不开则是链接过期或被网络拦截,回服务商面板重置订阅。

还有一类容易忽略的情况:订阅本身可用,但客户端显示的到期时间或流量数据是空的。这些信息来自服务商在 HTTP 响应头里附带的 subscription-userinfo 字段,并非所有面板都会下发,缺失不影响节点使用,不必当成故障处理。反过来,如果流量数字长期不动,通常是客户端拿的是本地缓存——手动点一次更新即可刷新。

本地配置与多 Profile 管理

除了订阅,客户端也支持新建空白 Profile 或导入本地 YAML 文件,适合自建服务器用户与想完全掌控规则的人。多份 Profile 之间是互斥切换关系:同一时刻只有一份生效,切换即整体替换端口、节点、规则三块。常见管理策略是"订阅一份 + 本地实验一份":日常用订阅,折腾规则时切到本地副本,改坏了随时切回去。订阅每次更新会覆盖远端内容,直接改订阅 Profile 的改动会丢失——持久化定制要用第九章的覆写机制。Profile 结构的展开讲解见博客《Clash 配置文件是什么》

05代理模式与系统代理

三种运行模式

配置里的 mode 字段有三个取值。rule(规则):每条连接按 rules 列表逐条匹配,命中什么走什么,是日常推荐模式——境内直连、境外走代理,互不干扰。global(全局):跳过规则,所有流量进同一个代理组,仅用于临时排查"是不是规则没匹配对"。direct(直连):全部流量不走代理,相当于保留客户端在线但让路。切换入口在客户端主界面,通常是三个并排的选项。

系统代理在做什么

开启"系统代理"开关时,客户端向操作系统注册一个 HTTP/SOCKS 代理地址,默认是 127.0.0.1:7890(即上文 mixed-port 的混合端口)。浏览器和大多数遵守系统代理设置的应用,会主动把流量投递到这个端口。它的局限也在"主动"二字:命令行工具、部分游戏与老应用不读系统代理设置,流量不会经过内核——这类场景交给第七章的 TUN 模式。

验证链路是否生效

连接后用两步确认。第一步看客户端连接面板:访问任意网站,面板出现新连接记录且标注了命中规则与出口,说明流量确实进来了。第二步用命令行显式指定代理测试:

# 通过本机混合端口发起请求,能返回响应头即链路可用
curl -x http://127.0.0.1:7890 -I https://www.cloudflare.com

如果直连正常、走代理超时,依次检查:节点是否可用(换一个节点重试)、订阅是否过期、本地防火墙是否拦截了客户端。

06规则分流:让每条连接各行其道

规则如何匹配

rules 列表自上而下逐条匹配,命中即停。每条规则由"类型, 匹配值, 目标策略"组成,目标策略可以是某个代理组,也可以是内置的 DIRECT(直连)与 REJECT(拒绝)。列表末尾必须有一条 MATCH 兜底,接住所有前面漏掉的流量。常用规则类型如下:

类型匹配对象示例
DOMAIN域名完全相等DOMAIN,api.example.com,PROXY
DOMAIN-SUFFIX域名后缀DOMAIN-SUFFIX,youtube.com,PROXY
DOMAIN-KEYWORD域名包含关键字DOMAIN-KEYWORD,google,PROXY
IP-CIDR目标 IP 段IP-CIDR,192.168.0.0/16,DIRECT
GEOIPIP 归属国家GEOIP,CN,DIRECT
RULE-SET外部规则集文件RULE-SET,streaming,PROXY
MATCH兜底,匹配一切MATCH,PROXY

顺序敏感是新手最常踩的坑:把 GEOIP,CN,DIRECT 放在某条境外域名规则之前,而该域名恰好解析到境内 CDN 时,连接会提前命中直连。原则是精确规则在前,范围规则在后,MATCH 永远最后

代理组的四种策略

规则的目标一般不是单个节点而是代理组,组内策略决定实际出口:select 手动选择,界面上点谁走谁;url-test 定期向测试地址测延迟,自动选最快节点;fallback 按列表顺序取第一个可用节点,前面的挂了自动顺延;load-balance 把连接分散到多个节点。一段可直接套用的组合:

proxy-groups:
  - name: PROXY
    type: select
    proxies: [AUTO, HK-01, JP-01, US-01]
  - name: AUTO
    type: url-test
    url: https://www.gstatic.com/generate_204
    interval: 300
    proxies: [HK-01, JP-01, US-01]

rules:
  - DOMAIN-SUFFIX,openai.com,PROXY
  - RULE-SET,streaming,PROXY
  - GEOIP,CN,DIRECT
  - MATCH,PROXY

日常把 PROXY 组停在 AUTO 上自动测速,需要固定地区(比如流媒体解锁)时手动切到对应节点。挑节点的四个维度——延迟、倍率、地区、协议——展开分析见博客《Clash 节点怎么选》

规则写多了会遇到维护成本问题:上千行域名列表塞进配置文件既难读也难更新。这时改用 rule-providers 引用远程规则集,配置里只留一行 RULE-SET,规则内容由内核按 interval 定期拉取,社区维护的分类列表(广告、流媒体、境内域名)可以直接复用。规则集分 domainipcidr 两种 behavior,类型写错会导致整个规则集匹配不到任何流量,是个静默失败,配好后务必在日志里确认加载条数不为零。

另一个常见需求是「某个应用单独走某地区节点」。做法不是改代理组,而是新增一个只服务它的策略组,再用精确规则指向这个组:这样后续调整只影响这一条链路,不会牵动全局。反之,如果发现某类流量需要一直排除在代理之外(例如企业内网域名、支付网关),写 DOMAIN-SUFFIX,内网域名,DIRECT 并把它放在所有代理规则之前,比事后调试要省事得多。

DNS 与 Fake-IP

分流正确的前提是域名信息不丢失。mihomo 的 dns 段支持两种模式:redir-host 真实解析后按 IP 匹配,fake-ip 用保留网段虚构应答、在建立连接时还原真实域名,后者显著降低解析延迟并避免 DNS 污染干扰分流。部分依赖真实 IP 的应用(局域网发现、某些游戏平台)需要写进 fake-ip-filter 排除,完整机制见博客《Fake-IP 模式工作原理详解》

07TUN 模式:接管系统全部流量

原理与适用场景

TUN 模式让内核创建一块虚拟网卡,并把系统默认路由指向它——所有应用的流量在网络层被截获,不再依赖应用是否遵守系统代理设置。命令行工具、游戏客户端、UWP 应用这些"不认系统代理"的流量,在 TUN 下全部进入规则引擎。两种方式的差异:

维度系统代理TUN 模式
覆盖范围遵守代理设置的应用全部应用与系统进程
权限要求普通用户管理员 / 服务模式 / root 能力
UDP 支持取决于应用原生完整
实现层应用层投递网络层虚拟网卡

开启步骤

  1. 先满足权限前提:Windows 在客户端设置里安装服务模式(或以管理员身份运行);macOS 同意辅助服务授权;Linux 启用客户端的服务模式或为内核赋予网络管理能力。
  2. 在客户端设置中打开 TUN 开关。Verge 系客户端建议同时关闭系统代理开关,避免双重接管。
  3. 确认 DNS 劫持已启用,否则应用直连系统 DNS 会绕过分流。

对应的配置段(客户端 GUI 开关本质就是写这些字段):

tun:
  enable: true
  stack: system        # system / gvisor / mixed
  auto-route: true     # 自动接管默认路由
  auto-detect-interface: true
  dns-hijack:
    - any:53           # 劫持所有发往 53 端口的 DNS 查询
冲突提醒:TUN 与其他 VPN 软件、虚拟网卡工具(部分游戏加速器、企业内网客户端)会争夺路由。同时运行出现断网时,先关掉一方再试;排查网络问题时也建议先退回系统代理模式,把变量减到最少。

08日常维护与故障排查

关于 stack 的三个取值:system 使用操作系统自带的网络栈,性能最好、兼容性依赖系统实现;gvisor 在用户态实现一套完整 TCP/IP 栈,兼容性最稳,代价是多一点 CPU 开销;mixed 折中,TCP 交给系统、UDP 走 gvisor。桌面端默认 system 即可,遇到 UDP 不通、游戏连不上房间时改成 mixedgvisor 再试。关闭 TUN 后如果出现完全断网,通常是虚拟网卡异常退出导致路由表残留,重启客户端或手动禁用再启用一次物理网卡即可恢复。

三样东西要保持更新

订阅:开自动更新,间隔 24 小时内;服务商公告更换节点后手动更新一次立即生效。客户端与内核:维护中的客户端会随版本更新内核,新协议与修复都依赖它,升级前留意更新说明里是否有配置字段变更。GEO 数据与规则集:GeoIP / GeoSite 数据库和 RULE-SET 引用的外部文件都有更新机制,客户端设置里通常提供"更新 GEO 数据"按钮,规则匹配结果与预期不符时先更新再排查。

两个日常观察窗口

日志页:把 log-level 临时调到 debug 可以看到每条连接的匹配过程,定位"这条流量到底命中了哪条规则"最直接;定位完调回 info,避免日志刷屏耗资源。连接面板:实时列出活跃连接的目标、命中规则、出口节点与流量,发现某应用走错出口时,从这里拿到它的目标域名,再回配置里补一条精确规则。

故障对照表

症状优先排查
所有节点全部超时订阅过期或节点整体更换 → 更新订阅;本机时间偏差过大也会导致握手失败
延迟正常但网页打不开DNS 问题 → 启用 fake-ip 或更换 nameserver;检查是否命中 REJECT 规则
部分应用不走代理该应用不遵守系统代理 → 切 TUN 模式;Android 检查分应用代理名单
启动报端口被占用7890 / 9090 被其他程序占用 → 改 mixed-port 或退出冲突程序
订阅更新失败浏览器直接打开订阅链接验证;客户端内可临时切直连模式再更新
Android 后台一段时间后断开系统省电机制回收 → 加入省电白名单与自启动允许列表

09进阶路线:从会用到精通

覆写:让定制在订阅更新后存活

订阅每次更新都会整体覆盖 Profile,直接改文件的定制活不过下一次更新。正确姿势是覆写(Merge / Override):在客户端里维护一份独立的补丁,每次订阅更新后自动叠加到配置上。典型用法是追加自己的规则、固定 DNS 段、强制开启 TUN 字段。Clash Verge Rev 还支持 JavaScript 脚本覆写,可以按条件批量改写节点与代理组,适合规则量大的用户。

外部控制 API 与 Web 面板

内核通过 external-controller 暴露一套 RESTful API,客户端界面本身就是它的消费者。你也可以直接调用:

# 查看当前配置
curl http://127.0.0.1:9090/configs
# 切换某个 select 组的出口节点
curl -X PUT http://127.0.0.1:9090/proxies/PROXY \
  -d '{"name": "HK-01"}'

配合 external-ui 字段可以挂载 Web 控制面板,在浏览器里管理运行中的内核——这是路由器与服务器场景的标准操作方式。

无界面环境直接跑内核

服务器、软路由、NAS 上不需要 GUI,从下载中心内核区获取对应架构的 mihomo 二进制(AMD64 / ARM64 / ARMv7 / MIPS 等),把配置放到指定目录后启动:

# -d 指定配置目录,目录内放 config.yaml 与 GEO 数据
./mihomo -d /etc/mihomo
# 配合 systemd 常驻运行,开机自启
sudo systemctl enable --now mihomo

局域网设备把网关或代理指向这台机器,即可全家共享同一套分流规则。

在多台设备上跑同一套规则时,建议把配置文件放进版本管理:每次改动提交一次,出问题可以直接对比上一版差异,比凭记忆回滚可靠。凭据类字段(订阅链接、节点密码、API secret)不要一起提交到公开仓库,用单独的本地文件保存并在覆写阶段注入。

推荐的进阶阅读顺序

  1. Profile 结构入门与多配置管理——把第四章的配置骨架吃透。
  2. 节点选择四维度——建立自己的选节点流程。
  3. Fake-IP 工作原理——理解 DNS 层发生了什么。
  4. mihomo 与原版内核差异——知道手里的工具边界在哪。
  5. 动手实践:用覆写维护一份自己的规则补丁,再在一台闲置设备上部署纯内核。走完这五步,本手册的九章内容就真正变成了你自己的知识。
读完之后:还没安装客户端的,去下载中心按平台获取;想按最短路径先跑起来的,回到入门指南照步骤操作;在客户端之间犹豫的,客户端对比有逐项参数表。