Shadowrocket On Demand 設定教學:依 Wi-Fi、行動網路與網域自動連線

了解 On Demand 如何依指定 Wi-Fi 名稱、行動網路與網域評估連線,以及多條規則同時符合時的判斷順序。

本文重點

On Demand 決定系統何時建立或中斷 VPN 通道,不會決定特定網站最後使用 DIRECT 還是 PROXY。本文適合已有服務商與設定,且手動連線正常的使用者:先設定 Wi-Fi 與行動網路條件,再分清網域按需評估與 Config 分流,最後透過切換網路確認規則順序。

先分清 On Demand、Global Routing 與 Config

Shadowrocket(小火箭)的 On Demand 是系統按需連線機制的設定入口。網路環境變更或符合特定按需評估條件時,系統會判斷是否建立連線。這不是每次請求都先詢問是否開啟代理的開關,也不代表 App 會持續留在前景。

Home 中的 Global Routing 控制連線後的流量處理方式。Proxy、Direct、Config、Scene 與 On Demand 屬於不同層級:前者處理流量如何傳送,後者處理通道何時連線。排查時應分別記錄這兩項,避免看到 VPN 已連線,就認定特定網域一定經過代理。

網路條件變更評估按需規則通道狀態變更請求進入通道判斷路由策略

設定前先建立可重現的連線基準

先確認同一份設定可在手動連線時正常運作,再啟用自動化。On Demand 不會修正錯誤的伺服器位址、驗證參數或失效設定。若手動連線已失敗,再加入自動重連只會增加變因,無助於找出原始問題。

  1. 在 Home 選取自己已有且可用的設定,記錄目前的 Global Routing 方式;需要檢查分流時請使用 Config。
  2. 先暫時關閉 Settings → On Demand 中的按需連線,手動連線並開啟平時可正常瀏覽的頁面,確認基本連線可用。
  3. 記下測試用 Wi-Fi 的正確 SSID。以系統 Wi-Fi 清單顯示的名稱為準,不要用路由器型號或自行設定的網路備註代替。
  4. 前往 Settings → On Demand,先設定最少的網路條件;每次只修改一條,儲存後切換網路驗證。
  5. 在系統「設定 → 一般 → VPN 與裝置管理 → VPN」查看對應設定。系統介面名稱可能不同,重點是確認查看的確實是 Shadowrocket 使用的那份設定。

依 Wi-Fi 名稱與行動網路設定條件

常見需求是「指定 Wi-Fi 不自動連線,其他網路則自動連線」。設定重點不是逐一列出所有 Wi-Fi 名稱,而是先加入明確的例外,再設定較廣泛的網路條件。以下的 Home-WiFi 是示意名稱,實際設定時請填入裝置目前顯示的 SSID。

指定 Wi-Fi 例外

位置
Settings → On Demand
網路條件
Wi-Fi
SSID
Home-WiFi,請換成實際名稱
動作
Disconnect
順序
排在廣泛 Wi-Fi 條件之前

只有確定不希望該網路維持通道連線時,才使用 Disconnect。

行動網路連線

位置
Settings → On Demand
網路條件
Cellular
SSID
不適用
動作
Connect
驗證方式
關閉 Wi-Fi 後查看連線狀態

請以目前介面實際提供的條件與動作為準,不要將系統規則鍵直接貼進一般輸入欄位。

SSID 條件辨識的是網路名稱,不是驗證路由器身分。不同地點可能出現相同名稱的 Wi-Fi,因此名稱符合不代表網路可信。不同頻段若使用相同名稱,也可能套用同一條規則;名稱不同則需分別處理。

多條規則同時符合時,先確認外層順序

系統會依清單順序評估外層 On Demand 規則,並採用第一條符合規則的動作,而非累加所有符合規則的動作。若單條外層規則同時指定介面類型與 SSID,兩項條件都必須符合;SSID 清單中的多個名稱則用於比對其中之一。網域評估屬於另一個層級,不能直接套用一般網路條件的判斷方式。

順序條件動作預期測試結果
1Wi-Fi,SSID 為 Home-WiFiDisconnect連上該名稱的 Wi-Fi 時套用此動作
2任意 Wi-FiConnect其他 Wi-Fi 符合此條件
3CellularConnect切換至行動網路時套用此動作

結論:先驗證例外,再測試一般條件

儲存後先連上 Home-WiFi,確認不會被第二條規則搶先連線;再切換到其他 Wi-Fi 與行動網路。若第一步就不符合預期,先檢查 SSID 與規則順序,不必同時修改 Config。

