01核心概念:内核、客户端与配置文件
Clash 是一套基于规则的网络代理方案,准确说它由两层组成:负责实际转发流量的内核,和提供图形界面的客户端。最初的内核项目已停止开发,目前生态内延续维护的内核是 mihomo(社区习惯仍称 Clash Meta 内核),它兼容原有配置格式,并支持更多传输协议。日常说的「装 Clash」,实际是装一个内置 mihomo 内核的图形客户端——Clash Plus、Clash Verge Rev、FlClash 都属于这一类,它们界面各异,底层读取的配置格式是同一套。
配置文件长什么样
内核的全部行为由一份 YAML 配置文件决定,理解它的骨架是后面所有章节的基础。一份最小可用的配置大致包含以下几段:
mixed-port: 7890 # HTTP 与 SOCKS 复用的本地监听端口
allow-lan: false # 是否允许局域网内其他设备接入
mode: rule # 运行模式:rule / global / direct
log-level: info
proxies: [] # 节点列表,通常由订阅生成
proxy-groups: [] # 策略组,决定"哪类流量走哪个节点"
rules:
- MATCH,DIRECT # 规则列表,自上而下匹配
其中 proxies 描述有哪些可用节点,proxy-groups 把节点组织成可切换的策略组,rules 决定每条连接命中哪个组。手工维护这三段内容繁琐,所以绝大多数用户使用订阅:服务商提供一个 URL,客户端定期拉取,得到一份完整生成好的配置。订阅本质上就是「远程托管的配置文件」,这一点在第四章展开。
本地端口与系统代理
内核启动后会在本机监听端口(默认常见值为 7890),应用程序把流量发到 127.0.0.1:7890,内核按规则决定直连或转发。客户端里的「系统代理」开关做的事,就是把操作系统的代理设置指向这个端口。理解「监听端口 + 系统代理」这对关系,后面排查「开了 Clash 但没生效」一类问题会容易得多。举个常见例子:客户端界面显示已连接、节点延迟也正常,但浏览器访问外网依旧超时,十有八九是系统代理开关没打开,或者被其他代理、加速类软件抢占了系统代理设置,流量根本没进到内核监听的端口上。反过来,如果关掉客户端后浏览器还能按代理方式联网,那多半是系统代理设置被残留下来没有清理,需要到系统网络设置里手动关掉。把「流量有没有进到内核」和「内核转发得对不对」这两件事拆开来看,是后续所有排查动作的基本功。
更多名词(策略组类型、GEOIP、DNS 分流等)在正文各章首次出现时都会展开解释,不需要先背术语,按章节顺序读即可。
02选客户端:平台对照与推荐顺序
不同平台可用的客户端不同,功能侧重也有差异。下表按平台列出本站安装包页面收录的客户端,与下载页的排序一致:
| 平台 | 客户端(按推荐顺序) | 备注 |
|---|---|---|
| Windows | Clash Plus、Clash Verge Rev、FlClash、Clash Nyanpasu | Clash for Windows 已停止维护,仅作归档保留 |
| macOS | Clash Plus、Clash Verge Rev、FlClash | ClashX Meta 已停止维护,老用户可继续使用归档版本 |
| Android | Clash Plus、Clash Meta for Android、FlClash、Surfboard | 注意按 CPU 架构选 APK,见第三章 |
| iOS | Clash Plus(App Store 上架) | 官网 clashplus.io,需以商店页面为准 |
| Linux | Clash Verge Rev、FlClash | 提供 deb / rpm 包,服务器场景可直接跑内核 |
怎么选
Clash Plus 是全平台首推:五个主流平台都有对应版本,界面统一,订阅导入、策略组切换、TUN 开关等常用功能都在显眼位置,新用户学习成本最低。Clash Verge Rev 在桌面端功能更完整,支持配置覆写、Merge 脚本、外部控制面板等进阶能力,适合需要深度定制的用户,本站也有配套的 Clash Verge Rev 教程类文章。FlClash 基于 Flutter 构建,桌面与移动端体验一致,偏好简洁界面可以选它。Clash Nyanpasu 仅提供 Windows 版,定位与 Verge Rev 接近。
Clash for Windows 与 ClashX Meta 均已停止维护,不再跟进新协议与系统兼容性修复。新装机不建议选择;仍在使用的老用户遇到协议不支持、系统升级后异常等问题时,迁移到上表中仍在维护的客户端是唯一稳妥的解法。
选定客户端后,后续章节的操作在各客户端里叫法可能略有差异(例如「订阅」「配置」「Profiles」),但流程一致,本手册以通用叫法描述,必要处单独标注客户端差异。
03安装:各平台要点与常见拦截
安装本身不复杂,容易卡住的是各系统的安全机制。本章按平台列出安装步骤与对应的放行方法。
Windows
从安装包页面下载 exe 安装程序,双击运行。首次运行时 SmartScreen 可能弹出「Windows 已保护你的电脑」,这是对无签名或低下载量程序的通用拦截,点击「更多信息 → 仍要运行」即可继续。安装路径建议保持默认;若杀毒软件将内核文件报为可疑,需要在杀毒软件中添加安装目录为信任项——内核会创建虚拟网卡与本地代理端口,这类行为容易触发启发式误报。安装完成后建议在客户端设置里开启「开机自启」,并以管理员身份运行一次,便于后续开启 TUN 模式。
macOS
下载 dmg 或 zip 后拖入「应用程序」文件夹。注意区分芯片版本:Apple Silicon 机型选 arm 版,Intel 机型选 x64 版,装错会无法启动或经转译层运行导致性能下降。首次打开若提示「无法验证开发者」,到「系统设置 → 隐私与安全性」页面底部点「仍要打开」;若提示「文件已损坏」,通常是下载文件被系统加上了隔离属性,在终端执行以下命令后重新打开:
xattr -dr com.apple.quarantine /Applications/客户端名称.app
客户端首次开启系统代理或 TUN 时,系统会请求安装辅助程序或网络扩展,按提示输入密码允许即可,这一步只需做一次。
Android
下载 APK 时按 CPU 架构选择:近几年的主流机型选 arm64 版;老设备或不确定架构时选 universal 通用包(体积更大但兼容所有架构)。安装时系统会要求允许「安装未知来源应用」,在弹出的设置页为浏览器或文件管理器授权一次即可。首次启动代理时会弹出 VPN 连接请求,必须允许——Android 客户端通过系统 VPN 接口接管流量,拒绝该请求代理无法工作。部分厂商系统会积极清理后台,建议在电池管理里将客户端设为「不受限制」,并锁定后台。
iOS
iOS 平台从 App Store 安装 Clash Plus,在商店搜索或通过下载页的商店链接直达,应用详情可参考官网 clashplus.io。安装后首次启动代理同样需要允许添加 VPN 配置,在系统弹窗中确认即可。
Linux
Debian/Ubuntu 系用 deb 包:sudo apt install ./包名.deb;Fedora 系用 rpm 包:sudo dnf install ./包名.rpm。图形客户端依赖桌面环境;无桌面的服务器直接部署 mihomo 内核更合适,方法见第九章。开启 TUN 需要为程序授予网络管理能力或以 root 权限运行,客户端设置里一般提供一键授权入口。
安装完成的判断标准:客户端能正常启动并停留在主界面,系统托盘或状态栏出现图标。此时还没有节点,下一章导入订阅后才能真正联网使用。
04订阅导入:获取、导入与更新策略
订阅链接由代理服务商(俗称机场)在其用户面板提供,通常标注为「Clash 订阅」或「Clash 配置」。复制时注意拿到的是完整 URL 而不是面板网址本身;部分服务商同时提供多种格式,选 Clash / mihomo 格式即可。
导入步骤
- 在服务商面板复制订阅链接。链接包含身份令牌,等同于账号凭据,不要发给他人或贴到公开场合。
- 打开客户端的「订阅」或「配置」页面,点击新增/导入,粘贴链接确认。客户端会立即下载并解析,成功后列表中出现一条带流量与到期信息的配置项。
- 点选该配置将其设为当前使用的配置文件(部分客户端导入后自动选中)。切到「代理」页面应能看到策略组与节点列表,说明解析成功。
更新设置
订阅内容会随服务商调整节点而变化,长期不更新会出现节点全部超时的情况。客户端里与更新相关的设置有三个:更新间隔(建议 12~24 小时自动拉取一次)、启动时更新(每次打开客户端先刷新一次订阅)、通过代理更新(订阅域名本身被阻断时,经由当前可用节点去拉取)。三者的组合用法与典型报错场景,在博客订阅更新失败怎么办一文中有逐项说明。
导入失败怎么排
导入报错大多落在六类原因里:链接过期或流量用尽、复制的不是 Clash 格式、服务商限制了请求 UA、YAML 内容有语法错误、本地网络拦截了订阅域名、客户端版本过旧不认识新字段。逐项自查方法见订阅失效与解析失败排查清单;若报错信息含「yaml」「parse」字样,优先怀疑格式问题,换一个客户端交叉验证可以快速定位是链接问题还是本地问题。
同一条订阅可以同时导入多个客户端使用,互不影响。但注意多数服务商按账号限制同时在线设备数或 IP 数,超限会被临时限制连接。
05代理模式:规则、全局与直连
配置文件里的 mode 字段有三个取值,对应客户端界面上的三种模式,它们决定内核如何处置每一条连接:
| 模式 | 行为 | 适用场景 |
|---|---|---|
| rule(规则) | 每条连接按 rules 列表自上而下匹配,命中哪条按哪条的策略走 | 日常默认。国内站点直连、海外站点走代理,速度与体验兼顾 |
| global(全局) | 忽略规则,所有流量交给 GLOBAL 组选中的节点 | 临时排查「是不是规则没命中」,或短时间内所有流量都需要代理 |
| direct(直连) | 忽略规则,所有流量直接发出,不经任何节点 | 临时停用代理但不想退出客户端,或测试本地网络本身是否正常 |
常见误区是长期挂在全局模式:这会让国内流量也绕道海外节点,访问国内服务反而变慢,还平白消耗订阅流量。全局模式的正确定位是诊断工具——规则模式下某网站打不开,切全局后能打开,说明问题出在规则未命中,该去第六章补规则,而不是常驻全局。
系统代理与生效范围
选好模式后还要让流量进得来。桌面端最常用的入口是「系统代理」开关:开启后系统级代理设置指向内核的 mixed-port,浏览器与大部分遵守系统代理的应用会自动走代理。但系统代理是「君子协定」,部分命令行程序和不读系统设置的软件会绕过它——这类流量需要第七章的 TUN 模式来接管。终端里可以用环境变量手动指定:
export https_proxy=http://127.0.0.1:7890
export http_proxy=http://127.0.0.1:7890
export all_proxy=socks5://127.0.0.1:7890
验证代理是否生效
三步验证:先在客户端节点列表做延迟测试,确认所选节点非超时;再访问一个 IP 归属查询站点,显示的出口 IP 应为节点所在地区;最后打开目标网站确认可达。三步分别验证「节点可用」「流量确实经过节点」「规则命中正确」,任何一步失败都能把问题范围收窄。之所以强调按这个顺序做,是因为很多人一遇到打不开网页就反复换节点,其实换节点只能解决第一步的问题;如果延迟测试本来就正常,问题往往出在第二步或第三步——要么系统代理/TUN 没接管到这条流量,要么规则把它判成了直连。养成「先看出口 IP,再看日志命中」的习惯,能省下大量盲目试错的时间。
06规则分流:策略组与规则的配合
规则分流是 Clash 区别于简单代理工具的核心能力,由 proxy-groups 与 rules 两段配合完成:策略组回答「可以走哪些出口」,规则回答「什么流量走哪个组」。订阅生成的配置已经内置一套分流,本章讲清它的工作原理,便于读懂现有配置并按需修改。
策略组的四种常用类型
select:手动选择组,在客户端界面点选生效,最常见的「节点选择」就是它;url-test:自动测速组,按设定间隔向测试 URL 发请求,始终选延迟最低的节点;fallback:故障转移组,按列表顺序使用第一个可用节点,失效后自动切换到下一个;load-balance:负载均衡组,把连接分散到多个节点。
规则语法与优先级
每条规则的格式是「类型,匹配值,目标策略」,常用类型包括 DOMAIN-SUFFIX(域名后缀)、DOMAIN-KEYWORD(域名关键词)、GEOIP(IP 归属地)、IP-CIDR(IP 段),以及必须放在最后一行的兜底规则 MATCH。规则自上而下匹配,命中即停,因此顺序就是优先级:精确的域名规则放前面,GEOIP 这类需要解析出 IP 才能判断的规则放后面,MATCH 收尾。一个体现典型结构的片段:
proxy-groups:
- name: 节点选择
type: select
proxies:
- 自动测速
- DIRECT
- name: 自动测速
type: url-test
url: https://www.gstatic.com/generate_204
interval: 300
proxies:
- 香港节点
- 日本节点
- name: 流媒体
type: select
proxies:
- 节点选择
- 日本节点
rules:
- DOMAIN-SUFFIX,netflix.com,流媒体
- DOMAIN-KEYWORD,youtube,节点选择
- DOMAIN-SUFFIX,cn,DIRECT
- GEOIP,CN,DIRECT
- MATCH,节点选择
这份片段实现了三层意图:流媒体域名交给专门的「流媒体」组(可以固定选某地区节点以稳定解锁);cn 后缀域名与解析到中国大陆 IP 的连接直连;其余流量兜底走「节点选择」。组可以引用组(「流媒体」里放「节点选择」),这让配置具备层级结构,改一处上游组即可影响所有引用它的场景。
完整的地区分流实战,包括为不同流媒体平台单独建组、规则顺序踩坑点,见博客规则分流实战:大陆直连与海外走代理的分组写法。
直接修改订阅生成的配置文件,下次订阅更新时会被整体覆盖。需要长期保留的自定义规则,应使用客户端的「覆写」或「Merge」机制(Clash Verge Rev 支持较完整),把改动声明在订阅之外,每次更新后自动叠加,详见第九章。
07TUN 模式:接管全部流量
第五章提到系统代理管不住所有程序:不读系统代理设置的软件、部分游戏客户端、命令行工具的流量会直接绕过内核。TUN 模式的解法是在系统里创建一块虚拟网卡,把设备的全部出站流量在网络层截获后交给内核处理——对应用程序而言完全透明,不需要任何程序单独配置代理。Android 与 iOS 客户端的 VPN 接口本质上就是同一思路,所以移动端不存在「开 TUN」这个额外步骤;本章主要针对桌面端。
开启步骤
- 授予权限。创建虚拟网卡需要提升权限:Windows 以管理员身份运行客户端(或在设置中安装系统服务实现免提权);macOS 首次开启时按弹窗安装网络扩展;Linux 在客户端设置里对内核执行一键授权。
- 在客户端设置中打开 TUN 开关。开启后系统网络连接列表会多出一块名称含 utun 或 Clash 字样的网卡,即为生效标志。
- 关闭系统代理开关。TUN 已在更底层接管流量,再叠加系统代理没有收益,还可能引起回环问题。
DNS 配置
TUN 模式下 DNS 解析也由内核接管,配置文件需要有可用的 dns 段,订阅生成的配置一般已包含,典型形态如下:
dns:
enable: true
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.1/16
nameserver:
- https://223.5.5.5/dns-query
- https://120.53.53.53/dns-query
fake-ip 是 TUN 下推荐的增强模式:内核先返回一个保留段的虚拟 IP,等连接真正建立时再按域名做规则匹配,省去一次真实解析,规则命中也更准确。个别依赖真实 IP 的场景(如某些局域网服务发现)出现异常时,可为相应域名配置 fake-ip-filter 排除项。
判断该不该开 TUN 的简单标准:浏览器代理正常,但某个桌面程序、游戏或终端命令不走代理——开 TUN;只用浏览器和常规应用——系统代理已够用,不必增加一层复杂度。
08日常维护:更新、备份与故障速查
配置一次跑通之后,日常要做的事不多,但几个习惯能显著减少突发故障。
保持三样东西是新的
订阅:按第四章设置自动更新间隔,节点大面积超时时先手动更新一次订阅再排查其他原因。客户端:仍在维护的客户端会持续跟进内核与系统兼容性,在安装包页面获取新版本覆盖安装即可,配置与订阅不会丢失。地理数据库:GEOIP 规则依赖 GeoIP/GeoSite 数据文件,多数客户端在设置里提供一键更新入口,几个月更新一次即可。
备份什么、怎么备份
值得备份的是「订阅链接 + 自定义覆写内容」这两样,有它们就能在任何一台新设备上几分钟内还原环境。订阅生成的配置文件本身不必备份——它随时可以重新拉取。桌面客户端的配置目录(含覆写文件与客户端设置)可以整体复制留存,各客户端的设置页面一般标注了目录位置。
看日志定位问题
客户端的日志页面实时输出每条连接的匹配结果,格式大致是「域名/IP → 命中规则 → 最终出口」。某网站行为不符合预期时,在日志里搜它的域名,立即能看到它命中了哪条规则、走了哪个节点,比盲目切换节点高效得多。日志级别由配置中的 log-level 控制,排查期可临时调为 debug,平时保持 info 即可。
故障速查表
| 现象 | 优先排查方向 |
|---|---|
| 所有节点延迟测试超时 | 订阅是否过期/流量用尽;本地网络能否直连;更新订阅后重测 |
| 节点延迟正常但网页打不开 | 切全局模式验证是否规则未命中;检查系统代理或 TUN 是否开启 |
| 国内网站变慢 | 是否误挂全局模式;GEOIP,CN,DIRECT 规则是否存在且未被前置规则截胡 |
| 订阅更新报错 | 按第四章三个更新开关排查,或先开「通过代理更新」再试 |
| 开机后代理不生效 | 客户端是否设了开机自启;系统代理/TUN 是否设为随启动开启 |
表内未覆盖的问题,按分类整理在常见问题页,可先在那里检索。
09进阶路线:从会用到用好
完成前八章,日常使用已经没有障碍。以下几个方向按实用性排序,可以按需继续深入。
局域网共享
把配置中的 allow-lan 设为 true(客户端界面通常有对应开关),同一局域网内的手机、电视、游戏机就能把代理地址填成这台电脑的内网 IP 加 mixed-port 端口,共用同一份代理与规则,不必每台设备单独装客户端。防火墙放行与各类设备的填写方法,见博客混合端口与局域网共享设置。
覆写与 Merge
第六章提到过:直接改订阅配置会被更新覆盖。覆写机制把你的修改(追加规则、替换 DNS 段、调整端口)写成独立文件,客户端在每次加载订阅后自动叠加,做到「订阅照常更新,自定义永久生效」。Clash Verge Rev 的实现最完整,支持 YAML 合并与脚本两种方式;建议从最简单的场景练手——为一个订阅没覆盖的域名追加一条 DOMAIN-SUFFIX 规则。
外部控制接口
内核内置 RESTful 控制接口,配置中声明 external-controller: 127.0.0.1:9090 后,可以用 HTTP 请求查询与控制内核,网页版控制面板也是基于它实现的。例如查询当前所有策略组:
curl http://127.0.0.1:9090/proxies
配合脚本可以做定时切换节点、自动化测速统计等事情,适合有开发基础的用户。
无界面部署内核
软路由或服务器场景不需要图形客户端,直接运行 mihomo 内核:从下载页内核区获取对应架构的二进制文件,配一份完整 YAML,用 systemd 托管进程,即可为整个网络提供透明代理。这条路线涉及路由与 iptables/nftables 知识,建议在桌面端把规则体系吃透之后再尝试。
接下来读什么
动手环节回到快速上手按主线操作;概念查漏可用常见问题;博客区的新手十问速答适合作为本手册的速览版转给刚入门的朋友。客户端与内核持续演进,本页会随生态变化更新,建议收藏后随查随用。