TROUBLESHOOTING REFERENCE

V2Ray 故障排查大全

从本地代理、节点握手、订阅解析、DNS 到客户端运行环境,按故障所在层逐项缩小范围。

v2rayN v2rayNG v2flyNG 连接 → 路由 → DNS → 应用

使用指南负责订阅导入、选择节点、启动代理和验证连接的快速主线;本页负责连接已经出现异常时的系统查阅。排查时不要同时更换节点、协议参数、DNS 和系统代理模式。一次只改变一个变量,记录现象是否变化,才能判断问题属于客户端、本地网络、远端节点还是目标站点。

如果尚未安装客户端,先到获取客户端页面按平台选择。桌面环境优先使用 v2rayN,Android 可在 v2rayNG 与 v2flyNG 之间按内核需求选择。已经完成基础配置但不确定术语含义时,可配合术语表查阅协议、出站、路由与 DNS 的定义。

一、建立可复现的诊断基线

先描述现象,不先猜原因

有效排查从一条可复现路径开始。先记录当前客户端、所选节点、系统代理模式、路由模式、发生时间与失败应用,再区分“所有网站都打不开”“只有特定域名失败”“浏览器正常但其他应用失败”“能连接但速度明显下降”等现象。节点名称本身不能证明节点可用,列表中的延迟值也不能代替完整连接测试。最好保留一个此前可工作的节点或配置作为对照;如果新旧配置在同一网络下表现不同,范围就能快速收缩到节点参数或路由规则。

随后做最小化测试:关闭其他代理客户端、浏览器代理扩展、抓包工具和临时网络加速功能,只保留一个 V2Ray 客户端运行;暂停自定义路由规则,切换到客户端提供的基础代理模式;选定一个节点后保持不变。桌面端还应确认系统时间、时区与日期准确,因为 TLS 证书验证依赖系统时间。移动网络与 Wi-Fi 的出口条件不同,测试时要明确当前使用哪一种网络,避免在切换网络后仍把结果归因于原来的配置。

按层判断故障位置

一次请求大致经过应用、系统代理或虚拟网络接口、本地入站、路由与 DNS、远端节点、目标服务器。浏览器完全没有请求进入客户端日志,通常先查应用和系统代理;日志出现连接节点超时,重点查本地网络到节点的链路;节点握手成功但目标域名解析失败,重点查 DNS;只有某一组域名走错出口,则查路由匹配顺序。这样的分层比反复重装客户端更有效,也能避免把多个独立问题混在一起。

观察结果 优先检查 下一步
客户端日志没有新请求 系统代理、应用代理、虚拟网络权限 核对监听端口并做本地端口测试
出现连接被拒绝 节点地址、端口、远端服务状态 检查参数并换同订阅内的对照节点
出现超时 网络路径、防火墙、节点可达性 切换网络并比较结果
握手后域名解析失败 DNS 出站、规则匹配、缓存 使用明确的 DNS 策略重新测试

保存日志与本地监听证据

日志应覆盖“启动客户端—选择节点—发起一次失败访问—停止测试”的完整过程。不要只截取最后一行,因为真正原因常出现在前面的配置加载或入站监听阶段。v2rayN 可查看主窗口日志区域与核心日志;v2rayNG、v2flyNG 可从日志页面观察连接、路由和错误信息。分享日志前应删去订阅地址、节点凭据、用户标识和完整服务器地址,只保留错误类型、发生顺序与必要参数。

桌面端可以确认本地代理端口是否处于监听状态。以下命令只检查本机端口,不会验证远端节点;端口号应替换为客户端设置里实际显示的 SOCKS 或 HTTP 端口。

netstat -ano | findstr LISTENING
curl --proxy http://127.0.0.1:10809 https://example.com/

若端口未监听,问题仍在客户端启动、端口冲突或核心加载阶段;若通过显式代理的命令可以访问,而浏览器不能访问,问题通常位于系统代理或应用代理层;若显式代理同样失败,再检查节点和 DNS。完成这一轮后,应能写出一条简短结论,例如“本地 HTTP 端口正常监听,浏览器请求进入日志,但连接节点地址超时”。这条结论就是后续排查的起点,而不是笼统的“V2Ray 不能用”。

二、启动代理后无法上网

区分本地断流与代理链路失败

“连接后无法上网”通常包含两类情况。第一类是系统代理已经指向客户端,但客户端本地入站没有正常监听,所有遵循系统代理的应用都会立即失败;第二类是本地入站正常,流量已经进入核心,但远端节点、路由或 DNS 没有完成请求。先观察客户端日志:访问网页时完全没有新增记录,说明流量没有进入客户端;出现目标域名与出站记录,则说明系统代理至少已经把请求送到本地核心。