Connect 表示符合條件時發起連線;Disconnect 表示中斷連線,且在該條件下不透過此機制建立連線。Ignore 表示此次按需評估不變更連線狀態,不等於 Disconnect,也不是「略過這條,繼續找下一條」。若希望特定網路明確保持中斷,請選擇符合需求的動作,不要依賴 Ignore。

  1. 將明確的例外排在廣泛條件之前,儲存後重新進入頁面確認順序。
  2. 實際連上或離開網路以觸發評估,不要只在原本的網路中反覆重新整理網頁。
  3. 分別記錄「符合條件後未發起連線」與「已發起連線但失敗」;後者還需檢查基本網路與現有設定。

網域自動連線:分清按需評估與分流比對

「存取某個網域時就連線」可能代表兩種不同需求:一是在通道尚未建立時,依網域評估是否需要連線;二是在通道已建立後,讓特定網域使用 PROXY。前者屬於系統 On Demand 的 EvaluateConnection 機制,後者則由 Config 規則處理。只新增 DOMAIN-SUFFIX 不會自動具備前者的功能。

依系統規則的定義,EvaluateConnection 可包含網域評估項目。ConnectIfNeeded 會根據網域解析與可連線條件,判斷是否需要建立通道;並非看到任何網頁網址就無條件連線。NeverConnect 則表示該網域評估項目不觸發連線;它不等於流量規則中的 DIRECT,也不會中斷已建立的連線。

若需求只是「example.com 走代理,其餘流量直連」,可依實際策略名稱在現有 Config 中設定分流。以下僅示範規則語法,假設目前設定中的 PROXY 策略有效;這不是 On Demand 設定,也不包含任何連線服務。

DOMAIN-SUFFIX,example.com,PROXY
FINAL,DIRECT

使用這段規則前,必須先有可運作的通道,再將 Global Routing 設為 Config。若原設定已有其他規則,請勿直接用兩行範例覆蓋全文;應檢查前面是否有更早符合的條件,並保留原本必要的設定。

依固定測試步驟排查自動連線異常

測試期間固定使用同一份既有設定,每次只切換一項條件。每次記錄目前網路、預期動作、實際 VPN 狀態與網頁結果。網頁能開啟只代表這次存取成功,不能單獨證明 On Demand 符合條件,也不能證明流量經過 PROXY。

  1. 測試指定 Wi-Fi:連上設定中的 SSID,等待網路連線完成,再查看 VPN 狀態。若預期動作是 Disconnect,請確認沒有其他自動化機制重新建立連線。
  2. 測試其他 Wi-Fi:切換至名稱不同且可正常連線的網路,確認廣泛的 Connect 是否發起連線;不要把尚未完成網路登入誤判為設定錯誤。
  3. 測試 Cellular:關閉 Wi-Fi 並確認行動數據可用,再查看通道狀態。測試期間維持相同的 Global Routing 方式。
  4. 測試網域:僅在已設定網域評估時進行。先確認通道尚未連線,再發起新的網域存取,並搭配連線狀態與可用記錄判斷,不要只看頁面是否載入。
  5. 恢復基準:若反覆重新連線,請關閉 On Demand 後手動測試;若手動連線也失敗,先處理網路或既有設定問題。

為什麼關閉連線後,過一會兒又自動連上?

先前往 Settings → On Demand 關閉按需連線,再中斷 VPN。若仍發生連線,請檢查系統 VPN 中實際啟用的設定與其他自動化功能,避免只關閉 App 內的單一選項。

家中 Wi-Fi 已設為 Disconnect,為什麼還是連線?

確認 SSID 是否正確、是否已授予讀取名稱的權限,以及規則順序;尤其檢查任意 Wi-Fi 的 Connect 是否排在前面。儲存後離開再重新連上該網路,重新觸發評估。

加入 DOMAIN-SUFFIX 後,為什麼開啟網站時沒有自動連線?

這個關鍵字屬於 Config 分流,不負責建立通道。請先手動連線,並在 Home → Global Routing 選擇 Config 以驗證規則;若需要依網域建立通道,請另外確認目前的 On Demand 是否提供相應評估選項。

行動網路顯示已連線,但網頁仍無法開啟,應先修改哪一項?

先關閉 On Demand,在相同的行動網路下手動連線測試。確認既有設定可用,再檢查 Global Routing 與 Config 的符合結果;不要同時更換協定、DNS 與規則順序。

App Store 正版確認