適合已能手動連線,並希望依網路環境自動建立或中斷連線的使用者。先釐清 On Demand 與流量分流的差異,再依序設定「指定 Wi-Fi 例外、行動網路連線、其他網路的後備條件」,最後測試網域條件並了解如何完全停用。本文主要說明 iPhone / iPad 的系統 VPN 按需機制,其他平台的選單路徑可能不同。
一、先分清自動連線與規則分流
Shadowrocket(小火箭)的 On Demand 用來控制系統何時嘗試建立 VPN 連線;連線建立後,如何處理存取請求,則取決於 Global Routing 和目前使用的設定檔。狀態列出現 VPN 圖示,不代表所有請求都經過代理;網站命中 DIRECT,也不代表系統會中斷 VPN。
取得方式分為兩種:iPhone / iPad 版於 App Store 一次性付費 $2.99,開發者為 Shadow Launch Technology Limited,系統需求請以 App Store 頁面標示為準;Mac(Apple 晶片 / Intel)、Windows、Android、Linux 版免費。各裝置的下載入口請見全平台下載頁。本文假設使用者已有自己的服務商與訂閱;客戶端不附連線服務,本站不提供、販售或推薦節點或訂閱。
若要依網站進行流量分流,請在 Home 檢查 Global Routing,選用 Config,並確認 Config 中實際啟用了預期設定檔。Proxy、Direct、Config、Scene 代表不同的路由模式,並非 On Demand 的連線動作。尤其不要把 Global Routing 的 Direct 誤解為系統按需規則中的 Disconnect:前者決定請求如何轉送,後者決定隧道是否保持連線。
二、啟用前先完成一次手動連線
自動化設定無法修正錯誤的連線參數。先在 Home 選取已有的連線設定,手動啟用連線並瀏覽已知可用的網站;若此時無法連線,先確認伺服器位址、連接埠、驗證資訊與通訊協定參數,再設定 On Demand。避免同時更換伺服器、修改 DNS 或調整分流規則,否則難以判斷是哪項變更影響結果。
- 在 Home 確認目前選取的連線項目。若項目是透過訂閱匯入,先正常更新一次,並確認設定清單不是空的。
- 確認通訊協定與現有伺服器相符。Shadowsocks、VMess、VLESS、Trojan、Hysteria2、WireGuard 的驗證與傳輸參數不能互換。
- 手動啟用連線,依系統提示允許新增 VPN 設定;接著在瀏覽器確認是否能正常存取,不要只看連線開關。
- 前往 Settings → On Demand,記下目前的規則與排列順序,再新增網路條件。
- 每次只修改一項條件並儲存。返回 Home 檢查連線狀態,再實際切換一次網路。
三、指定 Wi-Fi:先設定例外,再處理其他網路
以「家中 Wi-Fi 不建立隧道,其他 Wi-Fi 嘗試連線」為例,先到系統 Settings → Wi-Fi 查看目前的網路名稱。SSID 是 Wi-Fi 名稱,不是路由器品牌、閘道位址或裝置名稱。範例名稱 Home-WiFi 請替換為裝置實際顯示的名稱;空格、標點及名稱中的字元都要逐一確認。
前往 Shadowrocket 的 Settings → On Demand,在可編輯的 Wi-Fi 條件中指定該 SSID,並將對應動作設為 Disconnect;接著為其他 Wi-Fi 設定 Connect。不同系統與平台提供的編輯項目可能不同;下方卡片僅說明條件與動作的對應關係,並非可直接貼上匯入的設定檔。若目前介面沒有某項條件,請勿改用 Config 中的網域規則取代。
指定 Wi-Fi 例外
- 設定項目
- Settings → On Demand
- 網路類型
- Wi-Fi
- SSID 範例
- Home-WiFi
- 動作
- Disconnect
- 排列位置
- 排在其他 Wi-Fi 的通用條件之前
SSID 請依實際名稱填寫;名稱相同的網路可能符合同一條件。
其他 Wi-Fi
- 設定項目
- Settings → On Demand
- 網路類型
- Wi-Fi
- SSID 限制
- 不限定特定名稱的通用條件
- 動作
- Connect
- 排列位置
- 排在指定 SSID 例外之後
通用條件不可排在例外之前,否則指定網路也可能先符合 Connect。
SSID 只能識別網路名稱,無法證明網路是否可信。若家用路由器更名、雙頻網路使用不同名稱,或訪客網路另有名稱,都要重新確認符合條件的範圍。若公共 Wi-Fi 需要先開啟驗證頁面,請先完成網路登入;底層網路尚未提供網際網路連線時,Connect 動作也無法讓伺服器自動連上。
四、行動網路:用獨立條件測試網路切換
若希望離開 Wi-Fi 後自動連線,可為行動網路設定 Connect。此條件比對的是裝置目前使用的網路介面,不是 SIM 卡顯示名稱或電信業者。iPad 必須具備並啟用行動網路功能,才能直接測試這類條件;連線至手機熱點的裝置通常仍使用 Wi-Fi 介面,應依連接的 SSID 判斷。
- 在 Settings → On Demand 檢查行動網路條件,將預期動作設為 Connect,並儲存變更。
- 保留指定 Wi-Fi 的 Disconnect 例外,不要用一條無條件的 Connect 規則涵蓋所有情況。
- 在系統 Settings → Wi-Fi 關閉 Wi-Fi,確認裝置實際使用行動數據,而不是只在控制中心暫時中斷目前的網路。
- 重新開啟網頁,觀察 Home 的連線狀態與存取結果。系統觸發可能受到網路可用性與新請求影響,不要只根據切換瞬間的圖示判斷。
- 重新連上指定的 Home-WiFi 並瀏覽目標網站,確認連線狀態是否符合 Disconnect 例外。
五、網域條件:不是開啟某個網頁就切換整體連線
系統 VPN 按需機制可透過 EvaluateConnection 等動作,依網域解析與可達性條件判斷是否需要連線。這與依網路類型直接設定 Connect 不同,也不是讀取瀏覽器網址列。只有目前的編輯介面確實提供網域評估條件時,才能設定對應行為;不要假設各平台都提供相同的網域編輯功能。
輸入網域時請使用 example.com 這類主機名稱,不要填入 https://example.com/path 或網頁標題。網域評估的比對範圍由對應欄位定義,不能直接套用 DOMAIN-SUFFIX 的語意。若有「解析失敗時連線」或「探測失敗時連線」等條件,請依實際提供的選項設定,並確認所用 DNS 或探測目標在預期網路中確實可用。
- 系統處理相關請求時會進行網域評估;DNS 快取或 App 重複使用既有連線,可能導致再次開啟頁面時無法重現首次觸發情況。
- 網頁還會載入圖片、指令碼及其他網域的資源。主頁網域的條件不會自動涵蓋所有第三方請求。
- 關閉瀏覽器分頁並不是可靠的「中斷隧道」訊號,無法據此保證離開網站後會立即執行 Disconnect。
- App 若自行處理 DNS、使用加密解析或直接存取 IP 位址,觸發流程可能不同。測試時應分別記錄系統解析方式與 App 行為。
若需求只是「指定網站走代理,其他網站直連」,通常應讓連線保持可用,並在 Config 中設定分流,而不是依賴網域條件頻繁切換隧道。以下是分流語法範例,並非 On Demand 設定;PROXY 必須對應目前設定檔中實際可用的策略。
DOMAIN-SUFFIX,example.com,PROXY
FINAL,DIRECT
這兩行表示 example.com 及其子網域會命中 PROXY,其餘請求則使用 DIRECT。它們不會要求系統離開該網站時中斷 VPN,也不會自動補上網站所需的其他網域。測試時請在請求記錄中確認實際目標與命中策略,再決定是否新增規則。
六、衝突順序:分別檢查按需條件與 Config
按需連線與請求分流是兩套不同的判斷,必須分開檢查。系統會依順序評估按需規則,由第一個符合條件的規則決定動作;連線後的 Config 規則也重視排列順序,但兩者的「符合」並非同一件事。將 DOMAIN-SUFFIX 移到 Config 頂端,無法修正系統按需清單中 Wi-Fi 例外順序錯誤的問題。
| 檢查層級 | 具體衝突情況 | 處理方式 |
|---|---|---|
| On Demand | 通用 Wi-Fi Connect 排在指定 SSID 的 Disconnect 之前 | 將指定 SSID 例外移至通用 Wi-Fi 條件之前,再重新切換網路。 |
| On Demand | 無條件 Connect 優先符合 | 先排列特定網路與網域評估條件,再將範圍較廣的後備條件放在後面。 |
| Global Routing | 停在 Direct,卻期待 Config 的 PROXY 規則生效 | 返回 Home 檢查路由模式,選擇 Config 後,再確認實際啟用的設定檔。 |
| Config | 範圍較廣的規則排在特定網域規則之前 | 先檢查 DOMAIN-SUFFIX 等特定條件,再檢查 GEOIP、IP-CIDR 等規則,最後檢查 FINAL。 |
不要把 FINAL 當成 On Demand 的後備動作。FINAL 只處理前面的分流規則都未符合的請求,無法表示「其他 Wi-Fi 自動連線」。同樣地,GEOIP 與 IP-CIDR 用於比對請求目的位址,不能用來判斷裝置目前連的是家中 Wi-Fi 還是行動網路。
七、依測試矩陣排查問題,再停用自動連線
有效的測試應包含觸發前後的網路、連線狀態與存取結果。先固定使用同一個可存取的目標,每次只變更一項網路條件;切換網路時若舊連線短暫保持,不要立刻判定規則失效。請一併查看連線狀態與目標請求記錄。
| 測試情境 | 預期結果 | 結果不符時先檢查 |
|---|---|---|
| 從其他網路切換至 Home-WiFi | 依指定 SSID 的 Disconnect 例外處理 | 實際 SSID、規則順序、變更是否已儲存 |
| 從 Home-WiFi 切換至其他 Wi-Fi | 依通用 Wi-Fi Connect 條件處理 | 是否有設定通用條件、是否已完成驗證頁面登入 |
| 關閉 Wi-Fi,改用行動數據 | 依行動網路 Connect 條件嘗試連線 | 行動數據權限、網路可達性、介面條件 |
| 連線後瀏覽 example.com | 依目前 Config 的對應策略處理 | Global Routing、已啟用的設定檔、實際請求網域 |
為什麼手動中斷後又自動連上?
先前往 Settings → On Demand 停用按需連線並儲存,再到 Home 中斷連線。若系統仍會觸發,請在 iPhone / iPad 的系統 Settings → General → VPN & Device Management → VPN 中,開啟對應設定的資訊頁,檢查 Connect On Demand 是否仍啟用。系統語言不同,畫面顯示名稱也可能不同。
回到家中 Wi-Fi 後仍顯示已連線,該怎麼辦?
先在系統 Wi-Fi 頁面確認目前的 SSID,再檢查指定 SSID 的 Disconnect 是否排在通用 Connect 之前。儲存後切換至其他網路,再重新連上該 Wi-Fi;同時確認檢查的是 Shadowrocket 對應的 VPN 設定。
On Demand 已啟用,網頁仍然無法開啟?
暫時停用 On Demand,改由 Home 手動連線並存取相同目標。手動連線也失敗時,先檢查底層網路、伺服器參數與 DNS;若手動連線正常但自動觸發失敗,再檢查網路條件、規則順序與系統按需開關。
關閉網頁後,為什麼沒有自動中斷連線?
關閉網頁不是按需規則通用的 Disconnect 條件。若要明確停止連線,請先停用 On Demand,再手動中斷;若只想讓其他網站直連,請保持隧道連線並使用 Config 的 DIRECT 分流,不要以瀏覽器分頁狀態控制連線。
完成排查後,依照「指定 Wi-Fi 例外、其他 Wi-Fi、行動網路、其餘後備條件」的實際需求逐項還原設定。不需要的網域評估條件無須保留。每新增一項設定就重新執行對應測試,確認連線動作與請求策略各自符合預期後,再完成設定。