Shadowrocket 排查指引
iOS 的排查环境有先天限制:没有终端、应用彼此隔离、系统对后台网络管控严格。因此 Shadowrocket 的排查思路是"手机上看现象,桌面上做取证"——手机端的信息用来缩小范围,精确证据交给桌面设备上的 ConnProof。
关键入口
- 日志:首页 → 底部"日志"入口,连接失败的具体原因(超时/拒绝/握手失败)在这里而不是弹窗里;
- 系统 VPN 图标:状态栏出现 VPN 图标表示隧道已建立——它与"能上网"是两回事,参见已连接却无法上网;
- 连通性测试:节点列表的延迟测试只测到节点的可达性,不代表节点出口可用。
常见现象与错误码对照
| 现象 | 对应错误码 | 排查文档 |
|---|---|---|
| 全部节点延迟测试超时 | CLIENT-002 | 所有节点同时超时 |
| VPN 图标在但打不开网页 | CLIENT-001 | 已连接却无法上网 |
| 订阅更新失败 | SUB-001~004 | 订阅更新失败 |
| 日志出现 handshake 类失败 | TLS-002 / TLS-003 | TLS 握手超时 |
| 连接频繁断开重连 | LONG-001 / WS-003 | 数据流提前中断 |
iOS 特有的注意点
- VPN 配置残留:删除或重装应用后,
设置 → 通用 → VPN 与设备管理里可能留下失效配置,新连接反复失败时先清理旧配置; - 后台挂起是常态:应用切后台约 30 秒后系统挂起其连接,回前台重连属于正常行为而非故障;长连接类应用的断开优先怀疑系统策略而不是链路;
- 蜂窝权限:iOS 会单独询问应用的无线数据权限,蜂窝下完全无法联网时检查
设置 → 蜂窝网络里该应用的权限; - 时间敏感:iOS 设备时间被手动改动(常见于某些游戏场景)后,所有 TLS 类连接都会失败,参见证书校验失败。
借助桌面取证
手机端日志把范围缩小后,在同一网络下的电脑上运行:
connproof diagnose 节点域名 --port 节点端口桌面检测结果与手机现象一致 → 链路问题,按错误码文档走;桌面正常而手机异常 → 差异在设备侧(配置抄写、iOS 权限、VPN 残留),按上面的注意点逐条排除。手机与电脑不在同一 Wi-Fi 时,先统一网络再对比,否则证据不可比。