MANUAL

Clash 从零到精通完整手册

共 9 章 · 线性推进 · 可按目录锚点查阅

本页是站内信息量最大的一篇长文,按照「核心概念 → 选客户端 → 安装 → 订阅 → 代理模式 → 规则分流 → TUN → 日常维护 → 进阶路线」的顺序逐章展开,每章解决一个阶段的问题。如果只想在十分钟内把代理跑起来,先读快速上手,那边是最短操作主线;本页负责把主线上被省略的原理、参数与平台差异补齐,遇到不确定的设置随时回来对照。安装包统一从安装包页面获取,零散疑问可查常见问题

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选客户端:平台对照与推荐顺序

不同平台可用的客户端不同,功能侧重也有差异。下表按平台列出本站安装包页面收录的客户端,与下载页的排序一致:

平台客户端(按推荐顺序)备注
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注意按 CPU 架构选 APK,见第三章
iOSClash Plus(App Store 上架)官网 clashplus.io,需以商店页面为准
LinuxClash 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 格式即可。

导入步骤

  1. 在服务商面板复制订阅链接。链接包含身份令牌,等同于账号凭据,不要发给他人或贴到公开场合。
  2. 打开客户端的「订阅」或「配置」页面,点击新增/导入,粘贴链接确认。客户端会立即下载并解析,成功后列表中出现一条带流量与到期信息的配置项。
  3. 点选该配置将其设为当前使用的配置文件(部分客户端导入后自动选中)。切到「代理」页面应能看到策略组与节点列表,说明解析成功。

更新设置

订阅内容会随服务商调整节点而变化,长期不更新会出现节点全部超时的情况。客户端里与更新相关的设置有三个:更新间隔(建议 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-groupsrules 两段配合完成:策略组回答「可以走哪些出口」,规则回答「什么流量走哪个组」。订阅生成的配置已经内置一套分流,本章讲清它的工作原理,便于读懂现有配置并按需修改。

策略组的四种常用类型

  • 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」这个额外步骤;本章主要针对桌面端。

开启步骤

  1. 授予权限。创建虚拟网卡需要提升权限:Windows 以管理员身份运行客户端(或在设置中安装系统服务实现免提权);macOS 首次开启时按弹窗安装网络扩展;Linux 在客户端设置里对内核执行一键授权。
  2. 在客户端设置中打开 TUN 开关。开启后系统网络连接列表会多出一块名称含 utun 或 Clash 字样的网卡,即为生效标志。
  3. 关闭系统代理开关。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 知识,建议在桌面端把规则体系吃透之后再尝试。

接下来读什么

动手环节回到快速上手按主线操作;概念查漏可用常见问题;博客区的新手十问速答适合作为本手册的速览版转给刚入门的朋友。客户端与内核持续演进,本页会随生态变化更新,建议收藏后随查随用。

下载客户端