本文重點

本文適合已有自己的服務商與訂閱,且能手動建立連線的使用者。先分清 On Demand 與流量分流,再設定指定 Wi-Fi 和行動網路的連線條件,最後確認網域觸發的限制、規則順序及自動重新連線的原因。測試時一次只變更一項條件,分別透過系統 VPN 狀態與實際請求紀錄確認結果。

On Demand 控制連線,不取代 Global Routing

Shadowrocket(小火箭)的 On Demand 使用 Apple 系統的按需 VPN 機制,在網路條件符合規則時要求建立連線,或依規則中斷連線。它處理的是「何時建立通道」,而不是「某個網站要走哪條線路」。在 App 中前往 Settings → On Demand 設定條件後,也要確認目前的系統 VPN 設定允許按需連線。

Global Routing 負責連線建立後的流量走向。Proxy、Direct、Config、Scene 是這一層的模式;其中 Config 依目前設定的規則分流,Scene 則依所選場景運作。將 Global Routing 設為 Direct,不代表關閉系統 VPN,也不代表停用 On Demand。

網路條件變更 評估按需規則 系統建立通道 比對流量規則 執行出站策略

因此,「顯示 VPN 狀態,但請求走 Direct」不一定是故障。前者代表通道狀態,後者代表請求採用的出站策略。排查時應分別記錄這兩項結果,不能只看狀態列圖示,就推斷所有流量都經過 Proxy。

2 層
分別確認連線觸發與流量分流
2 種
本文分別測試 Wi-Fi 與行動網路
4 項
Global Routing:Proxy / Direct / Config / Scene

啟用前:先確認手動連線正常並完成系統授權

On Demand 無法修復無效的訂閱、錯誤的連線參數或無法使用的網路。請先在 Home 選取現有且可用的連線,手動開啟連線開關,再造訪平常能正常開啟的頁面。只有手動連線正常運作,才有判斷自動觸發測試結果的意義。

  1. 確認現有設定。在 Home 確認目前選取的連線;若要依規則分流,再到 Config 確認已選取預期的設定,避免測試途中切換設定。
  2. 完成系統授權。首次新增 VPN 設定時,請依系統提示確認。若拒絕授權或移除系統設定,App 內的條件就無法獨立建立通道。
  3. 前往按需設定。開啟 Shadowrocket 的 Settings → On Demand,確認目前的啟用狀態及已儲存的條件。實際欄位與可選動作以目前介面為準。
  4. 確認系統設定。在 iPhone 或 iPad 的系統「設定」中,前往「一般」→「VPN 與裝置管理」→「VPN」,開啟對應設定的資訊頁,確認 Connect On Demand。系統語言不同時,這個項目可能會顯示為「按需連線」。
  5. 記錄基準狀態。記下目前的 Wi-Fi 名稱、行動數據是否已啟用、連線狀態及 Global Routing 模式。之後每次測試只變更一項。

指定 Wi-Fi:先設定例外,再設定一般條件

依指定 Wi-Fi 名稱設定時,比對的欄位是 SSID。SSID 與路由器背面的管理位址或裝置備註名稱不同。請先在系統 Wi-Fi 頁面查看目前連線的名稱,再照原樣填入;留意空格、符號與大小寫,不要自行假設系統會模糊比對。

例如,使用者希望在已確認可直接存取所需資源的家用網路上中斷通道,並在其他 Wi-Fi 上要求連線。這是「指定網路例外+一般網路條件」的設定方式,並非所有家用網路都應中斷連線。下方 SSID 僅供示範,設定時應填入實際網路名稱。

指定 Wi-Fi 例外

入口
Settings → On Demand
網路條件
Wi-Fi
SSID 範例
Home-WiFi-Example
目標動作
Disconnect
排列位置
一般 Wi-Fi 條件之前

只有在該網路確實不需要通道時才使用此例外;SSID 本身無法證明網路可信。

其他 Wi-Fi 條件

入口
Settings → On Demand
網路條件
Wi-Fi
比對範圍
未由前置例外處理的 Wi-Fi
目標動作
Connect
排列位置
指定 SSID 例外之後

如果介面提供獨立的例外清單,請用該清單設定範圍;不要把未說明用途的空欄位當成萬用字元。

系統會依序評估按需規則,前面已符合的一般條件可能遮蔽後面的特定條件。若目前介面允許調整清單順序,請將適用範圍較窄的例外放在範圍較廣的條件之前;若介面透過分類選項產生規則,請使用其中的例外選項設定,不要貼入 Config 中的文字規則。

行動網路:分開測試網路切換,不要只關閉 Wi-Fi 就以為驗證完成

行動網路條件針對實際使用的網路介面,不代表裝置已插入 SIM 卡。在支援行動數據的 iPhone 或 iPad 上,請先確認行動數據可用,再為該條件設定 Connect 或 Disconnect 動作。僅支援 Wi-Fi 的 iPad 無法測試行動網路路徑。

  1. 先建立 Wi-Fi 基準狀態。連上指定 Wi-Fi,等待網路穩定,確認符合例外條件時 VPN 的預期狀態。
  2. 切換至行動網路。在系統設定中關閉 Wi-Fi,確認裝置能透過行動數據瀏覽一般網頁,而非處於沒有網路的狀態。
  3. 發出實際請求。開啟頁面或重新送出請求,觀察 VPN 是否依行動網路條件建立或中斷連線。不要只等狀態列圖示變化。
  4. 切回原本的 Wi-Fi。重新連上相同的 SSID,等待網路切換完成,再發出請求,確認狀態是否回到符合例外條件的預期狀態。
  5. 記錄兩層結果。分別記下 VPN 狀態與頁面瀏覽結果。若通道已建立但頁面無法載入,應檢查連線參數與分流規則,而不是繼續修改網路觸發條件。

