01 · 核心概念:内核、配置文件与订阅
先把三个词的边界划清楚,后面所有章节都建立在这三个词上。内核是真正处理网络流量的命令行程序,当前生态的主流内核是 Mihomo(由 Clash Meta 项目延续而来),它读取一份配置文件,按其中的规则决定每个连接走哪条出口。客户端是包在内核外面的图形界面,负责导入订阅、切换节点、开关系统代理这些日常操作;你在下载页看到的 Clash Plus、Clash Verge Rev、FlClash 都属于这一层。订阅是服务商提供的一个 URL,客户端定期从这个地址拉取节点列表与预置规则,合成最终交给内核的配置。
内核只认一种输入:YAML 格式的配置文件,通常叫 config.yaml。这份文件有固定的顶层结构,常用字段分四块:
mixed-port、allow-lan、mode、log-level等全局参数,决定监听端口与运行模式;proxies:节点列表,每个条目是一台代理服务器的地址、端口、协议与凭据;proxy-groups:策略组,把节点组织成"手动选择""自动测速"这类可切换的集合;rules:分流规则,从上到下逐条匹配,决定流量进哪个策略组。
一份最小可运行的全局参数段长这样:
mixed-port: 7890
allow-lan: false
mode: rule
log-level: info
mixed-port: 7890 表示内核在本机 7890 端口同时监听 HTTP 与 SOCKS5 两种代理协议,系统代理设置指向它即可。allow-lan 控制是否允许局域网内其他设备接入,家用环境默认关闭。mode 决定运行模式,第五章展开。log-level 影响日志详细程度,排错时改成 debug,平时保持 info 即可。
订阅与配置文件的关系需要单独说明:订阅链接返回的内容,可能是一份完整的 Clash YAML(直接可用),也可能是 Base64 编码的节点列表(需要客户端或转换服务补上策略组与规则)。两种格式的差异与相互转换,见文章《Clash 订阅格式详解》。日常使用时你几乎不需要手写配置——客户端会替你合成——但理解结构是后面改规则、开 TUN、做增量修改的前提。名词遇到不熟的,随时查术语表,那里按"内核与协议 / 规则与分流 / 出口策略"等分类收录了常用词条。
最后一个容易混淆的点:Clash 原始项目已停止更新,现在说"Clash"通常指整个生态——Mihomo 内核加各家图形客户端。协议层面,Mihomo 支持 Shadowsocks、VMess、VLESS、Trojan、Hysteria2 等主流协议,订阅里是什么协议的节点,内核直接就能用,不需要按协议换软件。这也是选 Clash 系客户端的主要理由之一:一份订阅覆盖多协议,规则分流能力统一。
02 · 选客户端:平台与需求对照
客户端决定日常操作体验,内核决定能力上限。当前主流客户端全部内置 Mihomo 内核,能力差异不大,选型主要看平台覆盖与界面取向。下表是各平台的可选项与本站推荐顺序,与下载页货架一致:
| 平台 | 首选 | 备选 | 说明 |
|---|---|---|---|
| Windows | Clash Plus | Clash Verge Rev / FlClash / Clash Nyanpasu | Clash for Windows 已停止维护,仅作归档,不建议新装 |
| macOS | Clash Plus | Clash Verge Rev / FlClash | ClashX Meta 已停止维护;注意区分 Intel 与 Apple Silicon 安装包 |
| Android | Clash Plus | Clash Meta for Android / FlClash / Surfboard | 均以 VPN 服务方式接管流量,首次启动需授权 |
| iOS | Clash Plus(App Store) | — | 从 App Store 安装,官网 clashplus.io |
| Linux | Clash Verge Rev | FlClash | 提供 deb 包;服务器无桌面环境时直接跑 Mihomo 内核 |
按使用画像给三条选型建议。第一次用、不想研究配置:直接装 Clash Plus。它在五个平台都有版本,订阅导入、模式切换、节点测速集中在一个界面里,默认参数即可正常工作,多设备用户还能保持各端操作一致。需要精细控制配置:Clash Verge Rev 暴露的内核参数最全,支持配置增量修改(第九章会用到),TUN 开关与内核日志都在界面一层,适合愿意读文档的用户。Android 上追求轻量:Clash Meta for Android 界面最简,后台驻留开销小;FlClash 则以跨平台一致性见长,一套操作逻辑覆盖桌面与移动端。
两个反向提醒。其一,不要因为旧教程流行就去装 Clash for Windows 或 ClashX Meta——两者都已停止维护,内核版本停在过去,新协议节点(如 Hysteria2)可能直接无法识别,遇到问题也不会再有修复。其二,不必在一台设备上装多个客户端,它们都会尝试监听 7890 端口并接管系统代理,同时运行必然冲突;确有对比需求时,先彻底退出一个再启动另一个。
选型维度的完整展开——内核版本策略、TUN 支持程度、配置方式差异、按"新手 / 多设备 / 折腾党"三类画像的详细结论——见客户端对比页与文章《主流 Clash 客户端横向对比》。本手册后续章节的操作描述以 Clash Plus 与 Clash Verge Rev 为主,其他客户端菜单措辞略有差异,但概念与流程完全同构:找到"订阅/配置"入口导入,找到"模式"入口切换,找到"系统代理/TUN"开关接管流量。
03 · 安装与首次启动
安装包一律从下载页获取,按平台标签切换后选择对应客户端与架构。本章按平台列出安装动作、首次启动会遇到的系统提示,以及各平台的关键目录位置。
Windows
运行安装程序,按向导完成。首次运行未签名或签名较新的安装包时,SmartScreen 可能弹出"Windows 已保护你的电脑"——点击"更多信息"再点"仍要运行"即可继续。安装完成后从开始菜单启动,客户端会驻留在任务栏托盘区;找不到窗口时先看托盘,而不是重复启动。首次开启系统代理或 TUN 时会请求管理员权限(UAC 弹窗),需要允许。若启动即报错 bind: address already in use,说明 7890 端口被其他程序占用,处理流程见《Clash 端口被占用怎么办》。配置与日志目录通常在 %USERPROFILE%\.config 或应用数据目录下,客户端"打开目录"菜单可直达。
macOS
打开 dmg,把应用拖入"应用程序"文件夹。注意安装包分 Intel 与 Apple Silicon 两种架构,在"关于本机"确认芯片类型后再下载,装错架构会明显变慢或无法启动。首次打开时 Gatekeeper 会提示应用来自互联网——在弹窗点"打开",或到"系统设置 → 隐私与安全性"页底部点"仍要打开"。开启系统代理时,客户端会写入网络偏好设置,可能要求输入登录密码;开启 TUN 则需要安装一个系统扩展或授权辅助程序,按提示逐步允许。配置目录默认在 ~/.config 下的客户端子目录。
Android
安装 apk 时如提示"不允许安装未知来源应用",到系统设置里为浏览器或文件管理器授予"安装未知应用"权限。首次点击连接,系统会弹出 VPN 连接请求——这是 Android 接管流量的标准机制,必须允许,否则代理不生效。国产系统(MIUI、ColorOS 等)务必把客户端加入电池优化白名单并允许后台运行,否则锁屏一段时间后进程被杀,表现为"用着用着断网"。
iOS 与 Linux
iOS 从 App Store 安装 Clash Plus,首次启动配置描述文件式的 VPN 授权,同样点允许即可。Linux 桌面发行版用 deb 包安装 Clash Verge Rev(sudo apt install ./包名.deb),开启 TUN 需要为内核授予网络权限,客户端设置里有一键授权入口;无桌面的服务器场景直接下载 Mihomo 内核二进制,配合 systemd 运行,属于第九章的进阶内容。
无论哪个平台,首次启动后建议做三件事:打开日志页面确认没有红色报错;记住配置目录位置(备份与排错都用得到);暂时不要动默认端口与 DNS 设置——默认值适配绝大多数环境,改动应该发生在你明确知道为什么之后。如果客户端点开即闪退,按《启动崩溃与闪退处理》的顺序从日志读起。
04 · 订阅导入与更新
订阅链接由服务商提供,通常在其用户面板的"订阅 / 一键导入"位置,形如 https://example.com/api/v1/client/subscribe?token=xxxx。这个 URL 等价于你的账号凭据——泄露给他人等于共享账号——不要贴到公开场合,截图时注意打码。
三种导入方式
- URL 导入(推荐):在客户端"订阅 / 配置"页粘贴链接,点导入。客户端会记住这个地址,之后可以一键更新、可以设定时刷新,节点变动自动跟进。这是唯一能"持续同步"的方式。
- 文件导入:把服务商给的 YAML 文件直接拖入或选择导入。适合离线场景,缺点是节点更新后必须手动换文件。
- 剪贴板 / 扫码导入:移动端常见,本质仍是 URL 导入,只是输入途径不同。
导入成功的判断标准:订阅条目下能展开出节点列表,策略组页面能看到分组。如果导入报错,按三步定位:先在浏览器直接打开订阅链接,能看到一段 YAML 或 Base64 文本说明链接本身有效;再看客户端报错关键词,invalid syntax 一类指向格式不兼容,超时一类指向网络;最后确认订阅格式与客户端匹配——部分服务商为不同客户端提供不同格式的链接,选"Clash"那一档。有些服务商还会校验请求的 User-Agent,只对 Clash 系 UA 返回 YAML,浏览器打开是乱码属正常现象。
更新策略
订阅不是导入一次就一劳永逸:服务商会调整节点域名与端口,旧配置里的节点会逐渐失效。建议在客户端里把自动更新间隔设为 12 或 24 小时;遇到"昨天还能用今天全超时"的情况,第一反应就是手动更新一次订阅。更新失败时注意一个鸡生蛋问题:订阅地址本身可能需要代理才能访问——多数客户端提供"通过代理更新"开关,节点还有活口时打开它;全军覆没时只能换网络环境(如手机热点)更新。
订阅转换
当订阅格式与客户端不匹配(例如拿到的是通用 Base64 节点列表,而客户端只认完整 YAML),需要经过订阅转换服务加工:转换器拉取原始订阅,套上一份规则模板,输出标准 Clash 配置。转换的原理、公共转换服务的隐私风险(转换器能看到你的订阅内容)与自建方案,在《Clash 订阅格式详解》里有完整展开。原则上:客户端能直接吃的订阅就不要过转换器,链路越短越可靠。
多订阅用户的管理建议:每个订阅独立成一个配置条目,不要手工把多家节点合并进一份文件——合并后无法分别更新,排错时也分不清节点来源。需要跨订阅聚合节点时,用 proxy-providers 机制(第九章)让内核在运行期拉取合并,而不是改静态文件。
05 · 代理模式:规则、全局与直连
内核有三种运行模式,对应配置文件里 mode 字段的三个取值,客户端界面上通常是一组单选项:
| 模式 | mode 取值 | 行为 | 适用场景 |
|---|---|---|---|
| 规则 | rule | 每个连接按 rules 列表逐条匹配,命中什么走什么 | 日常默认,国内直连国外走代理 |
| 全局 | global | 跳过规则,所有流量进 GLOBAL 组指定的出口 | 临时验证节点、规则疑似误判时 |
| 直连 | direct | 所有流量直接从本机出去,不经任何节点 | 临时停用代理但不想退出客户端 |
日常应该停在规则模式。它的价值在于分流:访问国内站点的流量直连,不消耗节点流量也不增加延迟;境外流量按规则走代理;广告域名可以直接拒绝。全局模式是排错工具而不是常驻状态——所有流量都出代理意味着国内站点也绕一大圈,速度变差且流量翻倍消耗。一个实用的排错手法:某网站打不开时,先切全局试一次,能打开说明是规则没匹配对(回第六章改规则),仍打不开说明是节点问题(换节点或看速度分层排查)。
模式之外:流量如何进入内核
模式决定流量进内核后怎么走,还有一个独立的开关决定流量能不能进内核:系统代理。开启后,操作系统把 HTTP/HTTPS 流量指向 127.0.0.1:7890,浏览器与大部分遵守系统代理设置的应用随之生效。但部分程序(命令行工具、部分游戏与客户端软件)不读系统代理,它们的流量会绕过内核——这是"浏览器能翻、终端不能"的标准原因,解法有二:给程序单独配置代理环境变量(如 HTTP_PROXY=http://127.0.0.1:7890),或者直接上第七章的 TUN 模式整机接管。
连通性验证
切好模式后按顺序验证三件事:客户端"连接"页能看到活动连接条目,说明流量确实进了内核;条目的出口列显示预期的策略组与节点,说明规则命中正确;浏览器访问一个境外站点能打开,说明链路端到端可用。三步里哪一步断了,就到哪一层去查——这也是全站排错的基本方法论:先定位层,再动手改。策略组的选择(手动选节点还是自动测速)会直接影响体验,组类型的差异放在下一章与规则一起讲。
06 · 规则分流:语法、优先级与策略组
规则是 Clash 的核心能力,写在配置的 rules 列表里,每条规则三段式:类型,匹配值,出口。内核对每个新连接从上到下逐条匹配,命中即停——顺序就是优先级,这一点是理解与调试一切分流问题的钥匙。常用规则类型:
| 类型 | 匹配对象 | 示例 |
|---|---|---|
DOMAIN | 域名完全相等 | DOMAIN,ads.example.com,REJECT |
DOMAIN-SUFFIX | 域名后缀,含子域名 | DOMAIN-SUFFIX,github.com,PROXY |
DOMAIN-KEYWORD | 域名包含关键字 | DOMAIN-KEYWORD,google,PROXY |
IP-CIDR | 目标 IP 段 | IP-CIDR,192.168.0.0/16,DIRECT,no-resolve |
GEOIP | IP 归属地数据库 | GEOIP,CN,DIRECT |
RULE-SET | 外部维护的规则集合 | RULE-SET,streaming,PROXY |
MATCH | 无条件命中,必须放最后 | MATCH,PROXY |
一段结构完整的规则示例,注释标出了排序逻辑:
rules:
# 精确规则在前:优先级最高的手工覆盖
- DOMAIN-SUFFIX,openai.com,PROXY
- DOMAIN-SUFFIX,github.com,PROXY
# 局域网与保留地址直连,no-resolve 避免为纯域名连接触发解析
- IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
- IP-CIDR,10.0.0.0/8,DIRECT,no-resolve
# 地理位置兜底:国内 IP 直连
- GEOIP,CN,DIRECT
# 最终兜底:以上都没命中的,走代理
- MATCH,PROXY
三个高频语法要点。其一,DOMAIN-SUFFIX,github.com 同时匹配 github.com 与 api.github.com,但不匹配 github.io——后缀匹配以点为边界。其二,GEOIP 与 IP-CIDR 匹配的是目标 IP,如果连接目标是域名,内核要先做 DNS 解析才能比对;给内网段规则加 no-resolve,可以避免所有域名连接都被迫提前解析,减少延迟与 DNS 泄露面。其三,MATCH 之后的规则永远不会被执行,新增规则一定插在它之前;"改了规则不生效"的第一排查点就是看它是否被更靠前的规则截胡——客户端的"连接"页会显示每个连接命中的具体规则,以它为准。
策略组:规则的出口
规则第三段的出口,除了内置的 DIRECT(直连)与 REJECT(拒绝),更多时候指向策略组。策略组把节点组织成可切换的集合,常用四种类型:select 手动选择,界面上点谁用谁;url-test 定期向测试地址发请求,自动选延迟最低的节点;fallback 按列表顺序取第一个可用节点,首选挂了自动降级;load-balance 把连接分散到多个节点。示例:
proxy-groups:
- name: PROXY
type: select
proxies:
- AUTO
- HK-01
- JP-01
- name: AUTO
type: url-test
url: http://www.gstatic.com/generate_204
interval: 300
proxies:
- HK-01
- JP-01
这份结构是常见的最佳实践:PROXY 是规则指向的总入口,类型为手动选择;它的第一个选项是自动测速组 AUTO,平时选它享受自动选优,特殊需求(比如固定地区)时手动切到具体节点。interval: 300 表示每五分钟重测一次。订阅自带的配置通常已经包含类似分组,理解这套结构后,你就能读懂任何一份订阅配置,也为第九章自己动手改配置打好了底。
07 · TUN 模式与系统级接管
第五章说过系统代理的盲区:不读代理设置的程序会绕过内核。TUN 模式从更底层解决这个问题——内核创建一块虚拟网卡,操作系统的默认路由指向它,于是所有 IP 流量(无论程序是否支持代理,无论 TCP 还是 UDP)都先进内核,再按规则分流。命令行工具、游戏、UDP 语音通话,统统被覆盖。代价是需要更高的系统权限,并且与其他改路由的软件互斥。
配置与参数
主流客户端都把 TUN 做成了一个开关(Clash Verge Rev 在设置页,Clash Plus 在连接方式选项里),开关背后对应配置里的这一段:
tun:
enable: true
stack: system
auto-route: true
auto-detect-interface: true
dns-hijack:
- any:53
逐项说明:stack 是协议栈实现,system 使用系统网络栈,兼容性最好,一般场景首选;gvisor 是用户态栈,个别系统栈异常的环境可以换它试试;mixed 取两者折中。auto-route 让内核自动写入路由表并在退出时清理,必须开启,否则流量不会进虚拟网卡。auto-detect-interface 自动识别真实出口网卡,防止流量在虚拟网卡里打转形成回环。dns-hijack 把所有发往 53 端口的 DNS 查询劫持给内核处理,保证域名规则在 TUN 下仍能正确匹配——不劫持 DNS 的话,应用可能拿着自己解析的 IP 直连,域名类规则整段失效。
各平台的权限门槛
Windows 上首次开启会请求管理员权限并安装虚拟网卡驱动,UAC 弹窗需允许;开启后如果整机断网,通常是驱动安装不完整,重启系统后再开一次。macOS 需要授权系统扩展,在"系统设置 → 隐私与安全性"里放行,新版系统可能还要在"登录项与扩展"里确认。Linux 需要给内核二进制授予 CAP_NET_ADMIN 能力,Clash Verge Rev 设置里的授权按钮会代办。Android 与 iOS 的客户端本身就以 VPN 服务方式运行,天然等价于 TUN,不需要额外操作。
使用边界与常见坑
- TUN 与系统代理不需要同时开。开 TUN 后建议关掉系统代理,避免流量经历两次接管,徒增排错难度。
- TUN 与其他 VPN、虚拟网卡软件互斥——两个程序抢默认路由,结果通常是断网。开 TUN 前先退出其他 VPN 类软件。
- 开启后所有流量都过内核,规则质量直接决定体验:
GEOIP,CN,DIRECT这类直连兜底必须在位,否则系统更新、网盘同步这类大流量全走了代理。 - 关闭客户端后若仍然断网,是路由没清理干净,重启网络接口或重启系统即可恢复;更多此类问题的处理见帮助中心的故障排查分类。
一句话的取舍建议:浏览器为主的轻度用户,系统代理够用且权限干净;需要覆盖命令行、游戏或任意 UDP 应用的用户,直接上 TUN,配好之后它就是"开机即忘"的稳定状态。
08 · 日常维护:更新、备份与故障快查
配好之后,Clash 的日常维护量很小,但有几件事按周期做,能避开绝大多数"突然不能用了"。
三类更新
订阅更新频率最高:开自动更新(12~24 小时)之外,任何"整批节点超时"的时刻都先手动更新一次订阅再排错。GeoIP / Geosite 数据库更新容易被忽略:第六章的 GEOIP,CN 规则依赖本地 IP 归属地数据库,数据库过旧会导致部分国内 IP 被误判为境外而绕道代理,表现为"国内网站莫名变慢";主流客户端在设置里提供一键更新入口,建议每一两个月点一次,更新后重启内核生效。客户端与内核更新:客户端一般自带检查更新,升级前记得先做下一段的备份;不追新功能的话,稳定运行的版本不必频繁升级。
备份什么、怎么备
值得备份的只有三样:订阅链接本身(存在密码管理器里,有它就能在任何新设备上重建一切)、你手工修改过的配置或覆写片段、客户端的设置导出(如果客户端提供导出功能)。配置目录整个打包也可以,但缓存与日志没有备份价值。换机迁移的标准流程:新设备装客户端 → 粘贴订阅链接 → 恢复自定义片段,五分钟完成,不需要迁移任何二进制文件。
日志:排错的第一现场
所有排错都应该从日志开始,而不是从猜测开始。客户端界面的日志页显示内核运行日志:error 级别的行直接给出失败原因(端口占用、配置语法错误、节点握手失败),info 级别能看到每个连接的匹配过程。界面日志不够时,配置目录下有完整日志文件。把 log-level 临时调到 debug 可以看到 DNS 解析与规则匹配的每一步,查完记得调回 info,debug 日志量很大。
故障快查表
| 症状 | 第一嫌疑 | 处理入口 |
|---|---|---|
启动报 bind: address already in use | 7890 端口被占用 | 定位冲突进程与改端口 |
| 客户端点开即闪退 | 配置语法错误 / 缓存损坏 | 从日志读起的修复清单 |
| 能连上但速度慢 | 节点质量 / 线路拥塞 / 本地设置 | 分层排查:节点→线路→本地 |
| 全部节点超时 | 订阅过期 / 系统时间偏差 | 先更新订阅,再校准系统时间 |
| 部分网站不走代理 | 规则未命中 | 连接页看命中规则,回第六章调整 |
表里第四行的"系统时间偏差"值得单独一提:VMess 等协议对时间敏感,本机时间偏差超过约 90 秒,握手直接失败,所有该协议节点集体超时,现象极像订阅挂了。排错时把"系统时间是否自动同步"列入常规检查项。更零碎的问答式内容,集中在帮助中心,按基础认知、安装配置、使用技巧、故障排查四类组织。
09 · 进阶路线:覆写、外部控制与命令行内核
走完前八章,日常使用已经完全够用。本章给还想往深处走的用户三条路线,按投入从低到高排列。
路线一:配置覆写,不动订阅原文
直接编辑订阅生成的配置文件是新手常犯的错误——下次订阅更新,改动全部被覆盖。正确姿势是覆写(override):把你的修改写成独立片段,客户端在每次订阅更新后自动合并进最终配置。Clash Verge Rev 支持 YAML 合并与脚本两种覆写方式,典型用途:在订阅规则最前面插入自己的高优先级规则、追加一个自维护的节点、强制改掉订阅里不合理的测速间隔。一个最小的合并覆写示例,在规则列表头部追加两条:
prepend-rules:
- DOMAIN-SUFFIX,internal.example.com,DIRECT
- DOMAIN-KEYWORD,tracker,REJECT
与覆写同属"托管思维"的还有 proxy-providers / rule-providers:让内核在运行期从 URL 拉取节点集与规则集并定期刷新,主配置里只写引用。多订阅聚合、订阅社区维护的规则集(如广告域名列表),都靠这对机制,而不是手工复制粘贴。
路线二:外部控制 API
内核自带一套 HTTP 控制接口,配置里两行即可开启:
external-controller: 127.0.0.1:9090
secret: "your-password"
开启后,切换节点、改模式、查连接、测延迟都可以通过 HTTP 请求完成——客户端界面本质上就是这套 API 的前端。掌握它之后能做的事:用网页版仪表盘(客户端一般内置入口)在浏览器里管理内核;写脚本定时测速并自动切换策略组;在家庭服务器场景下远程管理一台无界面的内核。两条安全底线:secret 必须设置且足够随机;监听地址保持 127.0.0.1,确需局域网访问时配合防火墙限制来源。
路线三:命令行直跑 Mihomo 内核
服务器、软路由、NAS 这类无桌面环境,跳过图形客户端,直接运行内核。下载页内核区提供各架构的二进制;基本用法是 mihomo -d /etc/mihomo,-d 指定的目录里放 config.yaml 与地理数据库。配合 systemd 写一个服务单元实现开机自启与崩溃拉起,再用路线二的控制 API 远程管理,就是一台全屋分流网关的雏形。这条路线要求你对第一章到第六章的配置结构完全吃透——到这里,"从零到精通"的闭环就完成了。
推荐的学习顺序
- 把本页第六章的规则语法在自己的配置上实际验证一遍:加一条规则,在连接页确认命中。
- 用覆写机制固化自己的常用修改,体会"订阅更新不丢改动"的工作流。
- 打开外部控制,用浏览器仪表盘替代客户端界面操作一天,理解内核与界面的边界。
- 有闲置设备时,尝试命令行部署内核,把桌面上的经验平移到服务端。
每一步都建立在前一步之上,不需要跳跃。遇到具体名词回术语表,遇到具体故障回第八章的快查表,遇到"该装哪个"的犹豫回对比页——这份手册的用法,就是当作一块常驻手边的接线图。