VLESS Reality 握手失败定位实录:先查三项零值配置,再怀疑网络
某节点 VLESS Reality 入站突然全员拒绝连接,客户端报错握手未完成,定位过程记录如下。
现象:桌面客户端与命令行客户端连接 Reality 入站时均握手失败,提示 handshake did not complete。同一台机器上的 HY2、VLESS-WS、Trojan-WS 入站均正常,说明不是整机网络或端口问题,故障范围锁定在 Reality 入站本身。
第一步,先看入站配置,而不是先换目标域名。很多人第一反应是换 Reality 的伪装目标域名和 SNI。但本例中真正的问题在入站自身的 realitySettings 里有三个零值键:minClientVer 为 0.0.0、maxClientVer 为 0.0.0、maxTimediff 为 0。服务端按字面执行这些零值,等于把所有客户端版本和时间差都判为不合法,结果就是全员拒绝。修复办法是删除这三项零值键,让服务端恢复默认值,再重启服务。教训:面板编辑入站后可能把缺省字段写回零值,改完配置要复查数据库或配置文件里的实际值,不能只看面板界面上显示的字段。
第二步,再看目标域名的可达性与解析。零值键修掉之后,仍要确认目标域名在该机器上握手可靠、解析结果可用。注意两点:有的机器没有 IPv6 出口,若解析优先返回 IPv6 地址,握手会先失败再重试,表现就是时好时坏;换一个握手稳定、解析结果在该机可达的目标域名,比反复调大超时更有效。
第三步,最后区分客户端实现差异。同样是 Reality,不同客户端的实现并不等价。实测中桌面新客户端与 xray 核心可以握手成功,而个别手机客户端自带的 Reality 实现会失败,报错同样是握手未完成。这时不要继续改服务端配置去迁就个别客户端:先用 xray 或 sing-box 命令行客户端做一次对照测试。如果核心客户端能通,问题就在客户端实现;如果核心客户端也不通,再回头查服务端。
排障清单:故障先定界,同机其他入站是否正常,缩小到单个入站;查入站实际配置值,重点看 realitySettings 里有没有零值或异常默认值;改配置后重启服务,用核心客户端对照测试,不要只用一个客户端下结论;目标域名换之前,先确认该域名在该机上的解析与握手是否可靠;面板里再次编辑入站后,重新复查一次实际配置值,防止零值键被重新写回。
结论:Reality 握手失败时,按配置值、目标可达性、客户端实现的顺序查,比上来就换域名、换端口、重启整机要快。尤其是面板编辑后写回的零值配置,是最容易被忽略、也最容易复发的一类原因。
- 点赞
- 收藏
- 关注作者
评论(0)