系統

它能做的,不超過 iOS 給個人 VPN 的那一塊。

Shadowrocket 跑在 Network Extension 裡,因此繼承該框架的限制。下面這些不是「設定沒找對」,而是平臺邊界。隧道如何啟動見 隧道

  1. 01進不了隧道的流量
  2. 02隧道會被系統拆掉
  3. 03門戶頁與其他 VPN
  4. 04HTTPS 解密
  5. 05做不到的事

01

不是所有行程都會被送進延伸

連線開啟後,大部分應用的出站 TCP / UDP 會進入隧道。部分系統行程、部分應用會檢測「VPN 已連線」或走獨立通道。用戶端無法強迫每一個二進位都進入虛擬網卡,也不能修改其他 App 的行為。

表現為:Data 在漲、某一個 App 仍失敗——對照時應把「記錄不可用」和「該 App 拒絕隧道」分開。前者在策略切到 Proxy 時,其他應用也會一起失敗;後者是只有這一個應用失敗,瀏覽器或其他用戶端在 Proxy 下是通的。

個人 VPN 對消費者裝置通常是整機粒度,不是「只代理這一個 App」。沒有在 Shadowrocket 裡勾選某個圖示就能讓系統按應用分流的通用開關。按域名分流是規則引擎的工作,見 規則

02

隧道會被系統拆掉

低電量模式、關閉背景 App 重新整理、飛航模式、Wi-Fi 與行動網路切換,都會讓延伸退出或暫停。恢復後需要再開開關,或等系統按需拉起。這不能靠重灌應用解決,重灌也帶不回一條已經被系統回收的會話。

企業裝置上的 MDM 可以禁止個人 VPN。螢幕使用時間也可以限制 VPN。這兩種情況下,應用內再怎麼開開關,系統都不會建立延伸。授權對話被拒、或事後在系統設定裡刪掉 Shadowrocket 這一條 VPN 配置,效果相同:開關沒有可作用的對象。

背景重新整理容器或規則,依賴系統仍允許該應用在背景執行。關掉「背景 App 重新整理」之後,只有你把應用拿到前景時才會再拉。省電模式會進一步收緊。把「列表沒更新」當成 URL 失效之前,先看系統有沒有讓它跑。

03

門戶頁,以及系統裡同時只能有一條個人 VPN

酒店、機場、校園網常常先彈出登入頁(Captive Portal)。裝置在完成這頁之前,自己還沒有真正的出站。開關開啟、策略 Proxy,登入頁可能打不開,認證完不成,隧道也沒有網可轉。先在 Direct 下、或關掉開關,讓系統自己開啟登入頁,完成後再開隧道。

另一款 VPN 應用處於連線狀態時,iOS 通常不會把流量再交給 Shadowrocket。此時本應用開關即使亮著,位元組也可能從未進入本延伸,Data 兩條都不動。對照故障時,先看系統 VPN 列表裡目前生效的是哪一條,而不是先換記錄。

04

HTTPS 解密會改這臺裝置的信任模型

分流、瀏覽、呼叫 API 都不依賴 HTTPS 解密。規則看主機名和目的地址,不需要開啟加密內容。改寫 若只動 URL 或明文頭,也不一定要解密。

只有需要檢視或改寫 HTTPS 內容時才會用到解密,並會安裝使用者描述檔。這會削弱該裝置上「只信任系統根證書」的預設狀態:本機延伸能夠看到原本僅對端可見的內容。用完應卸掉描述檔。不要把為解密而安裝的證書留在長期使用、或存放網銀與密碼的裝置上。

證書未裝、已過期、或系統不信任時,解密清單裡的主機表現為握手失敗,容易被當成記錄壞了。先關掉解密再對照:若其他訪問恢復,問題在證書,不在出口。

解密不是分流的前提

Config 下的 DOMAIN / GEOIP / FINAL 在不開解密時照常工作。為了「讓規則更準」去開 MITM,會付出整機信任模型的代價,通常也並不能讓 GEOIP 更準。

05

用戶端修不好遠端,也變不成別的系統上的軟體

應用不能延長某條 URL 的有效期,不能代付伺服器費用,不能把握手失敗的記錄變成可用,不能突破營運商或目標網站自己的訪問策略。連線品質由本地網路、該記錄對應的遠端、對端服務共同決定。

沒有官方 Android、Windows、macOS 用戶端。其他系統上的軟體即使能填相同協定欄位,也不是 Shadowrocket,規則檔案也不保證能直接開啟。本站不提供那些軟體的安裝包。

配置儲存在本機,可選同步到你自己的 iCloud。沒有帳號系統,開發者側沒有你的列表。匯出檔案含認證參數,按金鑰保管。見 Config商店