博客

系统给个人 VPN 只留了一个槽。

Shadowrocket 跑在 Network Extension 里,因此继承该框架的限制。下面这些不是「设置没找对」,也不是某一行记录突然过期。隧道如何启动见 隧道

槽位

同一时间通常只维持一条个人 VPN

另一款 VPN 应用处于连接状态时,iOS 通常不会把流量再交给 Shadowrocket。此时本应用开关即使亮着,字节也可能从未进入本扩展,Data 两条都不动。对照故障时,先看系统 VPN 列表里当前生效的是哪一条,而不是先换记录。把「开关亮着」当成「字节进了本应用」,在并存场景里会得到完全错误的下一步:去改 FINAL、去刷新容器、去怀疑 UUID,而真正的原因是系统把流量交给了另一条扩展。

部分系统进程、部分应用会检测「VPN 已连接」或走独立通道。客户端无法强迫每一个二进制都进入虚拟网卡,也不能修改其它 App 的行为。表现为:Data 在涨、某一个 App 仍失败。其它客户端在 Proxy 下是通的,只有这一个失败,多半是该 App 拒绝隧道,不是记录不可用。个人 VPN 对消费者设备通常是整机粒度,不是「只代理这一个 App」。没有在 Shadowrocket 里勾选某个图标就能让系统按应用分流的通用开关。按域名分流是规则引擎的工作,见 规则

生命周期

隧道会被系统拆掉

低电量模式、关闭后台 App 刷新、飞行模式、Wi-Fi 与蜂窝切换,都会让扩展退出或暂停。恢复后需要再开开关,或等系统按需拉起。这不能靠重装应用解决,重装也带不回一条已经被系统回收的会话。企业设备上的 MDM 可以禁止个人 VPN。屏幕时间也可以限制 VPN。这两种情况下,应用内再怎么开开关,系统都不会建立扩展。授权对话被拒、或事后在系统设置里删掉 Shadowrocket 这一条 VPN 配置,效果相同:开关没有可作用的对象。

后台刷新容器或规则,依赖系统仍允许该应用在后台运行。关掉「后台 App 刷新」之后,只有你把应用拿到前台时才会再拉。省电模式会进一步收紧。把「列表没更新」当成 URL 失效之前,先看系统有没有让它跑。酒店、机场、校园网常常先弹出登录页。设备在完成这页之前,自己还没有真正的出站。开关打开、策略 Proxy,登录页可能打不开,认证完不成,隧道也没有网可转。先在 Direct 下、或关掉开关,让系统自己打开登录页,完成后再开隧道。

系统时间未自动同步时,TLS 会批量失败。开关在任何记录上都会表现异常,探测也会一起坏。这与某一行记录无关,先打开「自动设置」时间。目的地址是 IPv6、规则只写了 IPv4 网段时,请求掉到 FINAL,看起来像规则有时灵有时不灵,见 解析。这些现象叠在「开关亮着」上面,很容易被收成一句「节点不行」。

证书与做不到的事

解密不是分流的前提

分流、浏览、调用 API 都不依赖 HTTPS 解密。规则看主机名和目的地址,不需要打开加密内容。改写若只动 URL 或明文头,也不一定要解密。只有需要查看或改写 HTTPS 内容时才会用到,并会安装用户描述文件。这会削弱该设备上「只信任系统根证书」的默认状态。用完应卸掉描述文件。不要把为解密而安装的证书留在长期使用、或存放网银与口令的设备上。证书未装、已过期、或系统不信任时,解密清单里的主机表现为握手失败,容易被当成记录坏了。先关掉解密再对照:若其它访问恢复,问题在证书,不在出口。详见 系统改写

应用不能延长某条 URL 的有效期,不能代付服务器费用,不能把握手失败的记录变成可用,不能突破运营商或目标网站自己的访问策略。连接质量由本地网络、该记录对应的远端、对端服务共同决定。没有官方 Android、Windows、macOS 客户端。其它系统上的软件即使能填相同协议字段,也不是 Shadowrocket,规则文件也不保证能直接打开。本站不提供那些软件的安装包。

配置保存在本机,可选同步到你自己的 iCloud。没有账户系统,开发者侧没有你的列表。导出文件含认证参数,按密钥保管。第一次打开开关时的 VPN 配置提示不是登录。买断覆盖的是客户端许可,见 商店配置。把平台边界当成「隐藏开关没找到」,会在记录和规则上做许多无效修改。

槽位被占、扩展被系统拆掉、某个 App 拒绝隧道,这三件事的共同点是:在 Shadowrocket 的列表里找不到对应的「坏行」。换记录、换规则、重装应用,都不会把系统的那一个 VPN 槽变成两个,也不会让一个自己绕开虚拟网卡的进程改主意。能做的只有:看系统 VPN 列表里当前生效的是谁,看后台刷新和低电量有没有把扩展收走,用另一个客户端在 Proxy 下试同一主机以确认是不是单 App 行为。确认这三件之后,才轮到记录字段和规则顺序。手册把对象写在对象章,把边界写在系统章,不要把两章合成一次「全面排查」同时改掉。

对照时先问槽位,再问记录

Data 不动、其它 VPN 应用显示已连接:先处理并存。Direct 下已经没有网:先处理本地网络或门户页。这两步通过之后,再固定一行记录只改策略。手册把同一套顺序写在读数章。