切換網路時,既有的長連線可能中斷後重試,DNS 快取也可能仍然有效。單次短暫失敗不足以證明規則衝突。請等網路穩定後發出新請求,再重複相同測試。On Demand 也不代表所有 App 都會持續產生網路活動,因此裝置閒置時,不應保證連線會在固定秒數內出現。

網域觸發:分清按需評估與 DOMAIN-SUFFIX

「造訪某個網域時自動連線」和「某個網域走 Proxy」是兩種不同需求。後者可由 Config 中的 DOMAIN-SUFFIX 等規則處理,但前提是相關請求已進入通道。只在 [Rule] 中新增網域規則,不會自動建立系統的網域按需觸發條件。

在 Apple 的按需機制中,網域相關行為可能涉及 EvaluateConnection 與 ConnectIfNeeded:系統會在符合條件的網域解析或連線評估時,判斷是否需要 VPN,而不是監看瀏覽器網址列並在每次造訪時無條件連線。實際能否設定及填寫方式,取決於 Shadowrocket 目前提供的選項;不能將系統支援的所有欄位都視為 App 內一定有的開關。

設定位置或機制處理的問題無法據此推斷的結果
Settings → On Demand定義系統何時要求建立或中斷通道不能據此認定該網域一定使用 Proxy
EvaluateConnection / ConnectIfNeeded依網域與連線評估條件判斷是否需要連線每次開啟相同網域時,不一定都會重新建立連線
DOMAIN-SUFFIX,example.com,PROXY在 Config 分流中,將符合條件的網域交由對應策略處理無法單獨喚起尚未建立的通道

網域測試尤其容易受到快取影響。既有 DNS 結果、App 內建的加密 DNS,以及直接存取 IP 位址,都可能讓測試不再經過預期的系統網域解析流程。即使網域在目前網路上能正常解析,也未必符合「需要連線」的評估條件;因此「網頁能開啟,但沒有自動連線」不代表設定一定失效。

規則衝突:先確認觸發順序,再檢查分流順序

兩層規則各有順序,不應混在一起比較。On Demand 先決定連線動作;連線建立後,再由 Global Routing 決定是否使用 Config 規則。若目前模式是 Proxy 或 Direct,修改 [Rule] 通常不是驗證該模式下行為的正確方式。

以下是流量分流的語法範例,不是 On Demand 設定,也不包含可供連線的服務。PROXY 必須對應目前設定中可用的策略。將規則套用至實際設定前,請先備份原設定並確認策略名稱。

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

實際排查順序如下:確認目前的網路條件、確認按需規則的比對範圍、查看系統 VPN 是否已建立,再檢查 Global Routing 與請求符合的規則。只有最後一步出現問題時,才調整分流規則的位置。訂閱更新後可用連線若有變化,也應先重新確認手動連線正常,不要同時修改 On Demand 與設定檔。

常見狀況:自動重新連線、例外無效與停止測試

剛在 Home 關閉連線,為什麼又自動連上?

先前往 Settings → On Demand 停用按需觸發,再確認系統 VPN 資訊頁上的 Connect On Demand 狀態。條件仍然有效時,新的網路請求可能再次觸發連線;只關閉 Home 開關不等於移除按需條件。

家用 Wi-Fi 已設定 Disconnect,為什麼仍然連線?

先確認實際 SSID 完全相符,再檢查一般 Wi-Fi 的 Connect 條件是否排在例外之前。確認已連上預期的網路後,先中斷再重新連線,發出新請求,然後檢查對應系統 VPN 設定的狀態。

使用行動網路時顯示 VPN 狀態,但頁面無法開啟,該怎麼辦?

先停用 On Demand,使用相同的行動網路手動連線測試。若仍無法連線,請檢查 Home 目前選取的項目、現有連線是否有效及 Global Routing;若手動連線正常,再恢復行動網路條件,單獨確認觸發流程。

新增網域規則後,為什麼造訪時沒有自動連線?

檢查修改的位置。若只修改了 Config 的 DOMAIN-SUFFIX,那是分流規則。請回到 Settings → On Demand 確認是否有網域觸發選項;若沒有相應選項,就不要再嘗試用分流語法取代系統觸發條件。

如何恢復為完全手動連線?

先停用 App 內的 On Demand,再確認對應系統設定已關閉 Connect On Demand,接著在 Home 中斷連線。重新連上 Wi-Fi 並發出請求,確認不會因原有條件再次連線;之後需要時,再手動開啟連線。

測試完成後,只保留用途明確的條件。指定 SSID 例外、其他 Wi-Fi 與行動網路都應分別驗證;若網域相關條件無法穩定重現預期行為,請先停用該項,保留已確認有效的網路條件。如此一來,就能分開判斷「是否觸發」與「連線後是否可用」。