部落格
系統給個人 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,看起來像規則有時靈有時不靈,見 DNS。這些現象疊在「開關亮著」上面,很容易被收成一句「節點不行」。
證書與做不到的事
解密不是分流的前提
分流、瀏覽、呼叫 API 都不依賴 HTTPS 解密。規則看主機名和目的地址,不需要開啟加密內容。改寫若只動 URL 或明文頭,也不一定要解密。只有需要檢視或改寫 HTTPS 內容時才會用到,並會安裝使用者描述檔。這會削弱該裝置上「只信任系統根證書」的預設狀態。用完應卸掉描述檔。不要把為解密而安裝的證書留在長期使用、或存放網銀與密碼的裝置上。證書未裝、已過期、或系統不信任時,解密清單裡的主機表現為握手失敗,容易被當成記錄壞了。先關掉解密再對照:若其他訪問恢復,問題在證書,不在出口。詳見 系統 與 改寫。
應用不能延長某條 URL 的有效期,不能代付伺服器費用,不能把握手失敗的記錄變成可用,不能突破營運商或目標網站自己的訪問策略。連線品質由本地網路、該記錄對應的遠端、對端服務共同決定。沒有官方 Android、Windows、macOS 用戶端。其他系統上的軟體即使能填相同協定欄位,也不是 Shadowrocket,規則檔案也不保證能直接開啟。本站不提供那些軟體的安裝包。
配置儲存在本機,可選同步到你自己的 iCloud。沒有帳號系統,開發者側沒有你的列表。匯出檔案含認證參數,按金鑰保管。第一次開啟開關時的 VPN 配置提示不是登入。買斷覆蓋的是用戶端許可,見 商店 與 Config。把平臺邊界當成「隱藏開關沒找到」,會在記錄和規則上做許多無效修改。
槽位被佔、延伸被系統拆掉、某個 App 拒絕隧道,這三件事的共同點是:在 Shadowrocket 的列表裡找不到對應的「壞行」。換記錄、換規則、重灌應用,都不會把系統的那一個 VPN 槽變成兩個,也不會讓一個自己繞開虛擬網卡的行程改主意。能做的只有:看系統 VPN 列表裡目前生效的是誰,看背景重新整理和低電量有沒有把延伸收走,用另一個用戶端在 Proxy 下試同一主機以確認是不是單 App 行為。確認這三件之後,才輪到記錄欄位和規則順序。手冊把物件寫在物件章,把邊界寫在系統章,不要把兩章合成一次「全面排查」同時改掉。
Data 不動、其他 VPN 應用顯示已連線:先處理並存。Direct 下已經沒有網:先處理本地網路或門戶頁。這兩步透過之後,再固定一行記錄只改策略。手冊把同一套順序寫在Data 章。