Shadowrocket 速度慢怎么办:节点、线路、协议与本地网络分层排查

速度慢的原因可能出在节点、线路、协议或本地网络中的任一层。本文按层逐项排除,每一层都给出可以在 iPhone 上直接验证的方法。

本文速览

延迟有数值不等于传输速度正常。排查时先固定测试目标,区分首次打开慢、持续传输慢与间歇断流,再依次检查本地网络、已有节点、到节点的线路、协议参数和规则命中。本文适用于已经拥有自己的服务商与订阅的用户;每轮只改一个条件,记录结果后再决定是否保留修改。

先分清:延迟、吞吐量与首次打开时间

Shadowrocket 的连接测试反映特定测试方式下的可达性或响应时间,不能代替持续传输测试。一次连接可以很快建立,但后续数据仍可能受拥塞、丢包、服务端负载或目标站点限制影响。不同测试方式得到的延迟也不宜直接比较。

先选一个自己正常使用的网站和一份有权访问、大小固定的文件。网页用于观察首次响应,文件用于观察持续吞吐量;不要把两个不同站点的结果当成同一条线路的对照,也不要同时运行多个传输任务。

可观察表现优先检查验证方式
首次打开等待,打开后正常DNS、连接建立、目标响应对比首次与再次打开同一页面
文件持续传输很慢线路、节点负载、目标限速同一文件连续观察 30 秒
传输时快时停丢包、无线信号、拥塞固定节点,对比 Wi-Fi 与蜂窝网络
只有一个站点慢站点自身、规则、目标方向线路同一节点访问另一独立站点

注意单位:Mbps 是每秒兆比特,MB/s 是每秒兆字节。仅按单位换算,8 Mbps = 1 MB/s;实际传输还包含协议开销。例如“延迟 80 ms,文件速度 0.5 MB/s”只是一种可能的记录组合,并不能据此断定节点正常或异常。本文数字用于说明记录方法,不是实测成绩。

第一层:固定条件,检查 iPhone 本地网络

先确认慢是否发生在 Shadowrocket 之外。对不需要代理即可访问的同一目标,在断开连接后做基线测试;这一步会使用本地网络直接访问,只选择适合直接访问的内容。若本地基线也慢,应先处理 Wi-Fi、蜂窝信号或网络本身。

  1. 记录当前状态

    在 Home 记下所选节点,在 Home → Global Routing 记下当前姿态;同时记录 Wi-Fi 或蜂窝网络、测试目标与时间。不要先清空配置。

  2. 暂停自动连接

    进入 Settings → On Demand,记录原有设置后暂时关闭 On Demand,再回到 Home 关闭连接开关。确认系统没有立即重新建立连接,以免误把代理访问当作直连基线。

  3. 检查本地基线

    暂停设备上的其他大流量任务,靠近路由器,访问固定目标。若 Wi-Fi 需要网页认证,先完成认证;信号格数较多并不能证明出口没有拥塞。

  4. 更换接入网络

    恢复 Shadowrocket 连接并保持同一节点,分别在 Wi-Fi 与蜂窝网络测试同一目标,每种条件重复三次。蜂窝测试会消耗移动数据,按自己的套餐控制测试量。

  5. 恢复原有设置

    记录结果,恢复需要使用的 Global Routing 与 On Demand 设置。若只有一个接入网络慢,优先查该网络,不要同时修改节点协议和 DNS。

切换 Wi-Fi 与蜂窝网络也会改变运营商出口,因此这个对照定位的是“本地接入及其后续路径”,不能单凭结果认定路由器损坏。若靠近路由器后明显改善,而同一网络其他条件未变,无线覆盖或干扰才更值得优先检查。

第二层:区分节点端点与到节点的线路

节点是连接的服务端端点,线路是设备到该端点以及端点到目标之间的数据路径。节点延迟低,只说明某次探测很快;它不说明服务端可用带宽、当前负载,也不说明服务端访问目标站点的速度。地理位置接近也不必然意味着实际路由更短。

订阅更新用于重新获取服务商发布的节点信息,不会自动增加带宽。只有在自己的服务商确认端点信息已变更时,才需要在 Home 更新对应订阅,并检查所选节点是否仍为预期条目。更新成功与速度改善是两件事;更新后应重新记录端点,避免把节点变化误认为其他设置的效果。

第三层:核对协议参数,不盲目改端口

Shadowsocks、VMess、VLESS、Trojan、Hysteria2、WireGuard 对应不同的连接与传输机制,客户端参数必须与自己的服务端配置一致。它们不是可以在同一节点上任意切换的速度档位。若服务端仅提供一种协议,单独修改客户端的 Type 通常会使连接失败。

本地接入连接节点协议握手数据传输目标响应

在 Home 打开当前节点的编辑页,按服务商提供的信息核对地址、端口、凭据,以及该协议实际使用的 TLS、Server Name、传输路径等参数。只核对适用于当前节点的字段,不要为追求速度额外开启一组不匹配的选项。

