本文適合已在 Shadowrocket 匯入自己的訂閱,且手動連線正常的使用者。先分清 On Demand 的連線觸發與 Config 的流量分流,再依序設定指定 Wi-Fi、Cellular 和網域條件。檢查時一次只變更一個條件,分別確認規則比對結果、隧道狀態與請求策略,避免將自動連線失敗和規則分流錯誤混為一談。
先分清 On Demand 與 Global Routing
Shadowrocket(小火箭)的 On Demand 運用 Apple 系統的 VPN 隨需機制,在網路變更或出現符合條件的網路請求時,判斷是否建立連線。它處理的是「何時連線」,不是「每個請求採用哪種策略」。連線建立後,請求仍會受到 Home 中 Global Routing 的目前模式及相關設定影響。
日常檢查可分為三個層次:在 Home 確認選取的連線與 Global Routing,在 Config 檢查實際啟用的設定檔,並在 Settings → On Demand 檢查觸發條件。不要試圖透過修改 On Demand 修正錯誤的伺服器位址、連接埠或驗證參數;這些項目應先在手動連線時確認。
Config
建議連線建立後,依目前設定中的規則決定請求策略。檢查 DOMAIN-SUFFIX、IP-CIDR、GEOIP 與 FINAL 時,請確認啟用的是預期的 Config。
適用情境:需要自動連線,同時保留明確分流規則的日常使用。
Proxy
以代理模式處理由 App 接管的請求,可暫時排除 Config 分流的影響;這不代表 On Demand 已啟用,也不保證系統的所有流量都會交由 App 處理。
適用情境:短時間確認連線本身與設定規則是否分別正常。
Direct
採用直連模式。即使 On Demand 已觸發並建立隧道,請求也不會因此自動改走代理,因此不能只憑連線標示判斷請求的出口。
適用情境:確認直連行為,或排查「已連線但策略不符」的狀況。
結論:先固定路由模式
開始測試前,先將 Global Routing 固定為 Config,並記下目前的設定檔名稱;完成一組觸發測試前,不要同時切換模式、設定檔與連線項目。
啟用前:先完成一次手動連線檢查
以下步驟以使用者已擁有自己的服務商與訂閱為前提。本文不提供、銷售或推薦節點與訂閱。更新訂閱與設定 On Demand 是兩項獨立操作:前者更新現有連線資訊,後者控制系統何時使用連線;自動連線無法修復過期的訂閱內容。
-
確認現有內容
前往 Home,確認已匯入自己的訂閱並視需要完成更新,接著選取一個已知可用的連線。核對位址、連接埠、協定與驗證資訊,此時不要同時更改多項參數。
-
手動連線
在 Home 手動啟用連線;首次使用時,請依系統提示允許加入 VPN 設定。若手動連線就失敗,先排除連線參數或目前網路的問題,再繼續設定自動觸發。
-
確認分流
在 Home → Global Routing 確認模式,再前往 Config 檢查啟用的設定檔。使用一個明確知道應採用哪種策略的請求進行測試,並記錄請求時間與比對結果。
-
前往設定
開啟 Settings → On Demand,先檢查現有條件與順序。若已有自動化規則,請記下原設定;只保留本次需要驗證的條件,避免舊規則先行符合。
-
逐項啟用
在 Settings → On Demand 設定一項網路條件並啟用隨需連線,接著返回 Home 查看狀態,再實際切換網路。新增網域條件前,先確認 Wi-Fi 與 Cellular 的基本觸發正常。
以下以 Connect、Disconnect、EvaluateConnection、Ignore 說明 Apple 隨需規則的動作意義,並非逐一對應 Shadowrocket 介面中的按鈕名稱。可編輯欄位與動作組合請以目前介面為準;介面未提供的條件,不要以貼上 Config 規則的方式取代。
Wi-Fi SSID:將特定網路條件放在一般條件之前
SSID 是 Wi-Fi 網路名稱,不是路由器位址,也不是無線基地台的硬體位址。設定指定網路條件時,請從裝置目前連線的 Wi-Fi 資訊核對完整名稱,例如 Home-WiFi。留意大小寫、空格與標點,不要自行假設 Home-* 會以萬用字元比對。
在 Settings → On Demand 的 Wi-Fi 條件中輸入或選取目標 SSID,並設定該網路下的連線行為。例如,若希望在已確認符合自身使用需求的家用網路中斷線、在其他 Wi-Fi 網路中連線,就應將特定 SSID 的中斷條件排在一般 Wi-Fi 連線條件之前。SSID 只是比對依據,不代表網路身分或可信程度。
| 順序 | 比對條件 | 動作意義 | 檢查方式 |
|---|---|---|---|
| 1 | Wi-Fi,SSID 為 Home-WiFi | Disconnect | 連上此 SSID 後,檢查隧道是否依設定中斷。 |
| 2 | 其他 Wi-Fi | Connect | 切換至另一個已知名稱的 Wi-Fi,確認是否觸發連線。 |
| 3 | 其他網路 | 另行設定條件 | 蜂巢式網路需要另外設定,不能從 Wi-Fi 條件推論。 |
此表僅示意規則意圖,不是可直接匯入的設定文字。若系統或 App 提示需要讀取網路資訊的權限,請依實際提示確認;無法取得 SSID 時,指定 SSID 條件可能無法如預期比對。若公共 Wi-Fi 需要透過網頁登入驗證,請先完成驗證再測試隨需連線;不要將尚未取得網際網路存取權限誤判為連線參數錯誤。
Cellular:關閉 Wi-Fi 後單獨測試
Cellular 條件適用於裝置實際使用的行動數據網路。設定前請確認裝置具備並已啟用行動數據;僅支援 Wi-Fi 的 iPad 不會因新增此條件而具備行動網路功能。網路名稱相似也不代表網路類型相同:另一台裝置連上手機熱點時,通常仍是使用自己的 Wi-Fi 介面。
在 Settings → On Demand 為 Cellular 設定所需動作,接著關閉 Wi-Fi,確認裝置確實切換至行動數據。離開某個 SSID 的涵蓋範圍,不一定能形成明確的測試條件,因為裝置可能立即連上另一個已儲存的 Wi-Fi。
- 需要在行動網路下自動連線:將 Cellular 條件設為連線動作,再確認前方是否有較一般的條件先行符合。
- 需要在行動網路下保持中斷:設定對應的中斷動作,並確認清單末尾的一般連線條件是否會覆蓋預期設定。
- 使用雙 SIM 裝置:先記下目前用於行動數據的門號;切換數據門號後重新測試,不要將電信網路變更與規則順序問題混為一談。
- 留意數據用量:On Demand 控制的是連線觸發,不是流量配額工具;更新訂閱、App 同步與其他請求仍可能使用行動數據。
網域觸發:不要把 DOMAIN-SUFFIX 搬到設定中
與網域相關的隨需連線屬於系統連線評估機制。Apple 的 EvaluateConnection 可依據網域比對,以及連線所需的 DNS、可連線性等條件,判斷是否建立連線。它不是持續檢查每個網頁 URL 的篩選器,也不代表「存取某個網域時一定會立即無條件連線」。只有目前介面提供相應的網域評估欄位時,才依欄位意義設定。
在 Settings → On Demand 檢查是否提供網域評估選項。若欄位可編輯,請依欄位要求填入網域,例如 example.com;不要貼上 https://example.com/path 這類完整 URL,也不要將 DOMAIN-SUFFIX,example.com,PROXY 當成網域值。子網域是否包含在比對範圍內,應依該欄位的實際比對方式確認,不能套用 Config 的規則語法。
| 項目 | On Demand 網域評估 | Config 網域規則 |
|---|---|---|
| 主要用途 | 評估是否需要建立連線。 | 決定已接管請求採用的策略。 |
| 設定位置 | Settings → On Demand 中實際提供的網域欄位。 | Config 中啟用設定檔的規則區段。 |
| 內容格式 | 依欄位要求填寫網域與評估條件。 | DOMAIN-SUFFIX,example.com,PROXY |
| 主要干擾因素 | DNS 快取、既有連線、App 的解析方式與前序隨需規則。 | 前序規則先行符合、策略名稱錯誤或啟用的設定檔不符。 |
上表的 Config 規則還需要目前設定檔中有可用的 PROXY 策略。這只是在說明分流語法,不會建立 On Demand 條件。測試網域觸發時,請確認前面沒有網路層級的 Connect 條件已無條件建立隧道;否則只能證明網路條件生效,無法證明網域評估生效。
結論:測試網域時隔離條件
驗證網域評估時,先暫時停用可能提前符合的廣泛網路連線條件,並關閉相關 App 的既有連線工作階段後重新發出請求;若介面沒有網域評估選項,就保留網路觸發設定,不要用 Config 規則冒充此功能。
多條規則:先比對連線條件,再處理請求策略
隨需規則會依序評估,優先採用第一條符合的規則。通常應將特定 SSID 等例外放在前面,適用範圍較廣的介面條件或後備條件則放在後面。同一條規則若填入多個條件,也要分清楚「同一欄位列出多個可選值」與「同時限制介面和 SSID」;不能把所有條件都當成任一項符合即可。
Connect 表示符合條件時建立連線;Disconnect 表示符合條件時不維持該連線;Ignore 表示此規則不會變更目前的連線狀態,不能當成 Disconnect 使用。EvaluateConnection 則會進一步評估連線條件,不能視為無條件 Connect。實際設定時只使用介面支援的動作,並記錄動作順序。
- 先列出預期:例如「Home-WiFi 中斷,其他 Wi-Fi 連線,Cellular 連線」,每種網路狀態只設定一個明確結果。
- 先特定、後一般:指定 SSID 應排在一般 Wi-Fi 條件之前;不要讓一般條件排在會被它覆蓋的例外之前。
- 檢查網域評估順序:網路層級的 Connect 已符合時,後續的網域評估通常不會再影響這次連線判斷。
- 最後檢查 Config:連線建立後,再核對 DOMAIN-SUFFIX、IP-CIDR、GEOIP 等請求規則與末尾的 FINAL;這是另一個比對層次。
不要混淆「隨需規則的後備動作」與 FINAL。FINAL 是 Config 中請求規則的最終策略,應放在請求規則清單末尾;它不會選擇 Wi-Fi,也不會代替系統啟用 On Demand。
測試與排查:一次只變更一個變數
測試紀錄至少應包含目前網路類型、SSID、On Demand 條件順序、Home 連線狀態、Global Routing 模式,以及請求比對結果。不必預設固定的連線時間:網路切換、系統排程與伺服器回應都會影響觀察結果,不能以某個固定秒數作為必然成功的標準。
為什麼手動中斷後又自動連線?
先前往 Settings → On Demand 暫時關閉隨需連線,再返回 Home 手動中斷連線。若目前網路持續符合 Connect 條件,系統後續評估時可能再次建立連線;若要長期停止,請修改條件或關閉此功能。
回到家裡後,為什麼沒有自動中斷?
確認目前實際連線的 SSID 是否與設定完全相同,再檢查指定 SSID 條件是否排在一般 Wi-Fi 條件之前。若介面提示需要網路資訊權限,請先處理權限,再重新切換網路測試。
使用行動數據時能觸發,網頁卻無法開啟?
先關閉 On Demand,在相同的行動網路下手動連線並測試。若手動連線也失敗,請檢查現有連線參數與網路可連線性;若手動連線正常,再核對條件順序、Home → Global Routing,以及 Config 中實際啟用的規則。
為什麼存取目標網域時沒有觸發?
先確認介面確實設定了網域連線評估,而不只是新增 Config 規則。關閉 App 的既有連線工作階段後重試,並檢查 DNS 快取與 App 自身的解析方式;若此功能設定為在解析失敗等條件下觸發,正常解析時不連線可能符合原本設定。
更新訂閱後需要重新設定嗎?
更新後先返回 Home,確認選取的項目仍然存在,並手動測試一次。訂閱內容變更可能影響連線項目,但不代表所有隨需條件都需要重新建立;先確認手動連線正常,再恢復 On Demand 測試。
完整驗收應包含「指定 Wi-Fi → 其他 Wi-Fi → Cellular → 指定 Wi-Fi」的往返切換,並分別記錄預期動作與觀察到的狀態。若要撤銷這次設定,請先關閉 Settings → On Demand,再還原原有條件與順序;避免只刪除單一條件,卻留下適用範圍更廣的自動連線規則。