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 已連線,就認定特定網域一定經過代理。
- Settings → On Demand:設定按需連線條件與動作,並確認系統中對應 VPN 設定的按需連線狀態。
- Home → Global Routing:確認目前的流量處理方式。使用 Config 規則進行驗證時,請選擇 Config,不要停留在 Proxy 或 Direct。
- Config:管理流量分流規則,例如
DOMAIN-SUFFIX、IP-CIDR與FINAL。
設定前先建立可重現的連線基準
先確認同一份設定可在手動連線時正常運作,再啟用自動化。On Demand 不會修正錯誤的伺服器位址、驗證參數或失效設定。若手動連線已失敗,再加入自動重連只會增加變因,無助於找出原始問題。
- 在 Home 選取自己已有且可用的設定,記錄目前的 Global Routing 方式;需要檢查分流時請使用 Config。
- 先暫時關閉 Settings → On Demand 中的按需連線,手動連線並開啟平時可正常瀏覽的頁面,確認基本連線可用。
- 記下測試用 Wi-Fi 的正確 SSID。以系統 Wi-Fi 清單顯示的名稱為準,不要用路由器型號或自行設定的網路備註代替。
- 前往 Settings → On Demand,先設定最少的網路條件;每次只修改一條,儲存後切換網路驗證。
- 在系統「設定 → 一般 → 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,因此名稱符合不代表網路可信。不同頻段若使用相同名稱,也可能套用同一條規則;名稱不同則需分別處理。
- 若還有「其他 Wi-Fi 使用 Connect」規則,請將它排在指定 SSID 的 Disconnect 之後。
- 只有確實需要時,才加入不限定網路類型的後備規則。太早放入廣泛的 Connect,可能會遮蔽後續的特定條件。
- 確認系統已授予讀取 Wi-Fi 名稱所需的權限;若無法讀取 SSID,請勿假設指定名稱的例外已符合。
- 公共 Wi-Fi 可能需要先完成網路登入。網路尚未正常連線時,Connect 只代表嘗試連線,不保證連線成功。
多條規則同時符合時,先確認外層順序
系統會依清單順序評估外層 On Demand 規則,並採用第一條符合規則的動作,而非累加所有符合規則的動作。若單條外層規則同時指定介面類型與 SSID,兩項條件都必須符合;SSID 清單中的多個名稱則用於比對其中之一。網域評估屬於另一個層級,不能直接套用一般網路條件的判斷方式。
| 順序 | 條件 | 動作 | 預期測試結果 |
|---|---|---|---|
| 1 | Wi-Fi,SSID 為 Home-WiFi | Disconnect | 連上該名稱的 Wi-Fi 時套用此動作 |
| 2 | 任意 Wi-Fi | Connect | 其他 Wi-Fi 符合此條件 |
| 3 | Cellular | Connect | 切換至行動網路時套用此動作 |
結論:先驗證例外,再測試一般條件
儲存後先連上 Home-WiFi,確認不會被第二條規則搶先連線;再切換到其他 Wi-Fi 與行動網路。若第一步就不符合預期,先檢查 SSID 與規則順序,不必同時修改 Config。
Connect 表示符合條件時發起連線;Disconnect 表示中斷連線,且在該條件下不透過此機制建立連線。Ignore 表示此次按需評估不變更連線狀態,不等於 Disconnect,也不是「略過這條,繼續找下一條」。若希望特定網路明確保持中斷,請選擇符合需求的動作,不要依賴 Ignore。
- 將明確的例外排在廣泛條件之前,儲存後重新進入頁面確認順序。
- 實際連上或離開網路以觸發評估,不要只在原本的網路中反覆重新整理網頁。
- 分別記錄「符合條件後未發起連線」與「已發起連線但失敗」;後者還需檢查基本網路與現有設定。
網域自動連線:分清按需評估與分流比對
「存取某個網域時就連線」可能代表兩種不同需求:一是在通道尚未建立時,依網域評估是否需要連線;二是在通道已建立後,讓特定網域使用 PROXY。前者屬於系統 On Demand 的 EvaluateConnection 機制,後者則由 Config 規則處理。只新增 DOMAIN-SUFFIX 不會自動具備前者的功能。
依系統規則的定義,EvaluateConnection 可包含網域評估項目。ConnectIfNeeded 會根據網域解析與可連線條件,判斷是否需要建立通道;並非看到任何網頁網址就無條件連線。NeverConnect 則表示該網域評估項目不觸發連線;它不等於流量規則中的 DIRECT,也不會中斷已建立的連線。
- 先確認設定入口:在 Settings → On Demand 查看目前介面是否提供網域評估相關選項。若只有 Wi-Fi、Cellular 等網路條件,請勿把網域填入 SSID,也不要以為貼上分流規則就能增加系統功能。
- 填入網域,不是 URL:網域條件使用
example.com這類名稱,不要填入https://、路徑/account或連接埠:443。實際比對範圍請以欄位說明為準,不要任意加入萬用字元。 - 留意第一條外層符合規則:若前面已有任意 Wi-Fi 的 Connect,後面的 EvaluateConnection 就不會被選中。若需要網域按需評估,應重新規劃相應網路條件下的動作。
- 留意 DNS 快取:既有解析結果、App 自行採用的解析方式,以及直接存取 IP,都可能使測試不會觸發新的網域評估。只按網頁重新整理,無法證明規則未生效。
若需求只是「example.com 走代理,其餘流量直連」,可依實際策略名稱在現有 Config 中設定分流。以下僅示範規則語法,假設目前設定中的 PROXY 策略有效;這不是 On Demand 設定,也不包含任何連線服務。
DOMAIN-SUFFIX,example.com,PROXY
FINAL,DIRECT
使用這段規則前,必須先有可運作的通道,再將 Global Routing 設為 Config。若原設定已有其他規則,請勿直接用兩行範例覆蓋全文;應檢查前面是否有更早符合的條件,並保留原本必要的設定。
依固定測試步驟排查自動連線異常
測試期間固定使用同一份既有設定,每次只切換一項條件。每次記錄目前網路、預期動作、實際 VPN 狀態與網頁結果。網頁能開啟只代表這次存取成功,不能單獨證明 On Demand 符合條件,也不能證明流量經過 PROXY。
- 測試指定 Wi-Fi:連上設定中的 SSID,等待網路連線完成,再查看 VPN 狀態。若預期動作是 Disconnect,請確認沒有其他自動化機制重新建立連線。
- 測試其他 Wi-Fi:切換至名稱不同且可正常連線的網路,確認廣泛的 Connect 是否發起連線;不要把尚未完成網路登入誤判為設定錯誤。
- 測試 Cellular:關閉 Wi-Fi 並確認行動數據可用,再查看通道狀態。測試期間維持相同的 Global Routing 方式。
- 測試網域:僅在已設定網域評估時進行。先確認通道尚未連線,再發起新的網域存取,並搭配連線狀態與可用記錄判斷,不要只看頁面是否載入。
- 恢復基準:若反覆重新連線,請關閉 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 與規則順序。