导读:
Shadowrocket 是 iOS 平台常用的代理客户端,以下是常见错误代码、原因及解决方案:
| 错误代码 | 错误信息 | 原因分析 | 解决方案 |
|---|---|---|---|
| -1 | Connection closed/reset by peer | 服务器主动断开连接;节点被墙或失效 | 更换节点;检查服务器状态;尝试切换网络 |
| -3 | Connection refused | 端口错误;服务未运行;防火墙拦截 | 检查端口配置;确认服务端程序运行;关闭防火墙测试 |
| -6 | Operation timed out | 连接超时;网络延迟高;节点被墙 | 更换优质节点;检查网络质量;开启超时重试 |
| -7 | No route to host | 无法路由到目标主机;IP 被封 | 更换服务器 IP;检查 DNS 解析是否正确 |
| -1001 | The request timed out | 请求超时 | 检查网络连接;增大超时时间设置 |
| -1005 | The network connection was lost | 网络切换或中断(WiFi/蜂窝切换时常见) | 重新连接;关闭"按需连接"功能测试 |
| -1009 | The Internet connection appears to be offline | 设备未联网 | 检查 WiFi/蜂窝数据是否开启;检查系统网络设置 |
SSL/TLS 相关错误
| 错误代码 | 错误信息 | 原因分析 | 解决方案 |
|---|---|---|---|
| -8 | SSL/TLS handshake failed | 证书不匹配;TLS 版本不兼容;SNI 被干扰 | 检查证书配置;尝试切换 TLS 1.2/1.3;开启"允许不安全"(仅测试用) |
| -9800 | 各种 SSL 错误代码 | 系统 SSL 错误;证书过期 | 更新 Shadowrocket;检查系统时间是否准确;重新安装证书 |
| -999 | SSL 连接中断 | 连接被中间设备重置 | 尝试更换端口(443/80);启用"混淆"或"伪装" |
DNS 解析错误
| 错误代码 | 错误信息 | 原因分析 | 解决方案 |
|---|---|---|---|
| -9 | DNS lookup failed | DNS 解析失败;DNS 被污染 | 更换 DNS 服务器(8.8.8.8, 1.1.1.1, 223.5.5.5);启用 DNS over HTTPS |
| -1003 | 域名解析错误 | 域名不存在或无法解析 | 检查域名拼写;尝试直接使用 IP 连接 |
代理协议错误
| 错误代码 | 错误信息 | 原因分析 | 解决方案 |
|---|---|---|---|
| - Protocol error | Proxy handshake failed | 协议不匹配(如用 SS 协议连接 VMess) | 确认节点协议类型;检查配置参数 |
| - Authentication failed | 认证失败 | 密码错误;UUID 错误;用户不存在 | 核对密码/UUID;检查服务端用户配置 |
| - EOF / Unexpected EOF | 意外断开 | 协议特征被识别;配置错误 | 开启混淆/插件;检查加密方式是否匹配 |
| - Invalid response | 无效响应 | 返回了非代理协议数据(如 HTTP 错误页) | 检查端口是否被占用;确认服务端正常运行 |
配置与系统错误
| 错误代码 | 错误信息 | 原因分析 | 解决方案 |
|---|---|---|---|
| -1011 | Protocol wrong type for socket | 协议类型错误 | 检查 TCP/UDP 设置;确认传输协议 |
| -1004 | Could not connect to the server | 无法连接服务器 | 检查服务器地址和端口;测试服务器连通性 |
| VPN 配置错误 | 无法建立 VPN 隧道 | 系统 VPN 权限问题;配置冲突 | 重新安装 Shadowrocket;重启设备;检查"设置-通用-VPN"中是否有冲突配置 |
通用排查流程
-
基础检查
- 确认设备已联网(Safari 能打开网页)
- 检查系统时间是否准确(时间误差会导致 TLS 失败)
-
节点测试
- 在 Shadowrocket 中对节点进行"延迟测试"
- 尝试切换 WiFi/蜂窝数据测试
-
配置核对
- 服务器地址、端口、密码/UUID 是否正确
- 加密方式、协议插件是否与服务端匹配
- 注意区分 0(数字零)和 O(字母欧)
-
高级排查
- 查看日志:设置 → 诊断 → 日志(查看具体握手过程)
- 尝试关闭"IPv6"(设置 → 高级 → IPv6 设为"关闭")
- 更换传输方式(TCP/mKCP/WebSocket 等)
-
服务端检查
- 确认服务端程序正常运行(
systemctl status) - 检查防火墙是否放行端口
- 查看服务端日志是否有连接记录
- 确认服务端程序正常运行(
提示:如果错误代码频繁出现且无法解决,建议导出日志(设置 → 诊断 → 导出日志)提供给节点服务商或查看具体协议文档。