Shadowrocket 开关已打开却上不了网:服务器、模式、DNS 与规则逐项排查

连接开关显示已开启,网页却打不开。本文按服务器可用性、Global Routing 模式、DNS 设置、Rule 匹配顺序四个环节给出排查步骤与判断方法。

本文速览

本文适用于已经安装 Shadowrocket(小火箭)、持有自己的服务商配置或订阅、能够打开连接开关但访问失败的用户。排查从关闭连接后的基础网络开始,再依次核对 Home 中的服务器、Global Routing、DNS 与 Config 中的 Rule。每次只改变一项,使用同一个目标复测,最终把问题定位到基础网络、代理连接、域名解析或分流策略,而不是反复重装应用。

一、区分 VPN 已启动与目标已连通

连接开关开启、系统显示 VPN,说明系统已经建立供应用处理流量的通道,并不证明远端服务器已完成认证,也不证明目标网站能够访问。服务器地址无法解析、端口不通、认证参数失效或请求被规则拒绝,都可能发生在开关开启之后。

先选两个平时能够访问、用途不同的网页作为测试目标,记录是全部打不开、只有某个域名打不开,还是网页能打开但部分资源加载失败。不要把单个网站的故障直接判断为所有网络都不可用,也不要同时切换服务器、DNS 和配置文件,否则无法知道哪一项改变了结果。

  1. 关闭连接

    回到 Home,关闭连接开关,用浏览器访问选定的两个目标。如果仍失败,先处理 Wi-Fi 登录、蜂窝数据权限或当前网络本身的问题。

  2. 暂停自动连接

    进入 Settings → On Demand,记录原有设置后暂时关闭自动触发,避免手动关闭后又被系统重新连接。排查结束再恢复原设置。

  3. 固定测试条件

    先固定一种网络与一台用户已有的服务器,记录 Home → Global Routing 当前选项,以及 Config 中实际启用的配置文件。

  4. 连接后复测

    重新开启连接,以相同浏览器访问相同目标。需要比较 Wi-Fi 与蜂窝数据时,将网络切换作为单独的一轮测试,不同时修改其他设置。

二、核对 Home 服务器与实际连接错误

在 Home 中确认当前选中的条目确实是准备测试的服务器,而不是仅看订阅分组名称。打开该条目的编辑页面,对照用户已有的服务商资料检查地址、端口、协议与认证信息。Shadowsocks、VMess、VLESS、Trojan、Hysteria2、WireGuard 的参数结构不同,不能把一个协议的字段直接套给另一个协议。

端口必须与服务端配置一致。使用 TLS 的服务还要核对服务商给出的 Server Name 等参数;不要通过关闭证书验证来掩盖错误。设备日期与时间不正确也可能影响证书验证,应先恢复正确时间。订阅更新后条目可能变化,需再次确认当前选择,不要仅凭旧条目的名称判断配置仍然有效。

以下是网络日志中可能出现的错误字符串示例,不是固定弹窗标题;具体措辞会随协议与底层错误变化。只有实际记录出现相应信息时,才按该分支处理。

报错: connection refused

原因与解法:目标端口的连接被拒绝,可能是服务未监听或网络设备主动拒绝;先核对服务器地址与端口,再向自己的服务商确认服务状态,不要先调整域名规则。

报错: i/o timeout

原因与解法:某个读写阶段在限定时间内未完成,错误本身不说明是 DNS 还是服务器;结合前后日志确认超时目标,并在另一种基础网络上用同一配置复测。

报错: no such host

原因与解法:所查询的主机名未能得到可用解析结果;先辨认这是服务器域名还是网页域名,检查拼写和解析路径,避免把服务器域名解析失败误当成 Rule 故障。

三、用 Global Routing 隔离分流问题

进入 Home → Global Routing,记录当前的 Proxy、Direct、Config 或 Scene。Proxy 用于按代理姿态处理流量,Direct 用于直接连接,Config 按启用的配置进行分流,Scene 按所选场景设置工作。排查时必须知道当前处于哪一种姿态;只在 Config 中修改 Rule,却一直使用其他姿态,可能看不到预期变化。

选项本轮用途观察后的下一步
Direct比较直接连接路径是否可用若失败,与关闭连接的结果对照,检查基础网络及解析设置。
Proxy在同一服务器下测试代理路径若两个目标都失败,优先检查服务器、认证与解析,不急着重排 Rule。
Config测试当前配置的分流结果若 Proxy 可用而 Config 对同一目标失败,查看命中规则与最终策略。
Scene核对场景实际采用的设置先确认当前场景;隔离问题时暂时使用明确的 Proxy 或 Config 进行比较。

结论:先固定代理路径再查规则

