解决 3x-ui v3.10.2 升级后小火箭(Shadowrocket) 节点超时问题
很多网友遇到了将 3x-ui 更新到 v3.10.2 或最新版本后,V2rayN 等桌面客户端正常,但 iOS 端的 Shadowrocket(小火箭)无法连接或节点连接超时的现象。本文将梳理该问题发生的核心原因及行之有效的解决方案。
问题原因总结
1、底层 Xray-core 自动升级带来兼容性变化:
- 3x-ui 在更新面板(如升级到
v3.8.5、v3.10.2或更新版本)时,通常会同步升级底层的 Xray-core 内核(至v26.9.x/v26.10.x或更新版本)。 - 从 Xray-core
v26.9.x开始,上游对 TLS 指纹检查(uTLS)、版本门控机制以及 REALITY 握手参数(例如引入了x25519mlkem768密钥交换/曲线支持)进行了严格收紧。
2、客户端(小火箭)TLS 指纹不匹配:
- 部分版本的 Shadowrocket 默认使用的 TLS 指纹(如传统的
chrome等)未能完整适配新版 Xray-core 对x25519mlkem768曲线握手的强相关要求,导致服务端拒绝连接,日志中常伴随transport/internet/reality: REALITY: received real certificate报错,表现为连接超时或静默断开。 - 而 V2rayN、Netch 等桌面客户端因内核更新及时或 TLS 指纹兼容性较好,故不受影响。
解决方案
方案一:降级服务端的 Xray-core 内核(实测有效)
直接将服务端的 Xray 内核回退到不受此握手限制影响的旧版本(如 v26.7.28 或 v26.5.9):
- 登录 3x-ui 后台管理面板。
- 进入 系统状态 点击右上角的 Xray-core 版本。
- 手动选择并降级 Xray-core 版本至
v26.7.28。 - 降级完成后重启面板服务。无需修改移动端任何配置,Shadowrocket 即可恢复正常连接。
方案二:修改 Shadowrocket 客户端 TLS 指纹(社区反馈)
(注:若不想降级服务端内核,可尝试此方案)
在 Shadowrocket 中编辑该节点,进入 TLS 设置,将 TLS 指纹修改为支持 x25519mlkem768 的现代浏览器指纹(例如 Chrome140 或最新 Chrome 指纹),保存后重新连接即可。