先关闭系统代理并退出客户端,确认直接网络本身可用。如果直接网络也不能访问常用站点,应先修复 Wi-Fi、网卡、网关或本地 DNS,不要继续修改节点。直接网络恢复后,再启动客户端但暂不启用系统代理,确认核心没有启动错误;最后启用系统代理并访问一个固定测试页面。这样的启动顺序可以判断故障是在原始网络、核心启动还是代理接管之后出现。

检查端口、模式与进程归属

v2rayN 的 HTTP、SOCKS 与局域网监听是不同设置。系统代理必须指向当前实际监听的 HTTP 端口,不能照抄另一台设备或旧配置中的端口。若端口被其他程序占用,核心可能启动失败,也可能自动切换后与系统代理记录不一致。检查日志中是否有 address already in use、bind failed 或 listen failed 一类信息;发现冲突后,应退出占用程序,或在客户端中改为未使用端口,再重新设置系统代理。

浏览器能打开网页而命令行工具不能,并不一定是节点问题。许多命令行程序不会自动读取桌面系统代理,需要显式设置代理参数或对应环境变量。反过来,某些应用保存了自己的手动代理地址,即使系统代理已经关闭,仍会继续连接旧端口。排查时应检查应用内部的网络设置,把“跟随系统”“手动 HTTP”“手动 SOCKS”“直连”区分清楚。只有使用同一种代理入口测试,结果才可比较。

回到最简单的路由配置

复杂分流规则可能把 DNS、节点域名或目标请求送入错误出站。暂时禁用自定义规则集,选择基础全局代理模式进行对照。如果全局模式恢复,节点链路大概率正常,问题位于规则匹配;如果全局模式仍失败,则继续检查节点参数与 DNS。恢复分流时,应从少量明确规则开始,先放置私有地址和本地网络直连,再放置确定的域名规则,最后设置兜底出站。规则通常按顺序匹配,前面的宽泛规则会遮蔽后面的精确规则。

还要检查出站标签是否真实存在。规则引用的标签与当前配置中的代理、直连、拦截出站必须完全一致,大小写和拼写差异都可能导致加载失败或落入默认出站。订阅更新后,客户端管理的出站结构可能变化,因此不应把另一套完整配置中的标签机械复制到当前客户端。若核心日志明确提示找不到 outbound、invalid field 或配置解析错误,应先恢复客户端生成的默认配置,再逐条添加自定义项。

恢复网络状态

客户端异常退出后,系统代理可能仍保留为本机地址,而对应端口已经无人监听,于是浏览器表现为全部断网。重新打开客户端并执行“清除系统代理”,或在系统网络设置中关闭手动代理,再重新测试直连。若使用虚拟网络模式,还要正常停止该模式,让路由表与 DNS 设置恢复;仅强制结束进程可能留下临时网络状态。恢复后重新启动客户端,先确认直连,再确认显式本地代理,最后才启用系统级接管。

若只有局域网资源不能访问,检查私有网段是否被代理。家庭路由器、打印机、存储设备和公司内部服务通常使用私有地址,应由直连出站处理。把私有地址规则放在兜底代理规则之前,并确认虚拟网络模式没有把局域网发现流量错误送入远端。若只有单个站点失败,可在浏览器隐私窗口中排除缓存与扩展影响,并查看该域名在日志中最终命中了哪个出站。完成这些检查后,通常能把“无法上网”拆成明确的端口、规则、DNS 或节点问题。

三、节点超时与握手失败

读懂超时、拒绝与握手错误

节点列表显示超时,只能说明测试请求在限定时间内没有完成,不能单独证明服务器永久不可用。连接超时通常表示到节点地址与端口的 TCP 或 UDP 路径没有及时建立;连接被拒绝表示目标地址可达,但对应端口没有服务接受连接;连接被重置表示链路建立后被某一端主动中断;TLS 握手错误则应进一步检查服务器名称、传输层、安全参数与系统时间。不同错误指向不同层,不能统一归结为“节点失效”。

先对同一订阅中的两个节点做真连接测试。如果所有节点在当前网络同时超时,而切换到另一网络后恢复,应优先检查本地网络出口、防火墙或路由路径。如果只有一个节点超时,其他节点正常,问题更可能位于该节点地址、端口或远端服务。如果同一节点在多台设备和不同网络均失败,再联系配置提供方核对节点状态与参数,比不断更改客户端设置更直接。

逐项核对节点参数

手动导入节点时,地址、端口、用户标识、协议、安全层、传输方式、服务器名称和路径需要成组一致。VLESS、VMess 等协议的字段不能互相套用;WebSocket、gRPC、TCP 等传输方式对应的路径、服务名和请求头也不同。最常见的问题不是字段缺失,而是从旧节点复制配置后只改了地址和端口,遗留了不匹配的服务器名称或传输参数。应将客户端编辑页与原始配置逐字段对照,不要依赖节点备注判断。

