V2Ray 客户端故障排查 按症状分章定位
从无法上网、节点超时、订阅失败到速度、DNS、系统代理与移动端问题,拆成九个章节,每章给出判断顺序与处理办法。
本页与《安装配置教程》的分工
教程页按「导入订阅 → 选择模式 → 连接 → 验证」给出一次走通的主线流程;本页不重复主线步骤,而是按故障症状分章,给出每一类问题的判断顺序与处理办法。第一次安装配置请先看 安装配置教程;已经能连上但出现异常时,从下方目录按症状进入对应章节即可。
症状速查
| 遇到的症状 | 优先查看 |
|---|---|
| 客户端显示已连接,网页打不开 | 第 02 章:本地端口、代理测试与路由规则 |
| 日志出现 timeout / refused / handshake | 第 03 章:服务器可达性与认证、TLS 参数 |
| 节点列表为空,订阅更新报错 | 第 04 章:订阅拉取、分组过滤与覆盖写入 |
| 能连上但速度慢、频繁掉线 | 第 05 章:传输方式、多路复用与线路对照 |
| 个别域名打不开或解析结果异常 | 第 06 章:DNS 配置、域名嗅探与缓存刷新 |
| 命令行走代理通,浏览器不通 | 第 07 章:系统代理写入与端口占用 |
| 双击无反应,内核反复重启 | 第 08 章:配置校验、权限与安全软件拦截 |
| Android 端连接中断或被顶掉 | 第 09 章:VPN 授权、省电策略与分应用代理 |
01 / 排查基线先固定变量,再逐层排除
故障排查最容易踩的坑,是同时改动多个配置项。节点、协议、路由、DNS 一起换,即使连接恢复,也无法判断是哪一项起了作用。本页所有章节遵循同一条顺序:先固定当前环境,把链路拆成若干段,从最靠近客户端的一段开始验证,确认一段通过之后再看下一段。
一条完整的代理链路可以拆成六段:应用发出请求、本地入站端口、本地内核进程、出站连接(协议与传输)、远端服务器、目标站点。每一段都有可以独立验证的检查点,下表中把它们列在一起,后续章节的排查动作都围绕这几段展开。
| 链路分段 | 验证方式 | 通过标准 |
|---|---|---|
| 本地入站 | netstat 或 lsof 查端口 | 有进程监听 127.0.0.1 上记录的端口 |
| 本地内核 | 看日志首行与进程状态 | 内核启动无报错,日志持续输出 |
| 出站到服务器 | 命令行 curl 走本地代理 | 返回目标站点的响应头 |
| 远端服务器 | 换一个已知可用节点对照 | 新节点可正常访问同一站点 |
| 系统代理 | 系统设置里查看代理项 | 地址与端口和客户端设置一致 |
开始之前先固定四项信息
- 客户端与内核版本 — v2rayN 的日志首行会打印内核名称与版本。不同内核(V2Fly 与 Xray)对同一份配置的支持范围不同,遇到字段报错先确认内核。
- 本地入站端口 — 在设置里记下 SOCKS 与 HTTP 端口分别是什么,后面所有命令行验证都要用到这两个端口。
- 当前出站参数 — 协议(VLESS、VMess、Trojan 等)、传输方式(tcp、ws、grpc)、是否开启 TLS、SNI 或 Host 的取值。
- 系统代理与 TUN 状态 — 客户端是否已经把代理写进操作系统,或者是否以 TUN 模式接管全局流量。这两种模式的处理方向完全不同。
同时准备一份排查笔记,记录复现时间、当时的网络环境(Wi-Fi 还是有线、是否切换过网络)、改动过的配置项。多数"时好时坏"的问题靠这份笔记就能找到规律,例如只在某个网络下出现、只在休眠唤醒后出现。
把日志等级调高,复现一次
默认日志等级通常只输出警告,信息量不够。复现故障之前先把等级调到 info 或 debug,复现一次后立即调回,避免日志文件持续膨胀。日志每行都带时间戳,和系统事件对照时可以精确到秒。日志的结构与常见报错的读法,在《v2rayN 运行日志怎么看》里有完整拆解。
用命令行单独运行内核
客户端界面的日志面板本质上就是内核进程的标准输出。把配置导出成 config.json 之后,可以在命令行手动运行一次,排除界面层的干扰:
# Xray 内核:只校验配置,不启动服务
xray run -test -config config.json
# Xray 内核:前台启动,日志直接打印到终端
xray run -config config.json
V2Fly 内核把命令换成 v2ray test -config config.json 与 v2ray run -config config.json 即可,参数含义一致。
一次只改一个变量
排查期间改完一项就立刻复测并记录结果。多个变量叠加之后,即使问题消失也无法归因,下次遇到同样症状仍然要从头再来。
最后一条判断原则:如果同一订阅里的多个节点同时超时,优先怀疑本地网络、订阅本身或客户端配置;如果只有个别节点超时,优先怀疑节点所在的服务器与线路。这条原则决定了后面该往第 03 章还是第 04 章走。
02 / 症状一显示已连接,网页打不开
客户端里的"已连接"只说明本地内核进程启动成功、入站端口开始监听,不代表数据能穿过出站到达目标站点。这个症状覆盖的范围最广,按下面四步可以把问题定位到具体一段。
第一步:确认本地端口在监听
# macOS / Linux
lsof -nP -iTCP:10808 -sTCP:LISTEN
# Windows
netstat -ano | findstr "10808"
没有任何输出,说明入站没有起来。检查客户端进程是否真的在运行、配置里的入站端口是否被其他程序占用,处理方法见第 07 章。
第二步:用 curl 绕过浏览器直接测试代理
curl -x socks5h://127.0.0.1:10808 -I https://www.example.com
curl -x http://127.0.0.1:10809 -I https://www.example.com
两条命令分别测试 SOCKS 与 HTTP 两个入站。结果对照:
- 两条都返回响应头:代理链路正常,问题在浏览器或系统代理层,转第 07 章。
- 两条都不通:出站或远端有问题,转第 03 章。
- 只有一条通:对应端口的入站配置或协议类型有问题,检查设置里两个入站是否都启用。
socks5h 里的 h 表示域名交给代理解析;不加 h 则由本机先解析成 IP 再交给代理。测试时用 socks5h 可以排除本机 DNS 的干扰,两者的差异在第 06 章展开。
第三步:检查路由规则是否把目标走了直连
客户端常见的分流预设里通常包含"按域名区域分流"的规则。如果目标域名被判为直连,而直连线路本身不通,浏览器表现和"代理没生效"完全一样。定位方法是把日志等级调到 info,访问目标站点,看日志里对应请求的出站标签是直连还是代理。
如果确认是误判,有两种处理方式:在路由设置里把该域名加入代理规则;或者临时把默认出站改成代理,验证是否规则导致。一份可参考的规则骨架:
{
"routing": {
"domainStrategy": "IPIfNonMatch",
"rules": [
{ "type": "field", "domain": ["geosite:cn"], "outboundTag": "direct" },
{ "type": "field", "domain": ["geosite:geolocation-!cn"], "outboundTag": "proxy" }
]
}
}
规则的匹配顺序是从上到下,先命中的生效,所以更具体的条目要写在前面。这个话题在《路由规则配置实战》里有更完整的展开。
第四步:对照直连,排除目标站点自身问题
用不经过代理的网络访问同一站点。如果直连也打不开,问题不在客户端,不必继续改配置。这一步看起来简单,却能挡掉相当一部分"排查了半天发现是对方站点故障"的情况。
| curl 测试结果 | 结论 | 下一步 |
|---|---|---|
| 两条都通,浏览器不通 | 系统代理或浏览器层 | 第 07 章:检查系统代理写入与端口 |
| 两条都不通 | 出站或远端 | 第 03 章:连通性与握手参数 |
| 通但目标站点无响应 | 路由误判或站点故障 | 看路由日志,并做直连对照 |
端口类型不能混用
SOCKS 端口和 HTTP 端口不能互换。把 HTTP 端口填进只接受 SOCKS 的应用,或者反过来,表现都是"连接已建立但打不开网页"。
03 / 症状二节点超时与握手失败
这一类问题的共同点是本地内核已经工作,但数据出不去。日志里会出现明确的错误行,先按关键字分类,再决定往哪个方向查,比逐项改配置快得多。
日志关键字对照
| 日志关键字 | 常见含义 | 优先检查 |
|---|---|---|
i/o timeout、context deadline exceeded | 到服务器的连接没有在超时时间内建立 | 服务器地址与端口可达性、本地网络出口 |
connection refused | 目标端口没有服务在监听 | 服务端是否启动、端口号是否写错 |
EOF、connection reset by peer | 连接建立后被中途断开 | 传输参数不匹配、中间设备干扰 |
tls: handshake failure、证书相关提示 | TLS 握手没有完成 | SNI、证书、REALITY 公钥 |
invalid user、rejected | 认证没有通过 | UUID 或密码、系统时间偏差 |
先做连通性测试,再怀疑配置
# Linux / macOS:测试 TCP 端口能否建立连接
nc -vz 203.0.113.10 443
# Windows PowerShell
Test-NetConnection -ComputerName 203.0.113.10 -Port 443
示例里的地址来自文档专用地址段,实际使用时替换成自己节点的服务器地址与端口。结果判断:
- 端口不通:服务器没有监听、服务端防火墙拦截,或者线路层面不可达。先确认服务端状态,再考虑换端口或换线路。
- 端口通、客户端仍报超时:检查客户端里填写的地址是域名还是 IP。如果是域名,可能是解析环节出了问题,转第 06 章。
- ICMP ping 不通不代表端口不通。多数服务器默认不响应 ping,以 TCP 测试结果为准。
认证参数与时间偏差
VMess 协议会用时间戳参与认证,客户端与服务器的时间偏差超过允许范围时会被直接拒绝。检查系统时间是否开启了自动同步;虚拟机与双系统设备在长时间休眠之后时间漂移是常见来源。UUID、密码一类的凭据字段区分大小写,复制时容易漏掉尾部字符。
TLS 与传输参数
- 开启 TLS 的节点,SNI 必须与服务端证书匹配,填错会得到握手失败。
- REALITY 节点需要正确的 serverName 与公钥(publicKey),两者缺一不可。这两个参数的原理见《REALITY 与 XTLS Vision 科普》。
- 传输方式为 ws 或 grpc 时,path 与 host 必须与服务端一致,并且区分大小写。
- 传输层的 host 字段和 TLS 的 SNI 是两个不同的参数,不要互相混填。
重新导入一次分享链接
最省事的排除法是把节点分享链接重新导入一次。手动抄写参数时容易漏掉大小写或特殊字符,重新导入可以一次性排除这类错误。
如果多个节点同时出现超时,而且连通性测试都失败,把怀疑重点从单个节点移到本地网络出口或订阅本身;如果只有某个节点在固定时间段超时,记录时间规律后联系服务提供方核对。
04 / 症状三订阅更新失败与节点列表异常
订阅是节点列表的来源。更新失败会表现为节点全部消失、列表停留在旧内容,或者更新按钮转圈之后弹出错误提示。先确认订阅内容本身能不能取到,再看客户端侧,顺序不要颠倒。
第一步:在命令行直接拉一次订阅
curl -L -A "v2rayN" -o sub.txt "https://example.com/api/v1/client/subscribe?token=xxxx"
head -c 300 sub.txt
第一条命令把订阅内容保存到文件,第二条打印前 300 个字符用于判断返回形态:
- 返回一段 base64 字符串:这是正常的节点列表编码,问题在客户端侧。
- 返回 HTML 页面:订阅地址失效,或者请求被中间层拦截后跳转到了错误页。
- 返回 404 或 403:地址已过期、token 错误,或者服务端限制了 User-Agent。示例里的
-A "v2rayN"就是指定 User-Agent,部分服务端会按它区分请求来源。
需要先有节点才能更新订阅
如果订阅服务器只在代理可达的网络里,而客户端此刻没有任何可用节点,就会陷入"没有节点 → 更新不了订阅 → 更没有节点"的循环。处理办法有两种:在订阅设置里启用"通过代理更新订阅",并先手动导入一个可用节点;或者先在能直连订阅服务器的网络环境下完成一次更新,节点导入后再切换网络。
更新之后节点变少或消失
- 分组过滤:检查是否设置了按名称或地区筛选的分组,被过滤掉的节点不会显示。
- 覆盖写入:部分客户端的订阅更新会整体替换该分组的内容,手动添加的节点要放在独立分组里,避免被覆盖。
- 去重合并:同一服务器的多条线路在导入后被合并成一条,数量减少属于正常现象。
- 服务端调整:订阅内容本身发生了变化,以最新一次拉取的结果为准。
自动更新与手动更新的区别
设置里的更新间隔决定自动更新的频率。手动更新通常有两个入口:完整更新会重新拉取并覆盖节点列表;只刷新订阅内容的方式不修改当前选中的节点,适合在连接稳定时保持现状。排查期间建议先关闭自动更新,避免后台任务干扰判断。
| 返回内容 | 判断 | 处理 |
|---|---|---|
| base64 字符串 | 订阅正常 | 检查客户端侧的分组与更新入口 |
| HTML 页面 | 地址失效或被拦截 | 向服务提供方核对新地址 |
| 404 / 403 | token 错误或限制来源 | 核对地址,必要时换 User-Agent 重试 |
| 连接超时 | 当前网络到订阅服务器不可达 | 切换网络,或启用通过代理更新 |
订阅地址等同于凭据
订阅地址通常带 token,等同于账号凭据。截图或发帖前先确认地址已经脱敏,不要完整贴出。
05 / 症状四能连上但速度慢、频繁掉线
"慢"至少有四种不同的表现:握手慢(打开页面之前的等待长)、带宽低(下载速度上不去)、抖动(时快时慢)、掉线(连接中断)。四种表现的处理方向不一样,先对号入座再动手。
另外要区分三种常见延迟数值:ping 测的是 ICMP 往返,真连接延迟测的是代理链路建立时间,下载测速测的是实际吞吐。三者测量对象不同,不能互相替代。《延迟测试三种数值对比》里给出了每种数值的适用场景与常见误读。
先做直连对照
用同一台设备、同一时间段,不经过代理访问一个同区域的大文件下载地址,记录速度。直连本身就不稳定的话,问题在本地网络或运营商出口,继续调客户端没有意义。
确认流量确实走了代理
日志里查看目标域名的出站标签。速度慢有时是因为规则把目标走了直连,而直连线路恰好拥堵,看起来像是"代理很慢"。
传输方式与多路复用
- 多路复用(mux):把多条连接合并到一条 TCP 上,在低丢包线路上可以减少握手开销;在高丢包线路上,一条连接出问题会拖慢所有复用在上面的请求。可以开关对照测试。
- 传输方式:tcp 最直接;ws 与 grpc 在特定网络环境下更稳定,但多一层封装会带来额外开销。
- 加密算法:不同算法在性能较弱的设备上吞吐差异明显,可以尝试更换后对比。
MTU 与分片
大包在链路上被丢弃时,典型表现是"网页能打开,下载卡住"或者"视频缓冲时间长"。可以在客户端或系统层面逐级调小 MTU,每次减 8 到 16 字节,观察是否改善。调整后要重新连接一次才会生效。
掉线的常见来源
- 服务器负载变化或线路切换;
- 本地网络切换:Wi-Fi 与有线之间切换、移动网络切换基站;
- 系统休眠唤醒后代理进程状态异常,需要重连一次;
- 长时间空闲连接被中间设备清理,重连后恢复。
| 现象 | 优先怀疑 | 验证方式 |
|---|---|---|
| 打开页面前等待久 | 握手开销、多路复用设置 | 开关 mux 对照,看真连接延迟 |
| 下载速度上不去 | 线路带宽、加密算法 | 换节点与直连对照 |
| 时快时慢 | 线路拥塞、丢包 | 固定时间段多次测速对照 |
| 连接频繁中断 | 网络切换、休眠唤醒 | 排查笔记里的时间规律 |
测速要固定时间段
同一条线路在晚高峰与凌晨的表现差异很大,单次结果不构成结论。至少取三个时间段各测一次再下判断。
06 / 症状五部分域名解析异常
这类问题的典型表现是:大部分站点访问正常,个别域名打不开;或者解析到的 IP 与实际不符;或者访问某个区域内的站点时延迟明显偏高。共同点是问题出在"域名变成 IP"这一步。
域名在哪里被解析
使用 SOCKS 代理时,域名解析的位置取决于客户端设置:
socks5h(带 h)或开启域名嗅探:域名交给内核按 DNS 配置解析;socks5(不带 h):本机先解析成 IP 再交给代理,本机 DNS 的问题会直接被带进代理链路。
排查时先用 socks5h 测试一次,可以快速区分"本机 DNS 问题"和"代理链路问题"。
调整客户端的 DNS 配置
{
"dns": {
"servers": [
{ "address": "1.1.1.1", "domains": ["geosite:geolocation-!cn"] },
{ "address": "223.5.5.5", "domains": ["geosite:cn"] }
]
}
}
这段配置让不同区域的域名走不同的 DNS 服务器,减少跨区域解析带来的额外延迟。改完要重启内核进程才会生效。
路由规则需要域名信息才能匹配
基于域名的路由规则要先拿到域名。如果流量以 IP 形式进入内核,域名规则无法匹配,请求会落到默认出站。开启域名嗅探(sniffing)之后,内核可以从 HTTP 请求与 TLS 握手的握手信息里还原域名:
{
"inbounds": [
{
"tag": "socks-in",
"port": 10808,
"listen": "127.0.0.1",
"protocol": "socks",
"sniffing": { "enabled": true, "destOverride": ["http", "tls"] },
"settings": { "udp": true }
}
]
}
开启嗅探之后,域名规则与域名分流才会按预期工作。如果发现规则"明明写了却不生效",先确认嗅探是否开启。
单个域名的定向修正
如果只有个别域名解析异常,可以在 hosts 配置里写死正确地址,或者在 DNS 配置里为该域名单独指定服务器。改动范围越小,越容易验证效果,也越不容易引入新的问题。
刷新系统 DNS 缓存
# Windows
ipconfig /flushdns
# macOS
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
# Linux(systemd-resolved)
sudo resolvectl flush-caches
| 现象 | 可能原因 | 处理 |
|---|---|---|
| 个别域名打不开 | 解析结果异常 | hosts 定向修正或单独指定 DNS |
| 域名规则不生效 | 未开启嗅探 | 在入站配置里开启 sniffing |
| 改配置后无变化 | DNS 缓存未刷新 | 重启内核并刷新系统缓存 |
| 某区域站点延迟高 | 跨区域解析 | 按区域拆分 DNS 服务器 |
DNS 段需要重启才生效
修改 DNS 配置后要重启内核进程,部分客户端不会热加载 DNS 段,只在界面里点保存看不到变化。
07 / 症状六系统代理不生效与端口占用
典型表现是:客户端显示已连接,浏览器打不开网页,但命令行 curl 走本地代理是通的。这说明代理链路本身没问题,问题出在系统代理没有写进去、写错了位置,或者端口对不上。
各平台系统代理的检查位置
| 平台 | 检查位置 |
|---|---|
| Windows | 设置 → 网络和 Internet → 代理;或 Internet 选项 → 连接 → 局域网设置 |
| macOS | 系统设置 → 网络 → 当前服务 → 详细信息 → 代理 |
| Linux | 桌面环境的网络代理设置,或 shell 里的 http_proxy / https_proxy / all_proxy 环境变量 |
系统代理写不进去的常见原因
- 客户端权限不足,无法修改系统代理设置;
- 其他代理类软件正在运行,抢占同一项设置;
- 浏览器使用独立的代理配置或代理扩展,忽略系统设置;
- 系统代理只影响读取系统设置的应用,部分应用需要 TUN 模式才能接管。
TUN 模式与系统代理的差异
| 对比项 | 系统代理 | TUN 模式 |
|---|---|---|
| 接管范围 | 读取系统代理设置的应用 | 全局流量,可按规则排除 |
| 权限要求 | 普通权限,部分平台需要一次授权 | 需要管理员或 root 权限 |
| 典型问题 | 应用不读系统设置 | 路由表冲突、与其他 VPN 抢占 |
端口占用
# Windows:查出占用端口的进程号
netstat -ano | findstr ":10808"
tasklist | findstr "<PID>"
# macOS / Linux
lsof -nP -iTCP:10808 -sTCP:LISTEN
找到占用进程之后,结束它,或者把客户端入站端口改成其他未被占用的端口。
改完端口后的完整动作
- 在客户端设置里修改入站端口并保存;
- 关闭再重新开启"系统代理"开关,让新端口写入系统;
- 在系统设置里核对代理地址与端口是否一致;
- 用 curl 走新端口验证一次,确认链路通畅。
端口冲突的常见来源
上一个客户端进程没有正常退出、其他代理软件占用同一端口段、开发工具或本地服务恰好监听同一端口。改端口前先确认占用方是谁,不要盲目换端口。
08 / 症状七客户端启动失败与配置损坏
表现为双击无反应、启动后立刻退出、界面正常但内核反复重启。先分清是"客户端界面起不来"还是"内核进程起不来",两者的排查方向不同。
先校验配置语法
# Xray 内核:只校验配置,不启动服务
xray run -test -config config.json
# V2Fly 内核
v2ray test -config config.json
常见报错与含义:
invalid character:JSON 里有非法字符,常见来源是多余逗号、注释、中文引号;unexpected end of JSON input:括号或引号没有闭合;unknown field:字段名拼错,或者当前内核不支持该字段。
配置里出现注释与尾随逗号都会导致解析失败,从其他地方复制配置片段时最容易带进这类问题。
内核反复重启
界面显示运行中,但日志里内核进程反复启动又退出,通常是配置校验失败,或者端口被占用。先把日志等级调到 debug,看每次退出前的最后一行,再按第 03 章与第 07 章的流程处理。
权限与路径
- 安装目录位于系统保护目录下时,写配置需要管理员权限,可以把数据目录改到用户目录;
- 路径中包含特殊字符或层级过长时,个别系统组件会读取失败;
- 移动过配置文件位置之后,客户端记录的旧路径会失效。
安全软件拦截
部分安全软件会把代理内核判定为风险程序并静默拦截。典型表现是进程启动几秒后消失,而命令行手动运行同一份配置正常。处理方式是在安全软件里为该目录添加例外,或换一个安装目录重试。Windows 上首次安装的流程与常见坑位,在《Windows 安装 v2rayN 全流程》里有分步说明。
配置备份与恢复
改动配置之前先导出一次。出现启动问题时用重置功能回到默认配置,再逐项恢复,可以定位到具体是哪一个配置项导致的问题。手动导入节点比重放整个配置目录更安全,也更容易回退。
| 崩溃时机 | 常见原因 | 处理 |
|---|---|---|
| 双击后无反应 | 安全软件拦截、权限不足 | 添加例外或以管理员身份运行一次 |
| 启动后立即退出 | 配置语法错误 | 用 -test 校验配置并修正 JSON |
| 界面正常、内核反复重启 | 端口占用或字段不支持 | 换端口,核对内核支持的字段 |
| 改动配置后才出现 | 新加入的配置项有误 | 回退到上一份可用配置 |
09 / 症状八Android 端专项排查
Android 上运行的是 v2rayNG(Xray 内核)与 v2flyNG(v2fly 内核)。两者的工作方式与桌面端不同:手机端以 VPN 模式接管流量,不存在"系统代理"这一层,所以桌面端的一部分排查项在手机上不适用,反过来也一样。
两款客户端的差异
| 对比项 | v2rayNG | v2flyNG |
|---|---|---|
| 内核 | Xray | v2fly |
| 定位 | 首推,新协议参数支持更快 | 备选,与 v2fly 生态一致 |
| 配置范围 | 兼容 Xray 扩展字段 | 以 v2fly 支持范围为准 |
同一份分享链接在两者上都能导入,但个别较新的协议参数只在 Xray 内核上生效。遇到"能导入但连不上"的情况,换另一款客户端对照一次,可以快速判断是参数问题还是客户端问题。两款客户端的安装包入口都在下载页的 Android 区。
连不上的常见原因
- VPN 授权弹窗没有确认:首次连接时系统会弹出授权对话框,必须允许建立 VPN 连接;
- 系统中已有其他 VPN 类应用在运行:同一时间只允许一个 VPN 通道;
- 省电策略:应用在后台被系统清理,表现为通知栏图标消失、连接中断;
- 分应用代理:只勾选了部分应用,未勾选的应用不经过代理。
订阅与节点管理
手机上更新订阅失败时,先切换网络再试:移动数据与 Wi-Fi 互换一次。更新后节点顺序变化属于正常现象,以订阅内容为准。订阅地址带 token,不要把截图发到公开场合。节点列表的整理方式与桌面端一致,订阅更新失败的判断流程可以直接沿用第 04 章。
日志与自检
v2rayNG 的日志页可以看到内核输出,排查方法与桌面端一致:先看时间戳对应的错误行,再区分超时、认证还是 DNS 问题。手机端没有命令行环境,验证手段以换节点对照、切换网络对照为主。
| 排查项 | 桌面端 | Android 端 |
|---|---|---|
| 流量接管方式 | 系统代理或 TUN 模式 | VPN 模式,无系统代理层 |
| 端口检查 | netstat / lsof 查入站端口 | 不适用,由系统分配 |
| 后台存活 | 随系统休眠挂起 | 受省电策略影响,需加白名单 |
| 验证手段 | 命令行 curl 走本地代理 | 换节点、切换网络对照 |
不要同时启用两个代理类应用
Android 系统只允许一个 VPN 通道,后启动的会顶掉前一个,表现为"前一个应用莫名断开"。排查前先确认系统里只有一个代理类应用在运行。
如果上面九章都没有覆盖到你的情况,可以把现象整理成一句话:什么操作、什么时间、日志里最后一行是什么。常见问题页按主题收录了更细的问答,名词解释页可以用来核对日志里的术语含义。