Shadowrocket 节点超时与连接失败排查:延迟测试、协议参数、系统时间

按固定顺序排查超时问题:先看延迟测试结果,再逐项核对地址、端口、密码与协议参数,最后检查 iPhone 系统时间与时区设置。

本文速览

本文适用于已在 Shadowrocket(小火箭)中导入自己服务商配置的用户。先区分延迟测试超时、协议握手失败和网页请求失败,再逐项核对服务器参数、路由与系统时间。每次只修改一个变量,记录相同请求在修改前后的结果,避免把测试数字当作整条连接正常的证明。

一、先记录现象,区分测试失败与请求失败

进入 Home,确认当前选中的服务器,再执行 Connectivity Test。记录测试方式、显示结果和所在网络;如果能选择测试方式,应把 TCP 测试与实际请求测试分开记录。测试结果反映的是特定探测过程,不是所有网站、所有协议和所有网络条件下的连接状态。

TCP 测试主要检查到指定地址与端口建立 TCP 连接的过程。即使显示毫秒数,也不能证明密码正确、TLS 校验通过或目标网站可访问。Hysteria2 使用基于 UDP 的 QUIC,WireGuard 也使用 UDP,单纯的 TCP 探测不能代替它们的实际通信验证。

看到的现象可以说明什么下一步检查
TCP 测试有毫秒数,网页失败TCP 建连可能成功,后续过程仍可能失败检查认证、TLS、路由和 DNS
测试超时,实际请求可用探测方式或探测目标与实际请求不同记录测试方式,不急于改协议参数
同一配置仅在 Wi-Fi 失败问题可能与该网络路径有关切换蜂窝网络后重复相同请求
仅一个网站失败尚不能归因于整条连接检查该请求的 DNS、命中规则及目标服务状态

结论:用实际请求复核测试结果

保留同一服务器与配置,用一个已知可访问的 HTTPS 页面进行复测;只有测试结果和实际请求表现结合起来,才适合决定下一步改哪里。

二、按固定顺序复测,不同时更改多个设置

先确认 iPhone 在关闭 Shadowrocket 连接时能使用当前网络。公共 Wi-Fi 如需网页认证,应先完成认证,再打开连接。随后按下列顺序排查;已有订阅和服务器参数均以用户自己的服务商资料为准。

  1. 记录基线

    在 Home 记录选中的服务器、Connectivity Test 结果和 Global Routing 当前值,同时记下 Wi-Fi 或蜂窝网络。不要先批量删除配置。

  2. 复核地址

    打开 Home 中该服务器的编辑页,核对地址和端口。地址栏不应误带前后空格;普通服务器地址不应填成订阅链接,也不要擅自添加 https:// 或路径。

  3. 核对参数

    按服务商资料逐项核对 Type、认证信息、TLS 和传输参数。保存后重新建立连接,再发起一次新的网页请求,避免沿用旧连接观察结果。

  4. 切换网络

    保持参数不变,在 Wi-Fi 与蜂窝网络之间切换。若只在一个网络超时,记录网络差异,不把暂时可用当作密码已经重新验证的依据。

  5. 检查时间

    进入 iPhone 设置 → 通用 → 日期与时间,检查“自动设置”和当前日期、时间及时区。修正后重新连接,并复测同一个 HTTPS 请求。

三、逐项核对地址、端口与协议参数

进入 Home 的服务器编辑页,先确认协议类型与服务商给出的类型完全一致,再比对字段。端口是服务端指定的监听入口:即使端口写成 443,也不代表它一定提供可用的 HTTPS 或 TLS 服务;不要因为某个端口常见,就自行替换原端口。

协议重点核对常见误区
Shadowsocks服务器、端口、加密方法、密码,以及服务端要求的插件参数只复制密码,遗漏加密方法或插件设置
VMessUUID、加密设置、服务端要求的传输方式与 TLS 参数将 UUID 填到其他认证字段,或遗漏传输参数
VLESSUUID、传输方式,以及服务端要求的 TLS、Reality 或 flow 参数认为同一个 UUID 可以配合任意传输与安全设置使用
Trojan密码、TLS、服务器名称与传输设置地址可连接,就忽略证书对应的服务器名称
Hysteria2认证信息、TLS 服务器名称,以及服务端要求的混淆设置用 TCP 探测结果判断 UDP 路径一定可用
WireGuard本地私钥、对端公钥、Endpoint、接口地址和路由范围混淆私钥与对端公钥,或忽略 UDP 可达性