启用 TLS 时,服务器名称通常用于证书校验与握手,不能随意替换成节点 IP。系统时间误差过大会导致证书尚未生效或已经过期的判断异常。若日志出现 certificate、handshake、server name 或 verify failed,应先校准系统时间,再核对服务器名称与安全设置。不要通过关闭必要验证来掩盖参数不一致;正确处理方式是取得与服务端一致的配置。若使用 REALITY 等安全方式,还需保持公钥、短标识、服务器名称与流控参数一致。

日志关键词 常见含义 检查方向
timeout / deadline exceeded 连接或握手未在时限内完成 网络路径、地址、端口、远端状态
connection refused 目标端口未接受连接 端口填写、服务监听、节点状态
connection reset 已建立链路被中途关闭 传输参数、中间网络、服务日志
TLS handshake failed 安全层协商未完成 时间、服务器名称、证书与安全参数

延迟测试并不等于可用性结论

ICMP ping、TCP 连接、代理握手和下载测速测量的是不同阶段。服务器可以不响应 ping,但代理端口正常;TCP 端口可以建立连接,但协议认证失败;真连接延迟可以很低,持续传输带宽却很有限。因此选择节点时,应先用客户端提供的真连接测试确认代理握手,再用实际网页和文件传输验证稳定性。关于三种测试的差异,可继续阅读V2Ray 延迟测试原理

测试过程还应避免并发过多。一次对大量节点同时测速会占用本地连接、DNS 查询与网络出口,部分路由器也会对短时间内大量新连接做限制,结果可能出现整批超时。先选少量节点顺序测试,等待前一轮连接释放,再比较结果。移动网络下信号切换、后台省电和网络类型变化也会让短时测试失真,应在网络稳定后复测。

确认地址解析与协议所需网络

当节点地址是域名时,客户端必须先解析该域名。若当前 DNS 规则又要求通过尚未建立的代理查询,就可能形成启动依赖:没有节点就无法解析 DNS,没有 DNS 又无法连接节点。可临时使用可靠的直连 DNS 解析节点域名,同时让目标域名按既定策略解析。使用 UDP 的功能还要求本地网络、客户端入站、远端节点与出站路径共同支持,不能只看客户端是否勾选 UDP。

最终记录应包含节点参数是否来自完整导入、同组其他节点是否可用、换网络后是否恢复、错误发生在 TCP 建连还是协议握手。若问题只发生在一个节点且跨网络复现,保留日志中的错误类型即可,不必暴露完整凭据。若所有节点只在当前网络失败,则把重点转向本地防火墙、路由器、DNS 与网络出口,而不是继续编辑每个节点。

四、订阅更新与导入失败

先判断是下载失败还是解析失败

订阅失败至少分为三个阶段:客户端没有取得订阅内容、取得内容但格式无法解析、解析成功但节点没有进入当前分组。更新时先查看日志与提示文字。HTTP 超时、连接失败或域名解析失败通常属于下载阶段;base64、JSON、YAML 或 unsupported scheme 一类提示通常属于内容解析阶段;更新完成但列表没有变化,则可能是分组选择、去重、筛选或订阅内容本身未变化。

确认更新的是当前正在查看的订阅分组。v2rayN 支持多个订阅分组,节点列表可能仍停留在另一个分组;更新命令也可能只作用于选中的分组。不要在同名分组之间反复导入同一地址,应先查看分组属性中的订阅地址、启用状态与更新结果。Android 客户端同样要区分单节点导入、剪贴板批量导入与订阅管理,三者不会自动合并为同一个更新源。

检查订阅地址的完整性

从聊天工具或网页复制订阅地址时,前后空格、换行、转义字符和被截断的查询参数都可能导致请求失败。应在订阅编辑框中确认地址从协议头到最后一个参数完整连续。某些地址带有临时令牌或设备参数,少复制一个字符就会返回未授权或空内容。不要把订阅地址粘贴到公开日志、截图或在线分析工具中,因为它通常具备获取配置的权限。

若客户端支持通过代理更新订阅,应分别测试“直连更新”和“通过当前代理更新”。当前网络能够直接访问订阅服务时,直连路径最简单;需要经过已有节点才能访问时,则必须保证先有一个可用节点。若唯一订阅中的所有旧节点都已不可用,通过代理更新会形成死循环,此时应向配置提供方取得可直接访问的新地址或独立配置,而不是继续刷新同一失败请求。

处理更新成功但没有新节点

先看更新时间与日志是否真的发生变化,不要只看节点数量。订阅服务可能返回与上次相同的内容,客户端也可能按节点标识去重,因此数量不变是正常结果。检查是否启用了名称筛选、正则过滤、仅保留特定协议或删除旧节点等选项。过滤表达式过宽时,新节点可能在解析后全部被排除;表达式语法错误时,部分客户端会保留旧列表并提示更新失败。

