本文適合已有自己的服務商與訂閱,且能手動建立連線的使用者。先分清 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。
啟用前:先確認手動連線正常並完成系統授權
On Demand 無法修復無效的訂閱、錯誤的連線參數或無法使用的網路。請先在 Home 選取現有且可用的連線,手動開啟連線開關,再造訪平常能正常開啟的頁面。只有手動連線正常運作,才有判斷自動觸發測試結果的意義。
- 確認現有設定。在 Home 確認目前選取的連線;若要依規則分流,再到 Config 確認已選取預期的設定,避免測試途中切換設定。
- 完成系統授權。首次新增 VPN 設定時,請依系統提示確認。若拒絕授權或移除系統設定,App 內的條件就無法獨立建立通道。
- 前往按需設定。開啟 Shadowrocket 的 Settings → On Demand,確認目前的啟用狀態及已儲存的條件。實際欄位與可選動作以目前介面為準。
- 確認系統設定。在 iPhone 或 iPad 的系統「設定」中,前往「一般」→「VPN 與裝置管理」→「VPN」,開啟對應設定的資訊頁,確認 Connect On Demand。系統語言不同時,這個項目可能會顯示為「按需連線」。
- 記錄基準狀態。記下目前的 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 中的文字規則。
- 相同的 SSID:不同地點可能使用相同名稱,只靠名稱比對無法確認是否為同一台路由器。
- 雙頻網路:名稱相同的兩個頻段通常無法只靠 SSID 區分;名稱不同時則應分別確認。
- 需要驗證的網路:使用網頁驗證的 Wi-Fi,請先完成驗證再測試連線,避免把尚未連上網路誤判為條件未生效。
- 讀取名稱:若 App 無法辨識目前的 SSID,請依系統提示檢查相關權限與限制,不要直接擴大自動連線範圍來掩蓋問題。
行動網路:分開測試網路切換,不要只關閉 Wi-Fi 就以為驗證完成
行動網路條件針對實際使用的網路介面,不代表裝置已插入 SIM 卡。在支援行動數據的 iPhone 或 iPad 上,請先確認行動數據可用,再為該條件設定 Connect 或 Disconnect 動作。僅支援 Wi-Fi 的 iPad 無法測試行動網路路徑。
- 先建立 Wi-Fi 基準狀態。連上指定 Wi-Fi,等待網路穩定,確認符合例外條件時 VPN 的預期狀態。
- 切換至行動網路。在系統設定中關閉 Wi-Fi,確認裝置能透過行動數據瀏覽一般網頁,而非處於沒有網路的狀態。
- 發出實際請求。開啟頁面或重新送出請求,觀察 VPN 是否依行動網路條件建立或中斷連線。不要只等狀態列圖示變化。
- 切回原本的 Wi-Fi。重新連上相同的 SSID,等待網路切換完成,再發出請求,確認狀態是否回到符合例外條件的預期狀態。
- 記錄兩層結果。分別記下 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 介面確實提供網域相關條件,再依欄位說明填寫,避免將完整 URL 當成網域。
- 網域欄位通常不填入
https://、頁面路徑或:443;請依欄位說明確認後綴比對範圍,不要自行猜測萬用字元語法。 - 若要依網路穩定地自動建立通道,再按網站分流,可搭配 Wi-Fi/行動網路條件與 Config;不要依賴未經驗證的網域觸發行為。
規則衝突:先確認觸發順序,再檢查分流順序
兩層規則各有順序,不應混在一起比較。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
- 第一行:
DOMAIN-SUFFIX比對範例網域後綴;符合後會採用該行策略,不再繼續尋找後面偏好程度更高的規則。 - 第二行:
IP-CIDR比對範例中的私人位址範圍;no-resolve表示不為這條 IP 規則額外進行網域解析,不代表所有 DNS 行為都已停用。 - 第三行:
GEOIP依 IP 地理位置資料庫的結果比對,不是根據網頁語言或網域文字判斷地區。 - 最後一行:
FINAL處理此前未符合規則的流量,應作為備援放在規則末尾;它無法執行系統按需連線動作。
實際排查順序如下:確認目前的網路條件、確認按需規則的比對範圍、查看系統 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 與行動網路都應分別驗證;若網域相關條件無法穩定重現預期行為,請先停用該項,保留已確認有效的網路條件。如此一來,就能分開判斷「是否觸發」與「連線後是否可用」。