先分清内核没有启动、节点握手失败,还是浏览器流量没有进入代理。本文以 Windows 上的 v2rayN 为主要操作示例,补充安卓检查位置;按时间、监听端口、TLS、路由和订阅顺序缩小范围,每次只改一项,再用同一个目标复测。端口数字均为排查示例,不代表所有客户端的默认值。
一、先保留日志,确定超时发生在哪一段
“超时”是结果,不是故障位置。TCP 端口能连接,不等于代理认证成功;真连接测试失败,也不一定是节点离线,测试目标本身同样可能不可达。先在 v2rayN 主窗口底部日志区保留本次启动和一次失败请求的记录,记下当前节点、测试方式与发生时间。
诊断时固定一个节点和一个 HTTPS 目标。不要同时切换节点、DNS、内核与路由,否则下一次成功也无法判断是哪项起效。v2rayN 的右键测试由客户端发起,浏览器访问则依赖应用代理设置或 TUN 接管,两者走到本地代理之前的路径可能不同。
- 内核启动即退出:先检查启动日志、监听端口和配置解析,不必先改远端 TLS。
- 测试与网页都失败:继续检查系统时间、节点地址、远端端口和握手字段。
- 测试成功、浏览器失败:优先核对系统代理、浏览器自定义代理和分流规则。
- 只有一个网站失败:先换一个目标验证,避免把目标网站故障当成全部节点故障。
二、系统时间:先同步,再重试握手
系统日期明显错误时,先校时。TLS 证书有生效与到期时间,VMess 的认证也依赖时间窗口;不能因为某个节点使用 VLESS,就忽略其外层 TLS 对时间的要求。只看到时区名称正确还不够,要核对实际日期与时刻。
-
打开时间设置
Windows 11 进入「设置」→「时间和语言」→「日期和时间」,检查年份、日期和当前时刻。Windows 10 的入口同属「时间和语言」,页面名称可能略有差异。
-
执行同步
开启「自动设置时间」,在「其他设置」的「立即同步」处执行同步。时区按所在地选择;显示时区不同但实际时间戳正确,不会单独造成 TLS 失效。
-
重新测试
确认同步成功后,在 v2rayN 重新启用原节点,再执行同一种测试。安卓进入系统「设置」→「系统」→「日期和时间」检查自动时间;部分设备把该页面放在「更多设置」中。
若日志包含证书过期信息,先看报错中的当前时间是否可信。校时后仍提示证书过期,应由节点提供方检查服务端证书,不应把「跳过证书验证」当作长期修复。
三、端口占用:区分本地监听与远端端口
本地端口负责接收应用请求,远端端口负责连接节点服务器,两者不能互换。以本机混合监听端口 10808、远端 TLS 端口 443 为例:服务器编辑窗口里的端口不是浏览器应该填写的本地代理端口。
v2rayN 中打开「设置」→「参数设置」,在 Core 基础设置相关页面核对本地监听端口;不同版本的分组名称略有区别,混合监听通常显示为「本地混合监听端口」。不要照抄示例值。随后在 Windows 终端执行以下只读命令,把数字替换成页面中的实际端口:
netstat -ano | findstr ":10808"
查看本地地址列是否为所查端口,并确认状态是否为 LISTENING。不要把远端地址含有该端口的连接误认为监听记录。最后一列为 PID,可在「任务管理器」→「详细信息」中对照进程;若未显示 PID 列,在列标题右键菜单中选择对应列。
- 属于当前代理内核:通常是正常监听,不能仅凭“端口有进程”判断冲突。
- 属于旧客户端实例:先正常退出旧实例,再重启当前客户端。不要直接结束无法识别的系统进程。
- 属于其他软件:可调整本地监听端口,并同步修改手动填写代理端口的应用。使用系统代理时,重新执行「系统代理」→「自动配置系统代理」。
- 没有监听记录:回到日志检查内核启动错误。系统代理即使已经打开,也不能代替一个实际运行的本地监听服务。
四、TLS 与 SNI:按原始节点逐项核对
在 v2rayN 服务器列表中右键目标节点,打开「编辑服务器」。先核对地址、端口、协议,再看 TLS 与传输字段。地址决定连到哪里,SNI 用于 TLS 握手中的服务名称,两者不要求永远相同;应以提供方给出的配置为准,不能看到 IP 地址就把 SNI 也改成 IP。
| 字段 | 检查内容 | 常见误改 |
|---|---|---|
| 地址与端口 | 与当前订阅节点一致,端口为服务端实际入口 | 把本地 10808 填成节点端口 |
| TLS 与 SNI | TLS 类型、服务名称与提供方要求一致 | 任意填写热门网站域名 |
| 传输设置 | 核对 WebSocket 的 Host、Path,或 gRPC 的 serviceName | 只复制地址与 UUID,遗漏传输参数 |
| 身份字段 | 核对 UUID、密码以及协议相关参数 | 把 VMess 与 VLESS 当成可直接替换的协议 |
| REALITY 参数 | 核对公钥、shortId、serverName 等提供方字段 | 按普通 TLS 配置自行删减参数 |
WebSocket 的 Host 与 TLS 的 SNI 处于不同层,不能一概视为同一字段。使用 REALITY 时,还要确认所选内核支持当前配置;v2rayNG 使用 Xray 内核,v2flyNG 使用 V2Fly 内核,两者对节点配置的支持不能直接画等号。v2rayN 可在「设置」→「参数设置」中的 Core 类型设置页检查协议对应内核。
x509: certificate has expired or is not yet valid
原因:本机时间或服务端证书有效期异常。解法:先校准系统时间;时间正确仍报错时,联系提供方检查证书。
tls: handshake failure
原因:TLS 协商被拒绝,可能涉及 SNI、服务端策略或入口配置。解法:按原始订阅核对 TLS 与 SNI,再让提供方结合服务端日志定位,不能仅凭这一行确定唯一原因。
五、路由与接管方式:测试成功后再查应用流量
真连接测试成功,但浏览器仍打不开时,先确认请求有没有进入客户端。在 v2rayN 主界面底部「系统代理」选择「自动配置系统代理」,再检查浏览器是否另外配置了固定代理。对于不遵循系统代理的应用,仅启用系统代理不会强制接管其流量。
- 先固定接管方式。排查普通浏览器时,可先退出其他代理程序,暂时关闭 TUN,用系统代理复测。若必须检查 TUN,则核对主界面「启用 TUN」状态及启动日志中的虚拟网卡、权限错误。
- 再检查路由选择。在主界面底部「路由」查看当前方案。临时选择让目标流量走代理的全局方案做对照,记下原方案,测试后恢复。
- 核对命中规则。在「设置」→「路由设置」查看当前方案的规则顺序。内核按规则顺序匹配,较前的直连或阻断规则可能先于预期代理规则命中。
- 最后处理 DNS。只有出现域名解析错误、特定域名异常或解析结果与路由不符时,再检查 DNS。浏览器的安全 DNS、系统 DNS 与内核 DNS 可能分别生效,不能一次全部替换。
如果启用全局方案后恢复访问,说明重点应放在分流规则或解析路径,而不是重新生成 UUID。若连日志都没有请求记录,应回到接管方式检查;不过日志级别较低时可能不显示每条连接,不能把“看不到记录”当作唯一证据。暂时提高日志详细程度后,应及时恢复,避免长时间记录访问内容。
六、订阅过期与服务端故障:用对照测试确认
订阅更新成功只说明客户端拿到了内容,不代表账户有剩余流量,也不代表每个节点在线。v2rayN 在顶部「订阅分组」菜单中更新对应订阅;如果当前代理已失效,可使用「更新当前订阅(不通过代理)」尝试直连更新。直连无法访问订阅地址时,不要反复删除已有节点,先保留当前配置。
- 检查更新日志:区分获取失败、解析失败和更新成功。HTTP 401 或 403 可能与凭据失效或访问策略有关,最终应以提供方账户页面为准。
- 核对账户状态:检查套餐到期时间、流量余额和设备数量限制。旧节点仍留在列表里,不代表凭据仍然有效。
- 做网络对照:同一设备、同一节点,分别用原网络和手机热点测试。只有一条网络失败时,重点检查该网络的限制与 DNS,不急于重装客户端。
- 做节点对照:同一网络中,比较同组的另一个节点。只有单节点失败时,记录服务器地址与失败时间,交由提供方检查入口和服务状态。
安卓 v2rayNG 可在主界面右上角菜单的「订阅分组设置」检查订阅地址,在「更新订阅」执行更新;节点编辑入口位于对应节点卡片。不同版本可能把更新操作放到分组菜单中,判断更新结果仍以日志和节点列表变化为准。截图前移除订阅链接、UUID、密码和二维码,这些内容可能直接授予连接权限。
七、读懂报错,形成一次可复现的排查记录
报错要连同前后文一起读。相同的连接拒绝信息,发生在本机监听地址与远端节点地址时,处理方向完全不同。下面几类信息适合用来定位阶段,但都不能替代完整日志。
bind: address already in use
原因:内核试图绑定的本地地址与端口已被占用。解法:定位监听进程,退出重复实例或调整本地监听端口;Windows 上也可能显示同义的套接字地址占用提示。
connection refused
原因:连接被目标端拒绝,可能没有服务监听或被策略主动拒绝。解法:先看目标地址;本机地址查内核是否运行,远端地址查节点端口与服务状态。
context deadline exceeded
原因:操作在规定期限内没有完成,可能发生于拨号、握手或读取响应。解法:结合前面的拨号目标与错误链确认阶段,不要只延长超时数值掩盖问题。
no such host
原因:当前解析路径未得到目标主机的有效解析结果。解法:先确认报错域名是节点地址还是访问目标,再检查拼写、域名状态及对应 DNS 配置。
完成一轮排查后,至少留下以下记录。它既便于复测,也能减少与提供方来回确认的次数。不要发送完整配置文件或可直接导入的节点分享链接。
- 客户端名称、实际版本、当前内核,以及操作系统版本。
- 失败时间、所用网络、测试目标与测试方式。
- 系统时间同步结果、本地监听端口、脱敏后的第一条关键错误。
- 唯一改动项、改动前后结果,以及另一网络或另一节点的对照结果。