对订阅分组做修改前先导出当前可用配置,随后新建一个临时分组导入同一订阅。临时分组可以排除旧缓存、旧筛选条件与重复项影响。如果临时分组也为空,重点查订阅返回内容;如果临时分组有节点,而原分组没有,重点查原分组的过滤、排序与更新设置。完成比较后再决定是否替换原分组,不要一开始就删除唯一可用节点。

识别格式与客户端能力差异

订阅内容可能是协议链接集合,也可能是结构化配置。客户端只能解析自身支持的格式和字段。把完整核心配置当作普通订阅导入,或把单个分享链接放进订阅地址栏,都可能得到格式错误。应确认提供方标明的导入方式与当前客户端一致。v2rayNG 使用 Xray 内核,v2flyNG 使用 v2fly 内核,两者对部分新字段与传输组合的支持范围可能不同;同一内容在一个客户端可导入,不代表另一个客户端必然接受。

{
  "remarks": "example-subscription",
  "url": "https://example.com/subscription?token=xxxx",
  "enabled": true
}

上面的结构只用于说明需要核对的逻辑字段,实际订阅应通过客户端界面添加,不要把示例直接当作客户端配置文件。出现解析错误时,保留错误行附近的字段名,并确认客户端与内核来自当前下载页提供的安装入口。不要编造版本号判断兼容性,应以客户端实际显示的功能和日志为准。

若订阅请求间歇性失败,应在同一网络下间隔一段时间重试,并比较直连与代理更新结果。频繁连续刷新可能触发服务端请求限制,也会让日志堆叠得难以阅读。最终应明确回答:请求是否成功、返回内容是否可解析、节点是否进入目标分组、过滤规则是否删除了结果。更多短问题可在帮助中心按“安装配置”分类继续核对。

五、连接正常但速度慢

把延迟、带宽与稳定性分开测

速度慢不能只看节点列表中的毫秒数。延迟决定短连接建立和交互响应,带宽决定持续传输速度,丢包与抖动决定视频、通话和长连接是否稳定。一个低延迟节点可能出口带宽有限;一个延迟稍高的节点可能持续下载更快。测试时先打开固定网页观察首屏响应,再做持续传输,最后观察几分钟内是否反复断流。三种现象应分别记录,避免用一次测速结果替代完整判断。

建立对照组时,保持设备、网络、目标资源和测试时间接近,只更换节点。先测直连网络可用带宽,再测两个不同线路的节点。如果直连本身很慢,优先处理 Wi-Fi 信号、移动网络质量和本地占用;如果所有节点速度都接近同一低值,检查设备性能、虚拟网络模式和远端出口;如果只有一个节点明显慢,则更可能是该线路拥塞或出口质量问题。

排除本地资源与并发影响

同步软件、系统更新、云盘、视频播放和其他设备都可能占用上行或下行。尤其上行被占满时,确认包无法及时发送,下行也会表现为卡顿。测试前暂停大流量任务,并在路由器或系统任务管理器中观察网络占用。浏览器同时打开大量页面、下载器开启高并发、客户端对全部节点并行测速,也会消耗连接数和 CPU,导致结果不稳定。

客户端核心需要处理加密、传输封装、路由匹配与 DNS。低功耗设备在高吞吐下可能出现 CPU 饱和,表现为速度达到某个上限后不再增长。可观察系统资源:若传输时单核持续满载,减少复杂规则、关闭不需要的日志级别,并比较系统代理模式与虚拟网络模式的差异。不要为了追求速度随意修改不理解的传输参数;客户端配置必须与远端服务一致,单方面调整往往只会导致连接失败。

检查路由是否绕行

速度问题有时是路由问题。原本应直连的本地或区域资源被送入代理,会增加路径与出口负担;原本应走代理的目标被误判直连,则可能反复重试。查看日志中的目标域名、解析结果与最终出站,确认规则命中符合预期。使用 geosite 与 geoip 分流时,域名规则和 IP 规则可能得出不同结论,且规则顺序会决定最终结果。

先使用全局代理模式测节点上限,再恢复分流模式。如果全局模式快而分流模式慢,应检查 DNS 与规则匹配;如果两者都慢,继续检查线路和设备。如果只有首开页面慢、后续访问正常,常见原因是 DNS 查询、首次 TLS 握手或连接建立;如果开始很快、持续传输后下降,则更像线路拥塞、丢包、设备温度或带宽限制。路由规则的实际配置方法可参考geosite 与 geoip 分流实战

使用可重复的测试方法

不要同时使用多个测速网站并把结果混在一起。选择固定资源,在相近时间测试直连、节点 A、节点 B,每种状态重复两到三次,记录中位表现而不是最高值。测试中保持路由模式一致,并关闭浏览器缓存对下载结果的影响。若目标资源本身对不同出口有不同调度,换另一个稳定资源交叉验证,避免把目标站点的单点拥塞误判为节点速度。

