CH-01 PREPARE · 通用准备
开始之前:内核、订阅与两种接管方式
本章解决三件事:弄清客户端与内核的分工、准备好可用的订阅链接、理解系统代理与 TUN 两种流量接管方式的差异。这些概念贯穿后面五个平台章,先花几分钟读完,能省掉大量重复排查。
客户端与内核的分工
日常所说的 Clash 实际由两层组成:内核负责流量转发、规则匹配与 DNS 处理;图形客户端负责界面、订阅管理和系统设置写入。目前主流客户端普遍搭载 Mihomo 内核,本文提到的 TUN、fake-ip、规则匹配等能力全部由内核提供,客户端只是把它们做成可视化开关。理解这一点之后,很多现象就有了解释:不同客户端的核心行为高度一致,差异集中在界面与平台集成;客户端版本与内核版本是两条更新线,互不等同;某个功能「这个客户端有、那个没有」,多数只是界面没暴露,内核层其实都在。
客户端选型不必纠结:各平台第一推荐均为 Clash Plus,Linux 桌面推荐 Clash Verge Rev,完整清单与安装包见客户端下载页,界面、内核与维护状态的横向对比见《主流 Clash 客户端怎么选》。
订阅链接:按凭证级别保管
订阅链接是一个 HTTP(S) 地址,由服务商生成,客户端访问它即可拉取包含节点与规则的完整配置。两点常识:第一,订阅链接等同于账户凭证,泄露即等于账号共享,不要粘贴到公开场合;第二,不同服务商输出的格式不完全一致,常见 Clash YAML 与 Base64 两类,兼容情况与转换方法见《Clash 订阅格式科普》。导入前先确认拿到的是订阅链接本身,而不是单个节点的分享链接——后者只描述一个节点,无法生成完整的规则集。
系统代理与 TUN:两种接管方式
全平台的流量接管只有两条路径。系统代理:客户端在本机开一个监听端口(常见 7890),并把「127.0.0.1:端口」写进操作系统的代理设置,凡是遵守系统代理的应用(浏览器与多数联网软件)流量都会经过它;实现轻、开销小,但命令行工具、部分游戏与系统组件会绕过它。TUN 模式:内核创建一张虚拟网卡,在网络层接管全部出站流量,覆盖不读代理设置的程序;代价是需要更高权限——Windows 装系统服务、macOS 授权辅助工具、Linux 要 root 或能力授权、移动端走系统 VPN 授权。
一条铁律贯穿全文:同一时刻只开一种接管方式。系统代理与 TUN 叠加会造成流量回环、DNS 异常等难以定位的问题,第八章里多数「玄学故障」的根源都在这里。术语不熟悉时,随时查概念速查。
安装前检查清单
- 确认系统版本满足基线:Windows 10 64 位及以上、macOS 11 及以上为常见要求,更早的系统请在下载页各平台说明中核对。
- 手边有可用的订阅链接,并确认它在浏览器中能返回内容——返回一段 YAML 文本或一长串编码字符都属正常。
- 具备管理员 / root 权限,TUN 模式与系统服务安装都需要它。
- 先退出或卸载其他代理、加速类软件:它们与 Clash 抢占端口和虚拟网卡,是安装阶段最常见的故障源。
五个平台的总览如下,点击锚点直达对应章节:
CH-02 WINDOWS · 平台章
Windows:安装、系统代理与 TUN 服务
Windows 是配置项最多的平台:安装拦截、系统代理写入、TUN 服务安装、UWP 回环限制各有一道坎,本章按操作顺序逐一说明。
下载与安装
前往下载页 Windows 分区获取安装包,首推 Clash Plus,备选 Clash Verge Rev、FlClash 与 Clash Nyanpasu;Clash for Windows 已停止维护,仅作归档保留,不建议新装。安装包为 .exe,双击运行即可。若出现 SmartScreen 蓝色拦截窗,点「更多信息」→「仍要运行」,这是系统对新分发安装包的常规提示,不代表文件有问题。安装路径建议保留默认,或至少避免中文与空格目录——个别内核组件解析带中文路径的配置目录时会静默失败,事后排查的成本远高于换个路径。安装完成后首次启动,Windows 防火墙可能弹窗询问,勾选专用网络并允许访问。
导入订阅
打开客户端,进入「订阅」或「配置」页,粘贴订阅链接后点导入 / 更新。成功的标志是配置列表出现新条目,且「代理」页能看到节点分组。若导入报错,先在浏览器里直接访问该链接确认可达,再对照第八章的订阅故障小节处理。导入成功后建议顺手打开订阅自动更新,间隔设 12~24 小时即可。
开启系统代理
在客户端主界面打开「系统代理」开关,其本质是把 127.0.0.1 加混合端口(默认多为 7890)写入 Windows 代理设置。验证方式:打开「设置 → 网络和 Internet → 代理」,「使用代理服务器」应为开启且地址一致;浏览器访问一个境外站点确认连通,再用 IP 查询站点确认出口地址已变化。特别提醒:关闭客户端前先关掉系统代理开关。直接结束进程可能把代理设置残留在系统里,表现为退出客户端后整机断网——遇到这种情况,到系统代理设置里手动关闭即可恢复。
开启 TUN 模式
需要让命令行工具、游戏或系统组件也走代理时,改用 TUN 模式。首次开启时客户端会请求安装系统服务(需要管理员确认),该服务负责以高权限拉起内核并创建虚拟网卡。开启成功后,「网络连接」里会多出一块 Mihomo / WinTun 虚拟网卡。开启 TUN 的同时请关闭系统代理开关,两者叠加会造成流量回环或 DNS 异常。若服务安装失败,以管理员身份重新运行客户端再试;反复失败时先在客户端设置里卸载残留服务,再重新安装。
平台特有坑
- 端口被占:安全软件、开发调试工具常占用 7890,表现为系统代理开了但全网不通。定位与改端口方法见第八章端口冲突小节。
- UWP 应用回环:商店应用默认禁止访问本机回环地址,导致它们不走代理。部分客户端提供「UWP 回环豁免」工具,勾选目标应用后生效。
- 杀毒误报:内核创建虚拟网卡与系统服务的行为可能被安全软件拦截。安装前把安装目录加入信任区,比事后逐条放行省事。
- 残留网卡:多次装卸不同客户端后,可能出现无人使用的 TAP / WinTun 幽灵网卡,可在设备管理器的「网络适配器」中卸载。
- 开机自启:在客户端设置中开启,而不是手动把快捷方式丢进启动目录——前者会连同系统服务一起按正确顺序拉起。
系统代理与 TUN 只开一个。切换方式时先关旧的、再开新的,顺序颠倒是 Windows 上「切完就断网」的头号原因。
CH-03 MACOS · 平台章
macOS:芯片选择、安全授权与系统代理
macOS 章的重点在两处:装对芯片架构的安装包,以及走通系统的安全授权链。授权只在首次与版本更新后出现,一次配好长期有效。
芯片与安装包选择
macOS 安装包按芯片分为 Apple Silicon(arm64)与 Intel(x64)两个版本。点按左上角苹果菜单 →「关于本机」,「芯片」一栏显示 Apple M 系列即选 arm64,显示 Intel 即选 x64。装错架构的直接表现是首次启动崩溃,或转译运行导致性能明显下降。客户端选择与 Windows 类似:首推 Clash Plus,备选 Clash Verge Rev、FlClash;ClashX Meta 已停止维护,仅作归档。前往下载页 macOS 分区获取 dmg,打开后把应用图标拖入 Applications 文件夹即完成安装。
首次启动与安全授权
首次打开可能提示「无法验证开发者」或「来自身份不明的开发者」。处理路径:打开「系统设置 → 隐私与安全性」,在页面下方找到被拦截应用的提示,点「仍要打开」。之后客户端写入系统代理、安装辅助服务时还会各弹一次授权,输入登录密码或按 Touch ID 确认即可。这些授权只在首次启动和大版本更新后出现,不会每次都问。
导入订阅与系统代理
导入流程与其他平台一致:订阅页粘贴链接 → 更新 → 代理页确认节点分组出现。打开「系统代理」后,验证入口在「系统设置 → 网络 →(当前接口)→ 详细信息 → 代理」:Web 代理(HTTP)与安全 Web 代理(HTTPS)应指向 127.0.0.1 与客户端端口。注意 macOS 的代理设置按网络服务(Wi-Fi、有线、雷雳网桥)分别保存,从 Wi-Fi 切到有线后如果代理失效,重开一次系统代理开关,让客户端写入当前活动接口即可。
开启 TUN 模式
macOS 上开启 TUN 需要客户端以更高权限运行内核:首次开启会请求安装特权辅助工具或授权网络扩展,按提示确认。成功后在终端执行 ifconfig 可见新增的 utun 接口。与 Windows 相同,TUN 与系统代理二选一。若开启 TUN 后无法上网,优先检查 DNS 设置是否被旧配置覆盖,以及是否有企业安全软件占用了网络扩展通道。
平台特有坑
- 退出残留:强制退出客户端(而非正常退出)会把系统代理留在开启状态,表现为断网。到网络设置里手动关闭代理,或重开客户端再正常退出。
- 系统升级:大版本升级后安全授权可能被重置,首次启动重新走一遍「隐私与安全性」放行即可,配置不会丢。
- MDM 设备:公司统一管理的 Mac 可能通过描述文件锁定代理与 VPN 设置,这类限制客户端无法绕过,需联系设备管理员。
- 多客户端并存:同时安装多个 Clash 系客户端没有问题,但同一时刻只运行一个,否则它们会互相抢写系统代理设置。
CH-04 ANDROID · 平台章
Android:VPN 授权与后台保活
Android 没有独立的系统代理开关,客户端一律通过系统 VPN 接口接管流量,效果等价于 TUN。本章的重点是装对架构、给足授权、做好保活。
下载与 ABI 选择
Android 安装包按处理器架构(ABI)区分:近几年的主流机型一律选 arm64-v8a;老旧或入门设备可能是 armeabi-v7a;不确定架构就选 universal 通用包,体积更大但全兼容。客户端顺序与下载页一致:首推 Clash Plus,备选 Clash Meta for Android、FlClash、Surfboard,安装包在下载页 Android 分区获取。
安装与 VPN 授权
安装 APK 时系统会拦一次「不允许安装未知应用」:进入设置,为当前安装来源(浏览器或文件管理器)开启允许后返回继续。首次点击客户端的连接按钮,系统弹出「连接请求」对话框——这是 Android 的 VpnService 授权,必须允许;授权通过后状态栏出现钥匙图标,表示隧道已建立。此授权按应用记忆,卸载重装后需要重新给一次。
导入订阅
在配置 / 订阅页粘贴链接导入,部分客户端支持扫码与从剪贴板一键识别。移动网络环境下建议开启订阅自动更新,把间隔设为 24 小时左右,节点变更不至于滞后太久;更新失败的典型原因与处理见《Clash 订阅更新失败怎么办》。
后台保活
国产定制系统对后台进程的清理非常激进,「连接用着用着断开」「锁屏一段时间后断流」多半是客户端被系统杀掉了。处理三件套:一,在系统电池设置中把客户端设为「无限制 / 不优化」;二,在自启动管理(各厂商叫法不同)中允许其自启与后台运行;三,在多任务界面给客户端窗口上锁。三项都做,长时间保活才有保障,只做其中一项在部分机型上仍会被杀。
平台特有坑
- 私有 DNS 冲突:系统「私有 DNS」(DoT)设为指定主机名时,DNS 查询可能绕过客户端,造成分流异常,建议改回「自动」。
- VPN 互斥:Android 同一时刻只允许一个应用持有 VpnService,开启 Clash 会顶掉其他 VPN 类应用,反之亦然,属系统行为。
- 分应用代理:客户端普遍支持按应用的允许 / 排除名单;对网络环境敏感的银行类应用,可加入排除名单走直连。
- 省电模式:激进省电模式会限制后台网络,长时间挂机场景建议关闭,或至少为客户端单独豁免。
- 重启行为:部分系统重启后 VPN 授权仍在但不自动连接,需要客户端的「开机自动连接」选项配合自启动权限一起开。
CH-05 IOS · 平台章
iOS:App Store 安装与 VPN 配置
iOS 客户端经 App Store 分发,配置流程是五个平台中最短的;注意点集中在 VPN 配置的管理与网络切换后的隧道行为。
获取客户端
iOS 平台首推 Clash Plus,在 App Store 搜索安装即可,商店直达入口见下载页 iOS 分区;客户端官网为 clashplus.io,平台支持情况与功能说明可在官网查阅。App Store 版本随商店自动更新,不需要手动下载安装包,这也是 iOS 章没有「架构选择」环节的原因。
导入订阅与首次连接
打开客户端进入订阅页,粘贴订阅链接导入;iOS 上更快的方式是先在 Safari 里复制链接,客户端启动时会识别剪贴板并询问是否导入,确认即可。首次点击连接,系统弹出「"Clash Plus"想添加 VPN 配置」对话框,点「允许」并用面容 / 触控 ID 或密码确认——这是 iOS 网络扩展的标准授权,配置会出现在「设置 → 通用 → VPN 与设备管理 → VPN」列表中。连接成功后状态栏出现 VPN 字样,表示隧道已建立。
模式选择与节点切换
iOS 客户端同样提供规则 / 全局 / 直连三种模式,日常保持规则模式即可,三种模式的行为差异见《规则模式、全局模式、直连模式区别详解》。节点切换在代理页完成:先对分组做一次延迟测试,选择数值低且稳定的节点;切换节点不需要断开重连,隧道保持不动,内核在内部完成出站变更。
系统 VPN 设置的边界
「设置」里的 VPN 开关与客户端内的连接按钮控制的是同一条隧道:从系统设置关闭 VPN,客户端会同步显示断开。删除 VPN 配置(设置 → 通用 → VPN 与设备管理)相当于收回授权,下次连接时客户端会重新请求添加。多个代理类应用各自维护自己的 VPN 配置,同一时刻只能激活一个,互相顶替属系统行为,不是故障。
平台特有坑
- 网络切换重连:Wi-Fi 与蜂窝之间切换时隧道会短暂重建,出现几秒断流属正常;若长时间不恢复,手动断开重连一次。
- 低数据模式:蜂窝或 Wi-Fi 开启「低数据模式」会限制后台流量,影响订阅自动更新与隧道稳定性,建议对常用网络关闭。
- 按需连接:部分客户端提供「按需连接」规则,系统会在网络活动时自动拉起 VPN;如果发现 VPN「关不掉、自动又开」,先在客户端里关闭按需连接再断开。
- 地区账号:App Store 应用的可见性随商店地区不同而变化,搜索不到时以下载页给出的商店链接直达为准。
- 省电影响:iOS 低电量模式会收紧后台活动,长时间锁屏后首次访问偶见延迟升高,亮屏后自行恢复。
CH-06 LINUX · 平台章
Linux:桌面客户端、环境变量与 TUN 权限
Linux 章分两条线:桌面用户装 GUI 客户端,流程与其他平台接近;服务器与路由器用户直接跑 Mihomo 内核,靠配置文件与 systemd 管理。两条线在本章都给出完整步骤。
桌面客户端安装
Linux 桌面推荐 Clash Verge Rev,备选 FlClash,安装包在下载页 Linux 分区获取。Debian / Ubuntu 系用 deb 包安装:
sudo apt install ./clash-verge-rev_amd64.deb
用 apt install ./包名 而不是 dpkg -i,前者会自动补齐依赖。Fedora 系用对应的 rpm 包配 dnf install。装完后从应用菜单启动,导入订阅的操作与其他平台一致:订阅页粘贴链接 → 更新 → 代理页确认节点分组。
代理生效的三种方式
Linux 上「系统代理」不是单一开关,常用三种方式按覆盖面递增排列。其一,桌面环境代理:GNOME / KDE 的网络设置里有代理配置项,GUI 客户端的「系统代理」开关写的就是这里,对遵守该设置的桌面应用生效。其二,环境变量:终端与多数命令行工具读取以下变量:
export http_proxy=http://127.0.0.1:7890
export https_proxy=http://127.0.0.1:7890
export no_proxy=localhost,127.0.0.1
临时使用直接在当前终端执行,长期使用写入 ~/.bashrc 或 ~/.zshrc。注意环境变量只影响之后新开的进程,已经在跑的程序不会感知。其三,TUN 模式:覆盖全部流量,包括不读环境变量的程序。GUI 客户端里开启 TUN 需要授权,Clash Verge Rev 会引导安装特权服务;手动跑内核则需要 root,或对二进制授予网络能力:
sudo setcap 'cap_net_admin,cap_net_bind_service=+ep' ./mihomo
服务器:内核 + systemd
无桌面环境直接使用 Mihomo 内核。从下载页内核分区获取对应架构的压缩包(x86 服务器选 amd64,ARM 设备按位数选 arm64 或 armv7),解压后放入 /usr/local/bin,配置文件放 /etc/mihomo/config.yaml。用 systemd 托管:
[Unit]
Description=Mihomo Daemon
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/mihomo -d /etc/mihomo
Restart=on-failure
[Install]
WantedBy=multi-user.target
保存为 /etc/systemd/system/mihomo.service,然后:
sudo systemctl daemon-reload
sudo systemctl enable --now mihomo
journalctl -u mihomo -f
最后一条命令实时查看内核日志,首次启动务必看一眼:配置语法错误、端口占用都会在这里直接报出来。修改配置后用 systemctl restart mihomo 重启生效。
平台特有坑
- 发行版差异:Arch 系可从 AUR 获取打包,但版本与官方安装包可能不同步,出问题先对照下载页的官方包排除打包因素。
- Wayland 托盘:部分 Wayland 桌面对托盘图标支持不完整,客户端窗口关闭后找不到入口,可从应用菜单再次启动唤出主窗口。
- DNS 接管:开启 TUN 后若解析异常,检查 systemd-resolved 是否与内核 DNS 劫持冲突,必要时在配置的 dns 段调整监听。
- 防火墙:启用了 firewalld / ufw 的机器,若局域网内其他设备要借用代理,需放行混合端口并在配置中开启
allow-lan: true。 - 路由器设备:MIPS 等嵌入式架构选 mips-softfloat 内核包,资源有限的设备建议精简规则数量,降低内存占用。
CH-07 CONFIG · 跨平台通用
配置文件与订阅:结构、字段与更新机制
五个平台的客户端最终都在驱动同一份 YAML 配置。看懂它的结构,就能脱离「界面点哪儿」的层面,直接理解客户端每个开关背后改的是什么。本章不要求手写配置——订阅已经生成了完整内容——但要求能读懂。
顶层结构总览
一份典型配置的骨架如下:
mixed-port: 7890
allow-lan: false
mode: rule
log-level: info
dns:
enable: true
enhanced-mode: fake-ip
proxies:
- name: "节点A"
type: vless
server: example-server.com
port: 443
proxy-groups:
- name: "PROXY"
type: select
proxies: ["节点A", "自动选择"]
- name: "自动选择"
type: url-test
proxies: ["节点A"]
url: https://www.gstatic.com/generate_204
interval: 300
rules:
- DOMAIN-SUFFIX,github.com,PROXY
- GEOIP,CN,DIRECT
- MATCH,PROXY
六个部分各司其职:通用字段定义端口与运行模式;dns 段决定域名解析策略;proxies 是节点清单;proxy-groups 把节点组织成可选择的策略组;rules 决定每条连接进哪个组。客户端界面上的「代理页」渲染的就是 proxy-groups,「模式切换」改的就是 mode 字段。
常用字段速查
| 字段 | 常见取值 | 说明 |
|---|---|---|
| mixed-port | 7890 | HTTP 与 SOCKS 合一的混合监听端口,系统代理指向它 |
| allow-lan | false / true | 是否允许局域网设备连入本机端口借用代理 |
| mode | rule / global / direct | 规则分流 / 全部走代理 / 全部直连 |
| log-level | info / debug | 日志级别,排查问题时临时调 debug |
| enhanced-mode | fake-ip / redir-host | DNS 增强模式,fake-ip 为多数场景默认 |
| interval | 300 | url-test 组的自动测速间隔,单位秒 |
规则如何匹配
rules 列表自上而下逐条匹配,命中即停,末尾的 MATCH 是兜底。常见规则类型:DOMAIN-SUFFIX 按域名后缀、DOMAIN-KEYWORD 按域名关键词、GEOIP 按目标 IP 归属地、IP-CIDR 按 IP 段。理解「顺序敏感、命中即停」这一点,就能解释很多分流疑问:某网站没按预期走代理,通常是它在更靠前的位置命中了另一条规则。三种 mode 的取舍见《规则模式、全局模式、直连模式区别详解》。
订阅更新的行为细节
更新订阅时,客户端重新拉取远端 YAML 并整体替换本地配置——这意味着直接改配置文件的手动修改会在下次更新时被覆盖。需要长期定制(追加自定义规则、改端口)时,使用客户端提供的覆写 / 合并机制(如 Clash Verge Rev 的 Merge / Script),把改动声明在订阅之外,每次更新后自动重新套用。自动更新建议全平台开启,间隔 12~24 小时;更新失败的分类排查见《Clash 订阅更新失败怎么办》,格式不兼容时的转换方案见《Clash 订阅格式科普》。
YAML 对缩进与冒号后的空格敏感,手动编辑后内核报「配置解析失败」,九成是缩进层级或中英文冒号问题。改完先在客户端里重载一次验证,再退出编辑器。
CH-08 ISSUES · 跨平台通用
配置常见问题:按症状定位
本章收录五个平台共通的高频故障,按症状组织,每条给出定位路径与处理动作。单点问答的更多条目见帮助中心。
订阅导入或更新失败
按三步定位。第一步,浏览器直接访问订阅链接:打不开说明链接失效或本机网络不通,前者找服务商重新获取,后者先临时用可用节点全局模式拉一次订阅再恢复。第二步,浏览器能打开但客户端报错:多为服务商按 User-Agent 限制了客户端访问,或返回格式与客户端不兼容——前者在客户端订阅设置里调整 UA,后者需要格式转换。第三步,导入成功但节点列表为空:拿到的可能是单节点分享链接而非订阅链接,或订阅内容为 Base64 而客户端只认 YAML。完整排查线见对应技术笔记。
开了代理但无法上网
从近到远逐层检查。本机层:确认系统代理与 TUN 没有同时开启,确认没有其他代理软件在后台抢占;查看客户端日志(或 Linux 上 journalctl -u mihomo)有无端口占用报错。节点层:在代理页做延迟测试,全部超时说明订阅整体故障或本机到服务器的链路不通,换一个分组或联系服务商;个别超时则只是该节点故障,切换即可。规则层:能开境外站点但个别网站异常,多为规则命中不符合预期,把模式临时切到全局验证——全局正常而规则模式异常,即可确认是规则问题。
端口冲突
症状:客户端日志出现 bind / listen 失败,或系统代理开启后全网不通。Windows 用 netstat -ano | findstr 7890、macOS / Linux 用 lsof -i :7890 找到占用进程;要么退出占用者,要么在客户端设置里把混合端口改成 7891 等空闲端口。注意改端口后系统代理指向会由客户端自动同步,但写死在环境变量或第三方软件里的旧端口需要手动更新。
DNS 污染与解析异常
症状:延迟测试正常但网页打不开,或域名解析到明显错误的地址。处理顺序:确认配置 dns 段 enable: true 且 enhanced-mode: fake-ip;检查系统层是否有别的 DNS 组件截胡(Android 私有 DNS、Linux systemd-resolved、路由器 DNS 缓存);切换 TUN 与系统代理两种接管方式对比验证,能区分问题出在解析层还是转发层。fake-ip 模式下个别老旧应用不适应虚拟 IP,可在 dns 段的 fake-ip-filter 中把相关域名排除。
速度慢
先分层再动手:节点本身(同一节点在其他设备上是否同样慢)、传输线路(高峰时段是否规律性变慢、换协议是否改善)、本地配置(规则数量是否过多、DNS 是否绕远)。三层各自的测试方法与处理动作展开在《Clash 网速慢的分层排查方法》,这里不重复。经验上,把「慢」先量化成延迟数值与带宽数值,再决定换节点还是调配置,比凭感觉换来换去有效得多。
客户端更新与配置迁移
升级客户端不影响订阅与配置,它们保存在用户数据目录,覆盖安装即可。换客户端或换设备时,不必导出旧配置,把订阅链接在新环境重新导入一遍最干净——配置由订阅生成,链接本身就是完整的迁移凭证。唯一需要手动搬的是覆写 / 合并脚本这类订阅之外的本地定制。跨客户端迁移(例如从已停止维护的 Clash for Windows 迁出)同理,选型参考客户端横向对比,安装包一律从下载页获取。
一次只改一个变量:换节点、换模式、换接管方式、改 DNS,每改一处验证一次。同时改多处即使碰巧修好,也不知道是哪一步起效,下次复发仍要从头再来。