TLS 服务器名称与实际连接地址不一定相同。连接地址决定请求发往哪里,服务器名称参与 TLS 协商和证书身份校验;使用 WebSocket 时,Host 与 Path 还参与应用层请求。它们可能取值相同,但不能因为看起来相似就相互替换。

四、根据报错缩小范围,不用同一个办法处理所有失败

记录连接失败时附近的日志文本,优先看最先出现的错误及对应目标。下列是网络或 TLS 日志中可能出现的错误片段,不保证每次失败都显示相同措辞;单独一行也不能确定故障一定发生在服务端。

报错:i/o timeout

原因与解法:某一步读写在时限内未完成,可能涉及解析、网络路径或远端响应。先确认错误对应的目标,再保持参数不变切换网络,并复测相同请求。

报错:connection refused

原因与解法:连接请求被目标或中间设备明确拒绝,常见于端口无监听或主动拒绝。核对服务商指定的地址与端口,再向自己的服务商确认该入口状态。

报错:certificate has expired or is not yet valid

原因与解法:证书有效期与当前设备时间不匹配,也可能是远端证书确已过期。先校准 iPhone 时间;时间正确仍失败时,请服务商检查证书,不以跳过校验代替修复。

报错:no such host

原因与解法:相关域名未能解析为可用地址。先检查域名拼写,再区分是服务器域名还是目标网站域名解析失败,随后检查当前配置的 DNS 与基础网络。

同一错误连续出现时,不要只延长等待时间。先判断失败位置:服务器域名无法解析时,应检查地址和 DNS;已经到达 TLS 协商时,应检查时间、服务器名称与证书;认证失败则应回到协议参数。错误发生在不同阶段,处理入口也不同。

域名解析网络可达协议握手身份认证目标请求

五、连接已建立时,检查 Global Routing 与 DNS

回到 Home → Global Routing,记录当前选择。Proxy、Direct、Config、Scene 影响请求采用的路由方式,并不是四种不同的连接协议。系统显示 VPN 已连接,主要说明系统隧道已经建立,不能据此认定每个请求都经过所选服务器并成功到达目标。

在 Config 模式下,Rule 段按顺序匹配。前面的 DOMAIN-SUFFIX、IP-CIDR 或 GEOIP 规则可能先决定请求去向;FINAL 处理未被前文命中的请求,应放在规则末尾。若同一目标在 Proxy 下可用、在 Config 下失败,应先检查命中规则与对应策略,而不是立即修改密码。

六、最后校准系统时间,并保留有效排查记录

打开 iPhone 设置 → 通用 → 日期与时间,检查“自动设置”。日期、时间或时区显示异常时,先恢复正确设置并确认设备实际时间。证书校验使用的是时间点,单纯改变时区显示不等于修正设备时钟;VMess 等带有时间相关认证机制的协议也可能受明显时钟偏差影响。

时间正常仍不能连接时,整理最小故障记录交给自己的服务商:发生时间及所在时区、网络类型、协议、测试方式、脱敏错误片段,以及切换网络后的结果。不要发送密码、私钥、完整 UUID 或完整订阅链接。

延迟有数字,为什么还是打不开网页?

先确认该数字来自哪种测试。回到 Home → Global Routing,记录模式后用 Proxy 做一次对照请求;若仍失败,再核对协议认证与 TLS 参数。TCP 建连成功并不包含后续认证和目标访问。

Wi-Fi 超时,蜂窝网络正常,需要重填密码吗?

先保留现有密码。确认 Wi-Fi 已完成网页认证,再用相同服务器和请求复测;对于 Hysteria2、WireGuard,还要关注该网络的 UDP 可达性。向服务商反馈网络差异,比反复重填相同参数更有定位价值。

订阅更新成功,是否说明服务器都能连接?

不能。更新成功只说明取得并处理了订阅内容。回到 Home 选中具体服务器,分别检查测试结果与实际请求;订阅内容中的地址和认证参数仍可能需要服务商核实。

要先删除系统 VPN 配置或重新购买吗?

不把这两项作为超时排查的起点。若系统隧道可建立,先完成地址、协议、路由与时间检查;只有系统授权或隧道建立本身失败时,再按首次连接教程核对授权过程。

结论:用单变量复测确认修复

修正一项后,重新连接并连续发起几次相同请求,确认原错误不再出现,再恢复临时调整的路由与 On Demand 条件。一次成功只能作为线索,不能替代对原故障场景的复测。

App Store 正版核对 →