真连接延迟测试应限制并发,节点数量多时分组执行。若日志中频繁出现 retry、broken pipe、reset 或 idle timeout,即使平均速度尚可,也说明链路稳定性不足。此时应优先选择丢包更少、重连更少的节点,而不是只选延迟最低者。视频与交互应用通常更在意稳定性,长时间文件传输则更在意持续带宽,选择标准不能完全相同。

完成排查后,应能判断瓶颈位于直连网络、设备处理、路由绕行、DNS 首查、单个节点线路或目标资源。若瓶颈随时间段变化,保留不同时段的对照记录;若随网络变化,重点比较 Wi-Fi 与移动网络;若随客户端模式变化,检查虚拟网络接口和规则复杂度。这样的结论比“测速低”更适合后续处理。

六、DNS 解析错误、污染与泄漏式错配

识别 DNS 故障的典型表现

DNS 问题常表现为域名打不开但直接访问已知 IP 有响应、同一网站在不同应用中结果不同、切换代理模式后解析地址发生变化,或日志出现 lookup、resolve、no such host、SERVFAIL、NXDOMAIN 等信息。还可能出现节点本身能连接,但目标域名被解析到不合适地址,最终表现为超时或证书名称不匹配。排查时必须把“节点域名解析”和“访问目标域名解析”分开,两者可能使用不同路径。

先清理系统与浏览器缓存,再重复查询。浏览器可能启用独立的安全 DNS,不一定遵循系统或客户端设置;系统也可能缓存旧答案。测试时关闭浏览器独立 DNS 或明确记录其状态,然后使用系统查询工具与客户端日志对照。Windows 可用 nslookup 查询,macOS 与 Linux 可用 dignslookup。查询结果不同并不自动代表某一方错误,还要看请求最终应由直连 DNS 还是代理侧 DNS 处理。

nslookup example.com
nslookup example.com 1.1.1.1

dig example.com
dig @1.1.1.1 example.com

理解本地解析与远端解析

本地解析会先在设备侧取得 IP,再由路由规则处理连接;远端解析通常把域名交给代理侧处理。前者便于按 IP 规则分流,也依赖本地 DNS 的结果;后者可避免本地解析路径影响目标域名,但客户端仍需解决节点地址与部分直连域名。具体模式名称因客户端与内核配置不同,不应只根据一个开关名称判断,需结合日志确认域名是在本地还是远端被解析。

若路由规则同时包含域名和 IP 条件,要注意解析策略决定是否产生可供 IP 规则匹配的地址。只按域名匹配时,不一定需要提前解析;需要按 geoip 判断时,核心可能先解析再匹配。错误的策略会出现“域名规则没命中、IP 规则也没有预期结果”的现象。应先定义需求:本地域名和私有地址直连,特定域名走指定出站,其余请求走默认出站;随后选择与该需求一致的解析路径。

防止启动依赖与解析回路

如果节点地址本身是域名,而配置又要求所有 DNS 查询都通过该节点,就会产生解析回路。解决方法是为节点域名提供可在代理建立前使用的引导解析,或让节点域名走明确的直连 DNS。引导 DNS 只负责建立代理所必需的少量解析,不应与目标域名策略混为一谈。日志中若反复出现对节点域名的查询、连接尚未建立便再次发起 DNS 请求,通常应检查这一依赖关系。

虚拟网络模式还可能接管系统 DNS。客户端异常退出、网络切换或休眠恢复后,系统可能保留已经不可达的 DNS 地址,表现为关闭代理后也无法解析。此时先正常停止虚拟网络模式,再查看系统网卡的 DNS 是否恢复为自动或原有设置。不要在客户端运行期间同时由多个网络工具修改 DNS,否则很难确认最终生效的是哪一套配置。

现象 可能位置 验证方式
域名失败,已知 IP 可达 系统或客户端 DNS 比较系统查询与客户端日志
浏览器与命令行结果不同 浏览器独立 DNS 或代理设置 关闭独立设置后用同一路径复测
客户端启动前无法解析节点 引导 DNS 依赖 让节点域名走可用的直连解析
退出客户端后全部域名失败 系统 DNS 未恢复 检查网卡与虚拟网络接口状态

用日志验证最终答案

修改 DNS 后不要只看网页是否偶然打开。应清理缓存,查询固定域名,记录返回地址,再从客户端日志确认该域名命中的出站。若同一域名有多个地址,短时间内变化可能来自正常的负载调度;真正需要关注的是地址类别与出站是否符合路由设计。只有解析结果、路由命中和最终连接三者一致,才能认为配置有效。

当单个域名持续失败时,比较其根域名与子域名,检查是否存在单独的域名规则、hosts 覆盖或缓存。hosts 条目优先级通常较高,旧条目会让所有 DNS 设置看起来都不生效。若错误只出现在某个浏览器,清理该浏览器的 DNS 与连接缓存;若所有应用一致,则回到系统和客户端层。更换 DNS 服务只能作为对照,不应代替对解析路径的确认。