如果要比较协议,只比较自己服务商已经提供、参数完整的连接,并尽量固定端点地区、目标、网络与时间。即使某项更快,结论也只适用于这组测试条件,不能推广为某个协议在所有网络都更快。

第四层:确认 Global Routing 与规则实际命中

排查速度前需要确认请求是否经过预期路径。在 Home → Global Routing 中,Proxy 用于将可代理流量交给代理处理,Direct 使用直连路径,Config 按当前配置处理。若使用 Scene,应先确认当前场景实际应用的配置与策略;场景切换会使两次测试不再具备相同条件。

可以短暂使用 Proxy 与 Config 对同一目标做对照,测试后恢复原设置。如果 Proxy 正常而 Config 慢,优先检查目标命中了哪条规则、使用了哪个策略,以及策略最终选择了哪个节点。Proxy 也不意味着所有域名解析行为都必然相同,仍需结合 DNS 设置判断。

[Rule]
DOMAIN-SUFFIX,example.com,PROXY
IP-CIDR,192.168.0.0/16,DIRECT
GEOIP,CN,DIRECT
FINAL,PROXY

以上只是规则段语法示意,不是建议整段替换现有配置。DOMAIN-SUFFIX 按域名后缀匹配,IP-CIDR 按地址段匹配,GEOIP 按 IP 地理归属匹配,FINAL 接住前序未匹配的请求。规则按顺序检查;自定义策略名还必须在完整配置中有对应定义。

错误记录:把连接失败与低速分开处理

如果问题实际是反复连接失败,先修复失败,再测速度。以下是网络日志中可能出现的错误片段;具体显示取决于连接阶段和底层返回信息,不保证每次都出现同样措辞。记录错误时连同发生时间、网络和节点一起保存。

报错:i/o timeout

原因与解法:某个网络读写步骤超过等待时间,原因可能是丢包、路径不可达或远端未响应;先辨认发生在解析、连接还是传输阶段,再固定节点切换接入网络对照,不要仅凭超时就重置配置。

报错:connection refused

原因与解法:连接请求被目标端点或路径中的设备明确拒绝,常见于端口没有相应服务;核对当前节点地址和端口,并向自己的服务商确认端点是否可用。

报错:no such host

原因与解法:当前解析过程未得到所需主机地址,可能涉及域名拼写、记录或解析器;先确认报错域名属于节点还是目标网站,再检查对应域名与 DNS 配置。

提交记录前隐藏订阅链接、token、密码、私钥和其他认证信息。可以保留协议名称、错误片段、网络类型、发生阶段及对照结果;这些信息通常比一张只有延迟数字的截图更有助于定位。

常见追问:如何判断排查结果

延迟很低,为什么视频还是缓冲?

延迟只覆盖探测请求,视频还依赖持续带宽、丢包率和内容服务器。保持同一节点,分别测试另一段视频与一个固定文件;若只有某个内容来源慢,先检查该来源及其规则命中,不要把低延迟当作带宽保证。

换一个节点马上变快,就确定原节点有问题吗?

这说明两条连接的整体条件不同,但节点负载、路径和目标出口都可能变化。回到原节点再重复一次,并保持目标与网络相同;只有差异能重复出现,才适合把记录交给自己的服务商进一步确认。

关闭连接后又自动连上,怎么做基线?

先进入 Settings → On Demand,记录后暂时关闭自动连接,再回 Home 断开。若设备还有其他受管理的连接规则,应先确认其状态。完成基线测试后恢复原设置,避免改变后续日常连接行为。

全部已有节点都慢,需要重新购买客户端吗?

客户端购买与线路带宽是不同事项。先完成本地基线与另一接入网络的对照,再检查共同使用的配置和目标。客户端买断 ≠ 线路套餐;重复购买不能替代对线路、端点与配置的排查。

收尾:保留一份可复现的对照记录

排查结束后,只保留经过重复验证有效的修改,恢复临时切换的姿态与开关。无法确认收益的改动应回退,避免多个变量叠加,导致下一次故障无法比较。可按下面格式记录,不必填写任何认证信息。

测试目标:同一网页或固定文件
测试条件:同一 iPhone,暂停其他大流量任务
接入网络:Wi-Fi / 蜂窝网络
所选连接:自己的节点标签,不含凭据
Global Routing:Config / Proxy / Direct / Scene
实际命中:规则、策略、最终出站
观察窗口:每轮 30 秒,每组重复 3 次
记录内容:首次响应、持续速度、是否断流
单项改动:本轮仅更换的一个条件
恢复检查:配置、姿态、On Demand

可靠结论应描述边界,例如“同一节点在蜂窝网络正常,在当前 Wi-Fi 下持续停顿”,而不是直接写“软件速度慢”。前一种记录能明确下一步检查方向;后一种描述把本地网络、线路、协议和目标服务混在一起,难以复现。

前往 App Store