通用准备工作
无论使用哪个平台,首次配置前需要确认三件事:选定客户端、拿到订阅链接、理解配置文件的基本结构。这三件事在所有平台上完全一致,先在本章一次讲清,后面各平台章节不再重复。
选定客户端
Clash 是一套开源生态,同一份配置可以在不同客户端之间通用。各平台的推荐组合如下,安装包统一从下载页获取,各客户端的详细差异见博客文章主流 Clash 客户端横向对比。
| 平台 | 首选 | 备选 | 说明 |
|---|---|---|---|
| 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 | 注意区分 arm64 与 armv7 安装包 |
| iOS | Clash Plus(App Store) | — | 官网 clashplus.io,商店直接安装 |
| Linux | Clash Verge Rev | FlClash | 提供 deb 包;服务器场景可直接跑 Mihomo 内核 |
订阅链接
订阅链接是一个 HTTP(S) 地址,由服务商提供,内容是一份可被 Clash 解析的节点与规则清单。客户端按固定间隔拉取该地址,自动获得节点更新。准备阶段确认两点:第一,链接完整,以 https:// 开头,中间没有被聊天软件截断或加入换行;第二,链接属于敏感凭据,任何拿到它的人都能使用你的流量配额,不要发到公开群组或截图外泄。链接失效或格式不符时的表现与处理,见配置常见问题一章。
配置文件的基本结构
Clash 的配置文件是一份 YAML 文档,通常由订阅生成,理解它的骨架有助于后续排错。核心字段五组:入站端口、运行模式、节点列表、策略组、规则。一个最小可读的示例如下:
mixed-port: 7890 # HTTP 与 SOCKS 共用入站端口
allow-lan: false # 是否允许局域网设备接入
mode: rule # rule / global / direct
log-level: info
external-controller: 127.0.0.1:9090
proxies: [] # 节点列表,由订阅填充
proxy-groups:
- name: 节点选择
type: select
proxies:
- DIRECT
rules:
- DOMAIN-SUFFIX,github.com,节点选择
- GEOIP,CN,DIRECT
- MATCH,节点选择
规则自上而下匹配,命中即停止;MATCH 是兜底规则,必须放在最后。策略组的 select、url-test、fallback 等类型的详细行为,见博客文章策略组类型详解;各字段的名词解释可查概念速查。
系统代理与 TUN 模式
客户端启动后只是在本机开了一个代理端口,流量并不会自动进入。让流量进入有两条路:系统代理与 TUN 模式。系统代理是把操作系统的 HTTP/SOCKS 代理设置指向本机端口,实现简单,但只对遵守系统代理设置的应用生效;TUN 模式创建一块虚拟网卡,在网络层接管全部流量,覆盖不走系统代理的命令行工具与游戏客户端,代价是需要更高的系统权限。
日常浏览器与常规应用,系统代理已经够用。命令行工具、游戏、不读系统代理设置的软件需要接管时,再开 TUN 模式。两者同时开启没有意义,通常客户端会自动处理互斥。
三种运行模式
配置里的 mode 字段决定规则引擎的行为。rule 为规则模式,按规则列表逐条分流,是日常默认;global 为全局模式,所有流量走同一个策略组,用于临时测试节点;direct 为直连模式,全部流量不经代理,用于排查「问题是否由代理引起」。排错时在三种模式之间切换对照,是定位问题最快的手段之一。
Windows 安装配置
下载与安装
在下载页 Windows 区获取 Clash Plus 安装包,系统要求 Windows 10 64 位及以上。运行安装程序时,SmartScreen 可能弹出「Windows 已保护你的电脑」提示——这是未购买商业代码签名证书的开源软件的常见情况,点「更多信息」再点「仍要运行」即可继续。安装路径建议保持默认;若使用解压版,注意不要放在需要管理员权限的目录(如 C:\Program Files 下手动解压),否则配置写入会失败。
导入订阅与首次连接
首次启动后进入订阅(或「配置」)页面,粘贴订阅链接,点击导入。客户端会下载配置并显示节点列表。切换到代理页面,在「节点选择」策略组里挑一个节点,然后回到主界面打开「系统代理」开关。此时打开浏览器访问一个规则内的站点,能正常加载即代表链路可用。若节点全部显示超时,按博客文章节点超时排查顺序五层逐一检查。
系统代理与端口
「系统代理」开关背后做的事,是把 Windows 设置 → 网络和 Internet → 代理里的地址改为 127.0.0.1:7890(端口以客户端设置为准)。若开关打开后代理设置没有生效,先检查端口是否被其他程序占用:
netstat -ano | findstr "7890"
输出里若已有其他进程监听该端口,在客户端设置里把 mixed-port 改为 7891 等空闲值,重启客户端后再开系统代理。多个代理软件同时运行会互相改写系统代理设置,务必只保留一个在运行。
TUN 模式与服务模式
Windows 上创建虚拟网卡需要管理员权限。Clash Verge Rev 等客户端提供「服务模式」:安装一个随系统运行的后台服务,之后开关 TUN 不再需要每次弹 UAC 授权。路径通常在 设置 → 服务模式 → 安装。安装服务后打开 TUN 开关,在 设置 → 网络连接 里能看到新增的虚拟网卡即为生效。TUN 开启后建议把系统代理开关关掉,避免流量重复经过两层。
开机自启
客户端设置里通常有「开机自启」与「静默启动」两个开关:前者注册启动项,后者启动后不弹主窗口、直接驻留托盘。两个都打开,配合默认选中的订阅,可以做到开机即恢复上次的代理状态,无需手动干预。若自启失败,检查 任务管理器 → 启动应用 里该项是否被禁用。
平台特有问题
- UWP 应用(Microsoft Store 安装的应用)默认不允许回环到本机代理,部分客户端提供「UWP 回环豁免」工具,勾选对应应用后生效。
- 首次启动弹出的 Windows 防火墙询问,勾选「专用网络」并允许,否则
allow-lan场景下局域网设备无法接入。 - 卸载旧的代理软件后,系统代理设置可能残留为已失效的端口,表现为「断网」。在系统代理设置里手动关闭即可恢复。
macOS 安装配置
确认芯片架构
点按左上角苹果菜单 → 关于本机:芯片一栏显示 Apple M 系列的,下载 Apple Silicon(arm64)包;显示 Intel 的,下载 Intel(x64)包。装错架构的包在 Apple Silicon 上会经 Rosetta 转译运行,能用但性能与功耗都差一档,建议装对。安装包在下载页 macOS 区按架构分列。
安装与首次启动
打开 dmg 镜像,把应用图标拖入 Applications 文件夹,从启动台或应用程序文件夹启动。首次打开若提示「无法验证开发者」,前往 系统设置 → 隐私与安全性,在页面下方找到该应用的提示,点「仍要打开」;或在访达里右键点按应用图标选「打开」,确认一次后后续可正常双击启动。
权限授权:网络扩展与钥匙串
macOS 客户端首次运行会连续出现两到三个授权弹窗,每个都需要正确处理,否则功能残缺:
- 网络扩展/代理配置弹窗:点「允许」。这是设置系统代理与 TUN 的前提,拒绝后客户端只能提供本机端口。
- 钥匙串访问弹窗:输入登录密码后点「始终允许」而不是「允许」。点「允许」的话每次启动都会重复弹窗。
- 部分客户端还会请求安装特权助手(Helper),同样输入密码确认一次。
误点了拒绝也可以补救:前往 系统设置 → 网络 → VPN 与过滤条件,以及 隐私与安全性 → 完整磁盘访问权限,手动为客户端重新授权。完整的弹窗截图与逐项说明见博客文章macOS 安装 Clash 客户端权限全解。
系统代理与验证
导入订阅、选好节点后,打开客户端的「设置为系统代理」开关。验证是否真的写入了系统设置,可在终端执行:
networksetup -getwebproxy Wi-Fi
输出 Enabled: Yes 且端口与客户端一致即为生效。注意 macOS 的代理设置是按网络服务分别保存的:Wi-Fi 与有线以太网是两套设置,切换网络接口后若代理失效,多半是客户端只写了其中一个服务,重开一次系统代理开关即可。
TUN 模式
macOS 上开启 TUN 需要批准系统扩展或以特权助手方式创建虚拟网卡,首次打开 TUN 开关会再弹一次授权。开启后在终端执行 ifconfig | grep utun 能看到新增的 utun 接口。与 Windows 同理,TUN 开启期间关闭系统代理开关,避免双重代理。
平台特有问题
- 系统大版本升级后,网络扩展授权可能被重置,表现为客户端正常运行但流量不走代理。重新走一遍授权流程即可。
- 客户端异常退出后系统代理未复位,会出现「关了软件反而断网」。系统设置 → 网络 → 对应服务 → 详细信息 → 代理,手动取消勾选即可。
- 同时安装多个 Clash 客户端时,不要同时运行,系统代理会被反复改写,行为不可预期。
Android 安装配置
选择安装包架构
近几年的主流机型一律选 arm64-v8a 包;仅有部分老旧或入门设备是 armeabi-v7a。不确定时可先装 arm64 包,提示「解析包出错」或「未安装应用」再换 v7a。Clash Meta for Android 另提供 universal 通用包,体积更大但免去选择。安装包在下载页 Android 区按架构分列。
安装与导入订阅
浏览器下载 APK 后安装,系统会请求「允许安装未知来源应用」,在弹出的设置页里为浏览器(或文件管理器)开启该权限,返回后继续安装。首次启动客户端,进入配置/订阅页面,新建配置并粘贴订阅链接,保存后客户端自动下载并解析。列表里出现节点即导入成功。
VPN 授权与连接
Android 客户端通过系统 VpnService 接管流量,第一次点连接会弹出「连接请求」对话框,提示将创建 VPN 连接,点「确定」。此授权只需一次;状态栏出现钥匙图标即代表接管生效。之后的连接/断开都在客户端主界面一键完成。Android 没有独立的「系统代理」开关,VpnService 本身就相当于桌面端的 TUN 模式。
后台保活与电池优化
国产定制系统对后台进程管理激进,是 Android 上「用着用着断线」的头号原因。逐项处理:
- 系统设置 → 电池 → 找到客户端,电池优化策略改为「无限制」或「不优化」。
- 有「自启动管理」的系统(如 MIUI、EMUI 等),为客户端开启自启动许可。
- 最近任务界面里给客户端加锁(下拉或长按卡片,视厂商而定),防止一键清理时被杀。
分应用代理
客户端网络设置里的「访问控制」支持按应用分流:白名单模式只有勾选的应用走代理,黑名单模式勾选的应用不走代理。银行类应用对代理环境敏感,加入黑名单可以避免风控误判;游戏加入黑名单可以降低不必要的延迟。修改分应用名单后需要断开重连一次才生效。
平台特有问题
- 系统「私人 DNS」(设置 → 网络 → 私人 DNS)设置为固定服务商时,DNS 查询会绕开客户端的 fake-ip 体系,导致部分规则不生效。建议改为「自动」或关闭。
- 同一时刻系统只允许一个 VPN 连接,其他 VPN 类应用会互相顶掉,属系统行为而非故障。
- 省流量模式与 VPN 叠加时部分机型会限制后台流量,异常时优先排查系统省电与省流设置。
iOS 安装配置
App Store 安装
iOS 平台使用 Clash Plus,通过 App Store 直接安装:商店内搜索 Clash Plus,或从下载页 iOS 区进入商店详情页。应用官网为 clashplus.io,功能说明与更新记录以官网为准。iPhone 与 iPad 通用一个版本。
导入订阅
打开应用,进入订阅/配置页面,点添加,粘贴订阅链接并保存。部分版本支持读取剪贴板快速导入:先复制链接再打开应用,按提示确认即可。导入完成后节点列表出现在代理页面,选择一个节点作为当前出口。
VPN 配置与授权
首次点连接,系统弹出「"Clash Plus"想添加 VPN 配置」,点「允许」并验证锁屏密码或 Face ID。授权后系统会在 设置 → 通用 → VPN 与设备管理 → VPN 里生成对应条目,状态栏出现 VPN 标志即为连接成功。之后的连接与断开既可以在应用内操作,也可以直接在系统设置的 VPN 开关上操作,两处状态是同步的。
使用要点
- 更换订阅或大幅修改配置后,先断开再重新连接一次,让新配置完整生效。
- 应用被系统回收后 VPN 隧道通常仍由系统网络扩展维持,若发现断连,回到应用内重新连接即可。
- 规则模式、策略组等概念与桌面端完全一致,通用配置知识可直接套用本页准备工作一章与概念速查。
Linux 安装配置
客户端安装
桌面场景推荐 Clash Verge Rev,提供 deb 与 rpm 包;FlClash 提供 deb 包。安装包在下载页 Linux 区获取,用系统包管理器安装可自动解决依赖:
# Debian / Ubuntu 系
sudo apt install ./clash-verge-rev_amd64.deb
# Fedora / RHEL 系
sudo dnf install ./clash-verge-rev_x86_64.rpm
若安装时报缺少 libwebkit2gtk 等依赖,先 sudo apt update 后重试;apt install ./包名 写法(带 ./)会连同依赖一起处理,比 dpkg -i 省事。
桌面环境系统代理
Linux 的「系统代理」由桌面环境各自实现。GNOME 在 设置 → 网络 → 网络代理 里选「手动」,HTTP/HTTPS 填 127.0.0.1:7890,Socks 主机同理;KDE 在 系统设置 → 网络设置 → 代理 里配置。客户端的系统代理开关通常只对 GNOME/KDE 生效,其他桌面环境或纯终端场景用环境变量:
export http_proxy=http://127.0.0.1:7890
export https_proxy=http://127.0.0.1:7890
export all_proxy=socks5://127.0.0.1:7890
写入 ~/.bashrc 或 ~/.zshrc 可长期生效。注意环境变量只影响读取它的程序,浏览器多数读桌面环境设置而非变量。
TUN 模式与权限
创建 TUN 设备需要 root 权限或对应 capability。Clash Verge Rev 提供服务模式,安装系统服务后由服务进程以特权创建网卡,应用本身保持普通权限运行,在客户端设置里安装服务并打开 TUN 开关即可。手动运行内核的场景,可以给二进制授予能力位后以普通用户运行:
sudo setcap cap_net_admin,cap_net_bind_service=+ep /usr/local/bin/mihomo
服务器场景:直接运行 Mihomo 内核
无桌面的服务器或软路由不需要 GUI,直接运行 Mihomo 内核。把内核二进制放到 /usr/local/bin/mihomo,配置放 /etc/mihomo/config.yaml,用 systemd 托管:
[Unit]
Description=Mihomo core
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 enable --now mihomo 启动并设置自启。日志用 journalctl -u mihomo -f 实时查看;配置里开启 external-controller 后,可用任意 Clash 面板远程管理。内核各架构包同样在下载页内核区。
平台特有问题
- 发行版自带的
systemd-resolved监听 53 端口,与配置里dns.listen指定 53 的写法冲突,把 Clash 的 DNS 监听改到 1053 等端口或调整 resolved 配置。 - 防火墙(ufw/firewalld)开启时,
allow-lan需要放行对应端口,局域网设备才能接入。 - Wayland 会话下个别客户端托盘图标不显示,不影响功能,可从应用菜单重新唤起主窗口。
配置常见问题
订阅导入失败
逐项检查:链接是否完整、有没有被换行或空格截断;在浏览器里直接打开该链接,能下载到文本内容说明链接本身可达;下载到的内容若不是 YAML 而是另一种格式,说明订阅不是 Clash 格式,需要在服务商处切换目标格式或经订阅转换服务转一次。个别订阅服务器校验请求的 User-Agent,换一个客户端导入或在客户端设置里调整 UA 即可绕开。
节点全部超时
节点全红不等于节点失效,大概率是本地链路问题。检查顺序固定五层:订阅是否过期 → 本地端口是否被占用 → 系统代理开关是否真的生效 → 节点协议与内核是否匹配 → DNS 是否被污染。每层的判断方法与对应解法,展开见博客文章节点超时排查顺序。
规则不生效
三个最常见的原因,按概率排列:第一,mode 不是 rule——全局或直连模式下规则列表完全不参与决策;第二,规则顺序问题——匹配自上而下、命中即停,自定义规则写在了更宽泛的规则后面就永远轮不到;第三,目标流量走的是 DNS 已解析的 IP,DOMAIN 类规则匹配不到,需要补 IP-CIDR 规则或启用 fake-ip。修改规则后记得重载配置。
DNS 与 fake-ip
DNS 污染会让域名解析到错误 IP,表现为「节点可用但个别网站打不开」。推荐启用 fake-ip 增强模式:客户端先返回一个保留段假 IP,真正的解析放到代理链路上完成,从根上避开本地污染。参考配置:
dns:
enable: true
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.1/16
nameserver:
- 223.5.5.5
- 119.29.29.29
fallback:
- https://1.1.1.1/dns-query
fake-ip 模式下,个别依赖真实 IP 的应用(局域网发现、部分游戏)可用 fake-ip-filter 列出域名走真实解析。相关名词解释见概念速查的「网络与 DNS」分类。
端口冲突
默认入站端口 7890 被其他程序占用时,客户端可能启动失败或系统代理指向空端口。处理办法统一:改 mixed-port 为空闲端口,重启客户端,并确认系统代理设置里的端口随之更新。Windows 用 netstat -ano、macOS/Linux 用 lsof -i :7890 可查到占用进程。
YAML 语法错误
手改配置后报「配置加载失败」,九成是 YAML 语法问题。三条铁律:缩进只用空格,统一两个空格一层,绝不混用 Tab;冒号后面必须有一个空格;值里包含冒号、井号或以特殊字符开头时,整个值用引号包起来。改完先用客户端的「检查配置」功能或让内核 mihomo -t -f config.yaml 做一次语法测试,再正式加载。
订阅更新策略
订阅内容由服务商维护,节点变更靠更新拿到。建议开启客户端的自动更新,间隔 24 小时;出现大面积超时、公告说明已更换节点时,手动更新一次订阅再测。注意「更新订阅」会用远端内容覆盖本地对该配置的修改,自定义规则应写在客户端提供的覆写/合并配置里,而不是直接改订阅生成的文件。
局域网共享与设备联动
把一台已经配好的电脑当作局域网出口,手机、电视盒子、游戏主机不必各自装客户端,是家庭场景里最省事的做法。做法分三步:第一步在客户端里打开「允许局域网连接」(对应配置字段是 allow-lan: true),这一步决定内核是否监听 0.0.0.0 而不是只监听 127.0.0.1;第二步查出这台机器在局域网里的地址,Windows 用 ipconfig 看以太网或 WLAN 适配器的 IPv4 地址,macOS 与 Linux 用 ifconfig 或 ip addr,通常是 192.168.x.x 这样的私有段;第三步在其他设备的 Wi-Fi 高级设置里把 HTTP 代理填成手动,服务器写这个地址,端口写 mixed-port 的值。
这里有三个容易踩的坑必须提前说清楚。其一是防火墙:Windows Defender 默认会拦截外部机器对本机端口的访问,需要在「允许应用通过防火墙」里把客户端勾上专用网络;其二是 IP 漂移,家用路由器发的是动态地址,机器重启后地址可能变化,导致其他设备突然连不上,稳妥办法是在路由器的 DHCP 设置里给这台机器做静态绑定;其三是安全边界,allow-lan 打开后同一网段内任何设备都能借道出网,在公司、宿舍、咖啡馆这类不可信网络里不要长期开启,必要时用 lan-allowed-ips 之类的字段把来源限制在自己设备的地址上。共享链路的实际带宽由这台出口机器的上行决定,多设备同时看视频时先怀疑出口本身被打满,而不是节点质量。
看日志定位问题的方法
前面每一节给的都是「症状 → 解法」的对应关系,但真实故障往往是几个原因叠在一起,这时候唯一可靠的手段是读日志。把客户端的日志级别调到 info 或 debug,清空历史记录,然后只做一个动作:在浏览器里访问那个打不开的网站。日志里新增的几行就是这次请求的完整轨迹,重点看三样东西。第一是这条连接匹配到了哪条规则、最终走的是哪个策略组和哪个节点,如果显示的是 DIRECT,说明问题在规则而不在节点;第二是握手结果,出现 connection refused 通常是节点端口不通或服务端已下线,出现 i/o timeout 多为链路阻塞或本地网络丢包,出现证书类报错要检查系统时间是否准确;第三是 DNS 解析记录,若某个域名被解析到明显异常的地址,基本可以确认本地解析被污染,回到上面 fake-ip 那一节处理。
还有一类问题在日志里表现为「什么都没有」:你访问网站,日志一行不动。这说明流量根本没有交给客户端,方向应该转去查系统代理开关、浏览器自己的代理插件、以及是否有另一个代理程序抢占了系统设置。把这套方法固定成习惯——先复现、再读日志、按规则/握手/解析三段定位——绝大多数问题不需要凭感觉逐项试错就能收敛到一个具体环节。
升级与回滚的稳妥做法
客户端与内核都在持续迭代,升级能拿到新协议支持和性能改进,但也有一定概率带来配置不兼容。建议按下面的顺序操作:升级前先把当前配置文件、覆写规则、以及客户端目录下的核心配置整体复制一份到别处,文件名带上日期;升级后不要立刻切回复杂配置,先用一个只含单节点的最小配置确认基本链路可用;确认无误再逐步加回策略组、规则集和 DNS 自定义段,每加一段就重载一次,出问题时立刻知道是哪一段引起的。
如果新版本确实不可用,回滚同样有讲究:卸载新版后要检查配置目录是否被新版本改写过字段格式,必要时用备份文件整体替换,而不是在被改写的文件上继续手改。已经停止维护的老客户端不建议长期停留,它们的内核不再跟进协议变化,过一段时间会出现「节点在别的客户端能用、在这里连不上」的情况;真正需要迁移时,导出订阅链接与自定义规则,再按下载页标注为「持续更新」的项目重新配置一遍即可。