DNS 修复后的验收标准包括:客户端冷启动可以连接节点;系统查询与预期解析路径一致;浏览器和命令行在采用同一代理入口时结果一致;切换网络、休眠恢复和正常退出后系统 DNS 能恢复。若仅在虚拟网络模式下失败,而普通系统代理正常,应继续检查虚拟接口的 DNS 接管、路由优先级和系统权限。

七、系统代理设置不生效

确认应用是否遵循系统代理

系统代理不是所有程序都会自动使用的统一隧道。浏览器和部分桌面应用通常读取系统代理,命令行工具、游戏、后台服务和使用自有网络栈的程序可能忽略它。出现“浏览器正常、某个应用直连”时,先查该应用是否支持系统代理,是否保存了手动代理,是否需要单独设置 HTTP 或 SOCKS。若应用明确不读取系统代理,可考虑客户端提供的虚拟网络模式,但启用前要理解其权限、路由与 DNS 接管范围。

反过来,浏览器代理扩展可能覆盖系统设置。扩展指向旧端口、旧协议或另一代理程序时,v2rayN 的系统代理状态不会决定浏览器实际路径。排查时暂时禁用扩展,使用浏览器默认网络设置;若恢复正常,再重新配置扩展。企业管理策略也可能锁定代理项,此时系统设置界面虽然可见,应用读取的值仍可能由策略决定,应查看系统代理页面是否提示由组织管理。

核对协议与监听地址

HTTP 代理与 SOCKS 代理不能只靠端口号互换。系统代理通常需要 HTTP 入口,而某些工具可以直接使用 SOCKS。应在客户端设置中确认每个入站的协议、监听地址与端口,再让应用对应填写。监听在 127.0.0.1 表示仅本机可访问;允许局域网连接后,客户端可能监听全部接口,但这不是本机系统代理生效的必要条件。日常使用中不应为了修复本机代理而随意开放局域网监听。

使用以下方式可验证显式 HTTP 代理。若命令成功、系统代理模式下浏览器失败,问题在系统代理记录或浏览器覆盖;若命令连接本地端口就被拒绝,检查核心进程与端口;若本地连接成功但远端失败,则转查节点、路由和 DNS。

curl -I --proxy http://127.0.0.1:10809 https://example.com/
curl -I --socks5-hostname 127.0.0.1:10808 https://example.com/

示例端口只是演示,必须以客户端当前设置为准。--socks5-hostname 会让域名通过 SOCKS 路径解析,适合与本地解析方式做对照。不要同时运行多条自动设置系统代理的程序,它们可能轮流覆盖系统值,导致界面状态与实际注册表或网络服务设置不一致。

处理异常退出后的残留代理

客户端被强制结束、系统突然关机或核心崩溃后,系统代理可能仍指向本机端口。此时所有遵循系统代理的应用都会失败,看起来像网络断开。先重新启动原客户端,执行清除或关闭系统代理,再正常退出;也可以进入系统网络设置手动关闭代理。恢复直连后,再启动客户端并重新设置。不要在网络已断的状态下立即删除所有配置,否则会失去判断残留端口和原设置的依据。

Windows 环境还需区分不同账户和权限上下文。以不同权限启动的程序可能读取不同环境变量或设置范围,后台服务也不一定使用当前桌面账户的代理。macOS 的代理设置按网络服务保存,Wi-Fi 与其他网络接口可能拥有不同配置;切换接口后,应确认当前活动网络服务的代理状态。Linux 桌面环境可能同时存在桌面代理、环境变量和应用独立设置,三者要逐层核对。

环境变量与命令行程序

命令行程序常读取 HTTP_PROXYHTTPS_PROXYALL_PROXYNO_PROXY。变量可能来自当前终端、用户配置文件、系统服务或容器环境。若终端仍保存旧端口,即使桌面系统代理已经更新,命令行请求也会失败。检查变量后重新打开终端,确保新进程读取最新值。内网域名和本地地址通常应加入不经过代理的范围,但规则应保持精确,过宽的排除项会让本应代理的请求直接连接。

set HTTP_PROXY
set HTTPS_PROXY

env | grep -i proxy

清空变量前要记录其来源,避免只在当前终端临时修改,下一次启动又恢复旧值。容器和子系统拥有独立网络命名空间时,127.0.0.1 可能指向容器自身而不是宿主机,必须使用其能够访问的宿主机地址,并确认客户端是否允许相应接口连接。这属于应用网络边界问题,不是节点协议问题。

最终应确认:核心端口实际监听;系统代理指向同一端口和正确协议;浏览器没有扩展覆盖;命令行变量没有旧值;异常退出后代理能够恢复;不遵循系统代理的应用采用了明确方案。若要重新安装客户端,应先从客户端获取页选择对应平台,并在卸载前记录当前端口、分组和路由设置,避免安装后把配置差异误认为程序问题。