同一网络、同一服务器、同一目标在 Proxy 下成功而在 Config 下失败时,下一轮只检查 Config 的命中策略与相关解析设置,不要同时换服务器。这个对照缩小了范围,但仍需结合请求记录确认原因。

Global Routing 的切换是诊断手段,不是永久解决方案。测试时已有长连接可能继续沿用旧连接,切换后应重新发起请求,必要时关闭并重新打开连接。结束后恢复原来的姿态,尤其不要把临时使用的 Proxy 当作已修复原有分流配置。

四、辨认 DNS 故障发生在哪一层

DNS 排查先回答“哪个域名解析失败”。服务器地址若是域名,需要先获得服务器 IP 才能建立代理连接;网页域名则可能在后续请求阶段解析。两个阶段都可能显示超时,但处理顺序不同。先让服务器地址可解析,再检查目标域名,不要期待一条尚未建立的代理连接替自己完成所有前置解析。

53
传统 DNS 常用端口,涉及 UDP 或 TCP
443
DoH 通常通过 HTTPS 使用的端口
853
DoT 通常使用的 TLS 端口

这些是解析方式的常用端口,不是让用户把服务器端口改成其中之一。使用加密 DNS 仍需要解析服务器可达;若解析端点只有代理建立后才能访问,又用它解析代理服务器域名,就可能形成依赖循环。DNS 地址写对了,也不等于当前网络一定允许访问。

  1. 记录 Settings → DNS 中现有设置,并核对 Config 中当前配置是否包含 [General] 的 dns-server 项。若有多个配置来源,先确认实际生效来源,不要只改一个未启用的文件。
  2. 查看失败请求是否已有目标 IP、是否出现解析错误,以及失败发生在服务器连接前还是目标请求阶段。已有 IP 后才出现连接超时,不能仅凭网页打不开就判定 DNS 失败。
  3. 如曾手动设置 DNS,保存原值后,仅对这一项恢复原先可用的设置进行对照。保持服务器和 Global Routing 不变,重新建立连接后复测。
  4. 如果仅在某个 Wi-Fi 下解析失败,换到蜂窝数据做单变量对照;结果不同说明网络环境参与了故障,但还不能直接推断是哪一台设备阻断。

五、检查 Config 中 Rule 的命中顺序

当代理路径可用、Config 下却有特定目标失败时,打开 Config 中实际启用的文件,检查 [Rule]。规则按顺序检查,先命中的规则决定相应策略;具体域名规则通常放在宽泛规则前,FINAL 放在末尾。修改前先保存原文件副本,修改后确认应用的仍是这个文件。

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

上例只展示语法与顺序,不是建议直接替换现有配置。example.com 是示例域名;DOMAIN-SUFFIX 匹配该域及子域,IP-CIDR 匹配地址段,GEOIP 依据 IP 的地域信息,FINAL 接住此前未命中的请求。no-resolve 表示该 IP 规则不为匹配而主动进行域名解析,不代表所有 DNS 都被关闭。

定位规则后,只修改与失败目标有关的最小范围,再重复原来的测试。不要为了让一个网页打开就删除全部规则;这样可能暂时改变访问结果,却失去判断原始故障的依据。规则字段的完整说明可对照配置字段手册。

六、常见现象与恢复操作

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

延迟测试只反映特定测试的响应,不覆盖全部认证、TLS、DNS 与目标请求。保持同一服务器,在 Home → Global Routing 切到 Proxy 后访问原目标,再结合请求错误判断是握手失败还是目标连接失败。

Wi-Fi 能用,蜂窝数据不能用,先改什么?

先关闭连接确认蜂窝网络自身可访问,再检查系统对 Shadowrocket 的蜂窝数据权限。之后使用同一服务器与模式复测;若只有依赖 UDP 的配置失败,向自己的服务商核对该网络下的连接条件,不随意修改协议字段。

只有某个网站打不开,要重新安装吗?

先比较该目标在 Proxy 与 Config 下的表现,并检查失败资源的域名、命中规则与最终策略。若两个姿态都失败而其他网站正常,还需考虑目标服务状态、远端出口到目标的路径及该网站自身的访问条件。

关闭开关后又自动连接,怎么排查?

到 Settings → On Demand 暂时关闭自动触发,再做关闭连接的基线测试。完成排查后恢复原设置;不要把自动连接行为误判为开关失效,也不要为此先删除系统 VPN 配置。

最后恢复临时修改的 Global Routing、DNS 与 On Demand,仅保留已经通过对照验证的修正。如果仍失败,向自己的服务商提供发生时间、网络类型、协议、脱敏后的错误原文,以及 Direct、Proxy、Config 三轮测试的差异。隐去密码、UUID、密钥与订阅 token;这些信息比“开关已打开”更能帮助定位连接阶段。

App Store 正版核对