先分清 VpnService、代理端口与 TUN 模式
Android 上的 Clash 类客户端通常通过系统提供的 VpnService 接管应用流量。这里的“VPN”指 Android 的本地流量入口:客户端建立虚拟网络接口,把数据交给 Clash Meta(mihomo)等核心,再按照配置中的规则决定直连、拒绝或转发到代理节点。状态栏出现钥匙或 VPN 标记,只能说明系统 VPN 接口处于连接状态,不等于节点一定可用,也不等于每个域名都经过代理。
这与手工填写 HTTP 或 SOCKS 代理不同。手工代理通常只影响明确支持代理设置的应用,常见监听端口包括 7890、7891 或配置中的 mixed-port;VpnService 则可以接收普通应用发出的 TCP、UDP 和 DNS 流量。Android 客户端界面中的“VPN 模式”“服务模式”或“启动”按钮,大多是在控制这条 VpnService 通道。
| 项目 | 作用范围 | 典型用途 | 常见误区 |
|---|---|---|---|
| VpnService | 系统交给当前 VPN 应用的流量 | Android 日常全局接管与按应用分流 | 图标存在不代表节点连通 |
| HTTP/SOCKS 端口 | 主动连接该端口的应用 | 浏览器调试、局域网设备手工代理 | 不是所有 Android 应用都读取系统代理 |
| mihomo TUN | 由核心创建或管理的虚拟网络流量 | 透明接管、UDP 与复杂路由 | 客户端已管理 VPN 时不应重复开启另一套入口 |
| 按应用代理 | 选定应用或排除应用 | 银行、游戏、流媒体分别处理 | 选错“包含”与“排除”会导致应用绕过代理 |
TUN 配置不要与客户端开关重复
部分 Android 客户端由界面统一创建 VpnService,并自动把流量送入内置核心;另一些客户端允许直接读取配置中的 tun 段。应以该客户端的说明和运行日志为准。若启动后日志连续出现接口创建失败、地址占用或路由重复,先恢复客户端默认的服务模式,不要同时叠加多个 TUN 开关。
mixed-port: 7890
mode: rule
log-level: info
ipv6: true
tun:
enable: true
stack: mixed
auto-route: true
strict-route: true
dns-hijack:
- any:53
上面的配置展示的是 mihomo 常见字段,不是所有 Android 客户端都要求手工添加。尤其是 strict-route、IPv6 和 DNS 劫持策略,会受到系统版本、核心版本与客户端封装方式影响。首次排查应先使用客户端生成的默认配置,确认基本连接成功后再逐项修改。
正确处理 VpnService 授权弹窗
首次启动服务时,Android 会显示由系统生成的连接请求,内容通常包含“此应用想要设置 VPN 连接”。确认后,系统才允许应用调用 VpnService.Builder 建立虚拟接口。该授权属于应用级权限,不是订阅权限,也不是节点账号登录。拒绝授权后,客户端可以加载配置和测试节点,但无法接管其他应用的流量。
首次连接的建议顺序
- 先导入有效订阅或本地配置,等待配置解析完成。
- 在客户端中选择一个策略组和可用节点,不要只停留在“自动选择”但没有测速结果的状态。
- 点击“启动”“连接”或“服务模式”,在系统弹窗中选择“确定”。
- 看到状态栏 VPN 标记后,打开客户端日志,确认核心已经监听本地端口并完成网络接口初始化。
- 分别访问一个应直连的网站和一个应代理的网站,检查规则命中记录,而不是只看首页延迟数字。
如果授权弹窗完全不出现,先检查屏幕上是否存在悬浮窗、护眼遮罩、自动点击工具或密码管理器覆盖层。部分 Android 版本会阻止被其他窗口遮挡的安全确认按钮。关闭相关悬浮层,返回客户端重新点击启动即可。按钮呈灰色时,也可以先锁屏再解锁,或从最近任务中移除客户端后重新打开。
已经授权仍然连接失败
- 另一 VPN 正在运行:进入「设置」→「网络和互联网」→「VPN」,断开其他配置后再启动客户端。
- 始终开启 VPN 指向旧应用:点开对应 VPN 配置,关闭“始终开启的 VPN”与“阻止未使用 VPN 的连接”,再重新选择当前客户端。
- 工作资料有独立策略:企业设备管理可以禁止用户建立 VPN,需查看工作资料中的管理员限制。
- 应用数据迁移后授权异常:备份恢复到新手机时,VPN 授权通常需要重新确认。卸载重装也会清除原授权。
- 核心未成功启动:查看日志中是否出现配置语法错误、端口占用、订阅文件为空或配置引用文件缺失。
省电白名单为什么直接影响代理稳定性
屏幕熄灭后,Android 会逐步进入应用待机与 Doze 状态。系统可能限制后台执行、网络访问、定时任务和进程恢复。VpnService 虽然通常以前台服务运行并显示常驻通知,但厂商系统还会叠加自己的后台清理、自动启动和耗电控制。结果可能是钥匙图标消失、客户端进程被杀、切换网络后无法重建隧道,或者通知仍在但核心进程已经停止响应。
省电白名单不是让应用持续高负载运行,而是允许它在屏幕关闭、Wi-Fi 与蜂窝网络切换时维持必要的前台服务。设置完成后仍应观察实际耗电。正常待机期间,耗电会受规则数量、DNS 查询、连接活跃度、UDP 会话和信号质量影响;不能用单一百分比判断客户端是否异常。
原生 Android 与 Pixel
Android 14、Android 15 的常见路径是「设置」→「应用」→「查看所有应用」→选择客户端→「应用电池用量」,打开“允许后台使用”,并在可选项中选择“不受限制”。部分版本显示为「设置」→「应用」→选择客户端→「电池」→「不受限制」。随后进入「设置」→「网络和互联网」→「VPN」,确认当前客户端没有被旧的始终开启配置替代。
Samsung One UI
One UI 6 与 One UI 7 可先进入「设置」→「应用程序」→选择客户端→「电池」→「无限制」。再检查「设置」→「设备维护」→「电池」→「后台使用限制」→「从不自动休眠的应用程序」,把客户端加入列表。如果它已经出现在“深度休眠应用程序”中,应先从该列表移除。
小米 HyperOS 与 MIUI
HyperOS 常见路径是「设置」→「应用设置」→「应用管理」→选择客户端→「省电策略」→「无限制」。然后进入「设置」→「应用设置」→「授权管理」→「后台自启动」,允许该客户端自启动。旧版 MIUI 也可能在应用详情页直接显示“自启动”开关。最近任务界面的锁定图标只能降低手动清理概率,不能替代省电策略与后台自启动设置。
OPPO、OnePlus 与 realme
ColorOS 与 realme UI 的菜单名称会随版本变化。常见入口为「设置」→「应用」→「应用管理」→选择客户端→「耗电管理」,打开“允许后台活动”;再进入「设置」→「电池」→「更多设置」→「优化电池使用」或「应用耗电管理」,把客户端设为“不优化”。OnePlus 的部分版本使用「设置」→「应用」→「特殊应用权限」→「电池优化」路径。
vivo 与 iQOO
OriginOS 常见路径为「设置」→「应用与权限」→「应用管理」→选择客户端→「电池」或「耗电管理」,允许“后台高耗电”。还应在「设置」→「电池」→「后台耗电管理」中找到客户端并选择允许后台运行。若系统管家提供“自启动”列表,也要允许客户端在系统回收进程后恢复服务。
华为与荣耀
HarmonyOS 常见路径为「设置」→「应用和服务」→「应用启动管理」。找到客户端后关闭自动管理,手动允许“自启动”“关联启动”和“后台活动”。荣耀 MagicOS 的对应入口通常也位于应用启动管理或电池优化页面。设置完成后不要直接使用系统管家的“一键优化”再次关闭这些权限。
| 系统 | 关键设置 | 还需检查 |
|---|---|---|
| Pixel / 原生 Android | 应用电池用量→不受限制 | 始终开启 VPN |
| Samsung One UI | 应用程序→电池→无限制 | 从不自动休眠列表 |
| 小米 HyperOS | 省电策略→无限制 | 后台自启动 |
| ColorOS / realme UI | 允许后台活动 | 电池优化设为不优化 |
| OriginOS | 允许后台高耗电 | 后台耗电管理 |
| HarmonyOS / MagicOS | 手动管理应用启动 | 自启动、关联启动、后台活动 |
厂商会在系统更新后调整菜单名称。如果按表格找不到入口,可以在系统设置顶部搜索“电池优化”“后台活动”“自启动”或“应用启动管理”。最终目标是三项:允许后台运行、排除激进的电池优化、允许系统重启或进程回收后恢复服务。
用固定测试流程验证后台保活
设置完成后不要只观察两三分钟。Android 的待机限制通常在熄屏一段时间后才明显,网络切换也比持续使用同一个 Wi-Fi 更容易暴露问题。建议使用下面的 30 分钟流程,每一步都记录客户端通知、VPN 图标、日志时间和实际联网结果。
- 连接 Wi-Fi,启动客户端,确认规则模式、当前节点和订阅配置均已加载。
- 访问一个直连目标和一个代理目标,在日志中分别看到
DIRECT与对应策略组命中。 - 熄屏 15 分钟,期间不要打开客户端;解锁后立即测试网页与消息同步。
- 关闭 Wi-Fi,切换到 4G 或 5G,等待 30 秒,检查服务是否自动重建连接。
- 再次熄屏 15 分钟,然后恢复 Wi-Fi,确认 DNS 查询和新建 TCP 连接都能完成。
- 从最近任务划走客户端,再检查 VPN 是否按客户端设计继续运行。部分客户端把划走视为停止指令,应以其设置说明为准。
延迟数字不等于真实可用性
节点列表中的延迟测试通常请求一个指定 URL,只能反映该测试地址当时的建立连接时间。节点显示 80 ms 但网页打不开,可能是 DNS、UDP、规则选择或目标站点连接问题;显示超时但浏览器可用,也可能是测试 URL 被节点或网络拦截。排查掉线时应查看连接日志的时间顺序,重点关注网络切换前后是否出现核心退出、接口关闭、DNS 超时或策略组找不到节点。
代理频繁掉线的分层排查清单
第一层:确认 Android 没有终止服务
- 检查 VPN 图标是否在熄屏后消失。
- 检查常驻通知是否被关闭;Android 13 及以上的通知权限会影响状态可见性,部分客户端也依赖前台服务通知。
- 确认省电模式、超级省电模式和睡眠模式没有临时覆盖应用白名单。
- 检查系统更新后“不受限制”“后台高耗电”等选项是否被恢复为默认值。
- 确认没有定时清理、游戏加速或系统管家任务结束客户端进程。
第二层:区分核心停止与节点失效
如果本地日志停止刷新、客户端首页无法读取流量统计,本地核心可能已经退出;如果日志仍持续出现连接记录,但记录中反复显示超时、连接被拒绝或 TLS 握手失败,则更可能是节点、线路或订阅参数问题。此时切换同一策略组内的另一个节点,比反复重启 VpnService 更有诊断价值。
订阅更新后突然无法连接,应确认客户端已经重新加载配置。配置文件中的策略组如果引用了不存在的节点名,可能导致规则命中策略组后没有可用出口。查看日志时要找到实际命中的策略组与最终节点,不要只核对订阅页面显示的节点数量。
第三层:检查 DNS 与 IPv6
表现为“部分应用正常、部分域名打不开”时,优先检查 DNS。Fake-IP 模式需要客户端正确接管 DNS 请求,并维护域名与虚拟地址映射;系统私人 DNS、浏览器安全 DNS和应用内置 DoH 可能绕过预期路径。可以暂时把 Android 的「设置」→「网络和互联网」→「私人 DNS」改为“自动”,重启客户端后复测。
IPv6 也应单独验证。移动网络可能分配 IPv6,而配置或节点只稳定支持 IPv4。不要一开始就永久关闭 IPv6;先在相同网络、相同节点下分别测试,查看日志中的目标地址族和失败类型,再决定是否调整配置中的 ipv6、DNS 返回策略或 TUN 路由。
第四层:检查按应用代理
Android 客户端常提供“仅代理所选应用”和“排除所选应用”两种相反模式。切换模式后应重新启动服务,因为应用列表通常在建立 VpnService 接口时写入允许或禁止范围。如果只有某一个应用无法联网,先确认它是否位于正确列表,再检查该应用是否运行在工作资料、应用分身或另一个 Android 用户中。
第五层:处理网络切换后的假连接
从 Wi-Fi 切到蜂窝网络时,旧连接使用的源地址已经失效。客户端应接收系统网络变化并重建必要连接,但部分长连接不会立即恢复。可先等待 30 秒并新开网页;若仍无流量,再在客户端执行一次停止和启动。只有每次网络切换都必须手动重启时,才应继续检查后台限制、系统 VPN 设置和客户端日志,而不是把它当作节点延迟问题。
稳定运行所需的最小设置
Android 上保持 Clash 类客户端稳定,不需要把所有系统权限全部打开。最小设置可以归纳为:完成 VpnService 系统授权;只保留一个活动 VPN;允许客户端后台运行并排除激进电池优化;按需要开启自启动;确认常驻通知与前台服务正常;使用固定流程验证熄屏和 Wi-Fi、蜂窝网络切换。
配置层面应先保持简单。使用有效订阅、一个明确的策略组、可读的 info 日志级别和客户端默认服务模式,跑通后再增加 Fake-IP、按应用代理、自定义规则或 TUN 参数。遇到频繁掉线时,按“系统进程→本地核心→节点线路→DNS 与路由→按应用范围”的顺序排查,能够避免把所有故障都归因于省电策略。