八、客户端无法启动、闪退与核心崩溃

区分界面进程与核心进程

v2rayN 等图形客户端通常负责配置管理、订阅、系统代理与界面展示,实际连接由 Xray 或 v2fly 内核进程处理。界面能打开但无法连接,可能是核心没有启动;界面直接退出,则优先查运行环境、配置文件、权限与程序文件。任务管理器或系统进程列表中只看到界面进程,不代表核心已正常运行。日志中若停在“启动核心”之前和之后,排查方向也不同。

首先完全退出客户端,确认没有残留界面和核心进程,再重新启动一次。不要连续点击多次启动,否则多个实例会争用配置文件和监听端口。若客户端提示已有实例运行,先在任务管理器中结束残留进程,等待端口释放,再启动。若每次都在加载某个配置后退出,可暂时把当前配置导出备份,然后切换到一个最简单的已知有效配置测试。

检查配置解析与写入权限

手动编辑 JSON 时,一个多余逗号、错误引号或字段类型都可能阻止核心加载。日志中的 failed to parse、invalid character、unknown field 或 failed to load config 通常会给出字段位置。应使用客户端界面恢复默认生成配置,再逐项加入自定义 DNS 和路由,而不是在错误文件上继续叠加。下面是一个语法完整的最小 JSON 结构示意,用于理解括号与数组关系,不包含可直接连接的节点。

{
  "log": {
    "loglevel": "warning"
  },
  "inbounds": [],
  "outbounds": [
    {
      "protocol": "freedom",
      "tag": "direct"
    }
  ]
}

配置目录不可写时,订阅更新、日志创建和设置保存都可能失败。检查客户端所在目录与用户数据目录是否允许当前账户写入,避免从只读位置直接运行。安全软件隔离核心文件时,界面可能报找不到核心或启动后立即结束;应查看系统安全记录,确认文件来源与本站下载入口一致,再根据本机管理策略处理。不要从不明位置补齐单个核心文件,这会造成界面与内核组合不一致。

处理端口冲突与重复实例

核心启动后立即退出,常见原因是本地端口已被占用。日志会出现 bind、listen 或 address already in use。先查明占用进程,判断它是旧客户端实例、另一代理程序还是系统服务。若是残留实例,正常结束后重启;若端口属于必要服务,在客户端中修改 HTTP 与 SOCKS 端口,并同步更新系统代理、浏览器扩展和命令行环境变量。只改客户端端口而不改使用方,会把“崩溃”转化为“代理不生效”。

多个用户账户、远程桌面会话或开机自启动任务也可能启动不同实例。检查启动项和计划任务,确保只有一个负责设置系统代理的客户端。若需要并行运行不同配置,必须为每个实例分配独立的数据目录、日志与监听端口;普通排查不建议这样做,因为结果难以归因。

从干净状态恢复,而不是盲目删除

恢复前先备份订阅分组、手动节点和自定义路由,但订阅地址与节点凭据不要放进公开位置。随后关闭系统代理和虚拟网络模式,正常退出客户端,再将现有配置目录重命名为备份目录。启动客户端生成新的默认配置,确认界面和核心能够运行,然后逐项导入:先单个节点,再订阅分组,最后路由与 DNS。在哪一步重新崩溃,就重点检查该类数据。

若全新配置仍无法启动,转查运行环境、系统权限、程序架构与安全软件记录。macOS 需要确认系统对应用的打开许可;Linux 应从终端启动以观察缺失依赖和权限错误;Windows 应查看应用程序事件和客户端日志。错误报告中保留异常模块、退出阶段与错误代码,但删除个人路径、订阅内容和凭据。

若崩溃只发生在更新订阅或大量测速时,应减少并发并观察内存与磁盘空间;若只发生在休眠恢复后,检查网络接口变化和旧核心进程;若只发生在虚拟网络模式,检查驱动、权限与其他虚拟接口冲突。完成排查后,应能确定是界面、核心、配置解析、端口、权限还是运行环境问题,再决定修复配置或重新安装,而不是把所有异常统一归因于客户端版本。

九、Android 连接与后台运行专项

确认虚拟网络授权与当前客户端

v2rayNG 与 v2flyNG 在 Android 上通常通过系统虚拟网络接口接管流量。首次启动连接时需要系统授权;授权被拒绝、被另一虚拟网络应用占用或系统在重启后撤销时,客户端可能显示正在启动但没有实际接管。先停止其他使用同类系统接口的网络工具,再重新启动当前客户端并确认授权提示。状态栏出现连接标记只是接口建立的线索,仍需通过日志和实际访问验证节点链路。

不要同时保留两个客户端处于连接状态。v2rayNG 使用 Xray 内核,v2flyNG 使用 v2fly 内核,配置字段支持范围可能不同。把同一个订阅导入两个客户端做对照时,应分别停止前一个连接,再启动后一个;否则系统只允许其中一个接口生效,结果会被误判为节点故障。桌面端可用 v2rayN 做交叉验证,但跨设备比较时要考虑 Wi-Fi、移动网络与 DNS 路径差异。

处理后台被停止与锁屏断线

部分 Android 系统会限制后台进程、锁屏网络和电池使用。典型现象是前台连接正常,锁屏数分钟后断开,重新打开客户端又恢复。应在系统应用设置中允许客户端持续后台运行,关闭对该客户端的严格电池限制,并确认系统没有自动清理其通知或服务。不同设备的菜单名称不同,应以“电池”“后台使用”“自启动”“应用启动管理”等实际设置为线索。

完成设置后不要只看客户端按钮状态。建立连接,访问固定网页,锁屏等待,再解锁重复访问并查看日志时间线。如果日志中间完全停止,通常是进程被系统暂停;如果日志持续但连接重建,可能是网络接口在休眠期间切换;如果请求进入日志后节点超时,则继续检查网络路径。保持常驻通知通常有助于系统识别正在运行的网络服务,不应随意关闭相关通知类别。

Wi-Fi 与移动网络切换

从 Wi-Fi 切换到移动网络时,设备 IP、DNS、最大传输单元和网络能力都会变化。旧连接通常需要重新建立,短暂失败属于切换过程的一部分;若切换后长期无网络,应停止并重新启动客户端,让虚拟接口绑定到新网络。反向切换到 Wi-Fi 时也应复测,尤其是需要网页登录认证的公共网络:应先暂停代理完成网络认证,再重新连接。

若 Wi-Fi 正常而移动网络超时,比较节点地址是否能在移动网络解析,检查移动网络接入点是否限制特定连接方式,并换订阅中的其他节点对照。若移动网络正常而家庭 Wi-Fi 失败,检查路由器 DNS、防火墙与同网其他设备。不要在切换网络的同时修改节点参数,否则无法判断恢复是由网络变化还是配置变化引起。

分应用代理与绕过设置

Android 客户端常提供分应用代理。启用后,必须明确当前模式是“仅代理选中应用”还是“绕过选中应用”。两种模式方向相反,选错后会出现浏览器正常、其他应用直连,或只有少数应用失败。排查时暂时关闭分应用设置,让所有应用使用同一路径;确认基础连接正常后,再逐个加入应用并测试。应用更新或重新安装后标识可能变化,也应重新核对列表。

局域网应用、投屏、打印和设备发现可能需要绕过代理,但具体流量还受虚拟接口路由控制。若局域网访问失败,确认客户端是否允许局域网绕过,并检查私有地址是否走直连。不要用过宽的绕过范围覆盖所有流量;每次增加一项后,用目标应用验证。若应用内部还有独立代理或安全 DNS,也要临时恢复默认,避免与客户端的虚拟网络设置叠加。

移动端现象 优先检查 验证动作
点击连接后立即停止 系统授权、另一虚拟网络应用、配置加载 停止其他工具并查看启动日志
锁屏后断线 后台限制、电池策略、网络休眠 允许后台运行后做锁屏复测
切换网络后无连接 虚拟接口未重建、DNS 与旧会话 停止连接并在新网络重新启动
只有部分应用失败 分应用模式、应用独立代理 关闭分应用后建立统一对照

移动端日志与最终验收

移动端日志采集应覆盖连接启动、切换网络、锁屏恢复和失败应用发起请求的时间点。记录系统是否显示虚拟网络连接、客户端服务是否仍在运行、请求是否进入日志、节点是否重连。分享日志前删除订阅地址、用户标识和服务器完整信息。若问题只在某个应用出现,应同时记录该应用是否启用独立 DNS、是否被分应用规则选中,以及浏览器对照是否正常。

最终验收至少包含四项:前台连续访问正常;锁屏恢复后能够继续访问;Wi-Fi 与移动网络切换后能自动恢复或通过一次重连恢复;分应用规则与预期一致。若 v2rayNG 与 v2flyNG 对同一配置表现不同,先确认该配置的内核字段兼容性,再决定使用哪一个客户端,不要把客户端名称差异当作唯一原因。需要重新获取安装入口时,回到Android 客户端下载区

完成九章排查后,仍无法定位时,可把问题压缩成“在哪个层发生、哪种对照会改变结果、日志给出什么错误”。例如“显式本地代理可用但系统代理无效”“节点在 Wi-Fi 超时而移动网络正常”“订阅下载成功但解析为空”“锁屏后核心日志停止”。再到帮助中心查找对应分类,或回到使用指南重建一条最小可用配置。系统化排查的目标不是尝试更多设置,而是用更少的变量得到可验证结论。