Shadowrocket(小火箭)的 On Demand 可讓系統依條件管理 VPN 連線,與指定某個網域使用代理不同。本文從 Settings → On Demand 開始,先設定 Wi-Fi 與行動網路的連線條件,再說明網域評估的限制,最後透過切換網路及檢視請求記錄確認結果。適合已能手動連線,並希望減少重複開關操作的使用者。
先區分自動連線與請求分流
On Demand 決定系統是否依條件建立 VPN 通道;Global Routing 則決定連線建立後如何處理請求,兩者屬於不同層次。自動連線成功,不代表每個請求都會透過代理連線;某個請求符合 DIRECT,也不代表系統應中斷 VPN。
在 Home 確認 Global Routing:Proxy 代表全域代理模式,Direct 代表全域直連模式,Config 依設定檔規則處理,Scene 則依已設定的情境切換相關設定。測試規則分流時請使用 Config,並確認其中啟用的是預期設定。Scene 不等於 On Demand,請勿將情境切換與系統自動連線混為一談。
Settings → On Demand:設定可供核對的初始條件
開始前先儲存目前設定,並記下 On Demand 原有的條件。Home 可查看目前連線與伺服器,Config 用於檢查設定檔,Settings → On Demand 則用來管理依條件連線。不同系統版本與介面語言的條件編輯項目排列可能不同,操作時請確認條件類型與動作含義,不要只依開關位置判斷。
- 記錄基準狀態。在 Home 記下目前伺服器、Global Routing 模式及手動連線結果;若已啟用 Scene,先排除情境自動變更造成的影響。
- 開啟條件設定。前往 Settings → On Demand,確認啟用狀態、現有網路條件與動作。先只保留一項待驗證的條件,避免同時變更多項設定。
- 允許系統儲存 VPN 設定。首次設定時,若系統要求新增 VPN 設定,請確認提示內容後授權。系統設定中的 VPN 項目名稱與位置可能隨系統版本而異,請以裝置實際顯示為準。
- 儲存後變更網路條件。完成編輯並返回後,切換一次 Wi-Fi 或行動網路。不要只停留在編輯畫面等待,也不要將尚未儲存的內容視為已生效規則。
- 分別記錄連線狀態與瀏覽結果。記下目前網路、VPN 是否已連線,以及網頁是否可開啟。分開記錄這三項,才能判斷問題出在觸發失敗,還是連線後的流量分流。
On Demand 由系統網路機制執行,不需要讓 Shadowrocket 持續停留在前景。背景觸發與否仍取決於系統是否收到符合條件的網路變更或連線請求;反覆強制結束 App 並非驗證自動連線的必要步驟。
依 Wi-Fi 名稱與行動網路設定動作
Wi-Fi 條件中的名稱是 SSID,不是路由器管理位址,也不是 Wi-Fi 密碼。輸入時請保留原有大小寫、空格與符號,不要自行在名稱前後加上引號。若雙頻網路使用不同名稱,請分別加入需要比對的條件;若共用同一名稱,單靠 SSID 條件無法區分頻段。
以下兩張卡片是條件設定範例,並非可直接匯入的設定文字。HomeNet 與 OfficeNet 是示範名稱,實際設定時請改用裝置 Wi-Fi 清單中顯示的 SSID。Connect 表示要求建立連線,Disconnect 表示符合該條件時中斷連線;可用動作請以 App 介面顯示為準。
已確認可直接連線的家庭 Wi-Fi
- 設定入口
- Settings → On Demand
- 條件類型
- Wi-Fi,指定 SSID
- 範例名稱
- HomeNet
- 目標動作
- Disconnect
- 驗證方式
- 從行動網路切換回 HomeNet
僅在確定希望此網路不維持 VPN 連線時使用;SSID 相符並不能證明網路可信。
離開指定 Wi-Fi 後連線
- 設定入口
- Settings → On Demand
- 條件類型
- 行動網路
- 目標動作
- Connect
- 事前檢查
- 已開啟行動數據且允許連線
- 驗證方式
- 關閉 Wi-Fi 後送出新請求
此條件只適用於行動網路,不會自動涵蓋所有未指定名稱的 Wi-Fi。
若要設定「HomeNet 中斷連線,其餘 Wi-Fi 連線」,還必須明確設定其他 Wi-Fi 的條件,不能只新增一條行動網路 Connect 就認為已涵蓋所有情況。較明確的 SSID 條件應排在較廣泛的網路條件之前;請檢查儲存後的順序,避免前面的廣泛條件先符合,導致後面的特定條件無法生效。
- 先測試 HomeNet 與行動網路兩種狀態,再加入「其他 Wi-Fi」這一層,避免一次引入三個變數。
- 不同地點可能使用相同的 Wi-Fi 名稱。僅憑 SSID 自動 Disconnect,不適合作為網路安全驗證方式。
- 使用網頁登入驗證的 Wi-Fi,請先完成網路登入,再確認伺服器是否可連線。已連上 Wi-Fi 不代表已能存取網際網路。
網域觸發:先瞭解 EvaluateConnection 的適用範圍
系統按需 VPN 的網域機制屬於連線評估,並非在瀏覽器開啟任意網址時執行開關命令。網路層級的 Connect 或 Disconnect 可直接決定符合該網路條件時採取的動作;網域評估則通常透過 EvaluateConnection 及其網域動作,判斷特定網域解析時是否需要連線。只有在目前介面提供相應網域評估選項時,才使用此方式設定;不要將網域填入 Wi-Fi 名稱欄位。
ConnectIfNeeded 的重點在於「需要時」:系統可依 DNS 解析失敗、指定 DNS 伺服器或探測結果,評估是否需要建立 VPN。若網域已在目前網路成功解析,不應預期系統一定會啟動連線。NeverConnect 表示該網域不會觸發建立連線,並不代表「存取此網域時會立即中斷已建立的 VPN」。
| 設定層級 | 核對項目 | 可預期的行為 | 不能據此推論 |
|---|---|---|---|
| 網路條件 Connect | 符合 Wi-Fi 或行動網路條件 | 要求建立 VPN | 所有請求都透過代理 |
| 網路條件 Disconnect | 指定網路條件 | 中斷 VPN | 其他網路也維持中斷 |
| ConnectIfNeeded | 網域與解析評估條件 | 符合連線需求時建立 VPN | 開啟任何同網域網頁都必定觸發 |
| NeverConnect | 網域評估 | 該網域不會觸發連線 | 主動中斷既有連線 |
| DOMAIN-SUFFIX | 已進入通道的請求 | 依網域後綴選擇策略 | 在通道外自動啟動 VPN |
結論:需要穩定自動連線時,先設定網路條件
若目標是「離開家庭 Wi-Fi 後就連線」,請先完成 SSID 與行動網路的 Connect/Disconnect 組合;只有確實需要依解析結果連線時,再加入網域評估。不要用網域評估取代所有網路條件。
測試網域條件時,請使用自己管理且解析行為已知的網域,並排除 DNS 快取的影響。已開啟的網頁、重複使用中的連線、直接存取 IP 位址,以及 App 自行使用加密 DNS,都可能使測試未產生預期的系統網域解析事件。範例網域 example.com 僅用於說明規則格式,不適合作為「一定解析失敗並觸發連線」的測試目標。
連線建立後,使用 Config 規則決定網域流量走向
若實際需求是「指定網域使用代理,其餘請求直連」,通常應由網路條件負責建立連線,再由 Config 中的 Rule 負責請求分流。以下是規則片段示意,PROXY 必須對應目前設定中實際可用的策略名稱;未確認策略定義前,不要直接覆寫現有設定。
[Rule]
DOMAIN-SUFFIX,example.com,PROXY
IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
GEOIP,CN,DIRECT
FINAL,PROXY
DOMAIN-SUFFIX,example.com,PROXY會比對 example.com 及其子網域,用途是選擇連線策略,並非建立 On Demand 網域條件。IP-CIDR,192.168.0.0/16,DIRECT,no-resolve會依目標 IP 網段處理;no-resolve表示不會為了這條 IP 規則額外觸發網域解析。GEOIP,CN,DIRECT依據目標 IP 與本機資料庫判定所屬區域,不能取代精確網域規則,也不等於依網頁語言分類。FINAL,PROXY是前面的規則都未符合時使用的備援規則,應放在規則清單末尾。此範例的備援策略是代理,並非「其餘全部直連」;若需要後者,請確認實際需求後將備援策略改為 DIRECT。
驗證時分兩步進行:先確認 On Demand 已建立連線,再確認 Global Routing 設為 Config,並檢查請求實際符合的規則。若使用 Proxy 模式,無法據此判斷上述分流片段是否生效;若使用 Direct 模式,也不能因網頁可開啟就認定代理連線正常。
Shadowsocks、VMess、VLESS、Trojan、Hysteria2、WireGuard 等連線參數屬於伺服器通訊協定層,與「在什麼條件下連線」是不同設定。若現有服務的位址、連接埠或認證資訊失效,應先修正這些項目;新增 On Demand 條件不會改變通訊協定設定是否有效。
用四種狀態驗證設定組合,不要只檢查一次開關
每次只變更一項設定,儲存後重新進入對應的網路狀態,並送出新的網路請求。以下結果是前述範例組合的驗收目標,並非對任何裝置實際測試結果的保證。切換網路時需要重新建立連線,不應只依切換瞬間的圖示判斷。
| 測試狀態 | 操作方式 | 預期結果與檢查項目 |
|---|---|---|
| 指定 Wi-Fi | 連線至 HomeNet,送出新請求 | 符合 Disconnect;確認 VPN 狀態及網頁能否開啟 |
| 行動網路 | 關閉 Wi-Fi,確認行動數據可用 | 符合 Connect;確認連線已建立且伺服器可連線 |
| 其他 Wi-Fi | 連線至另一個已知 SSID | 結果應由「其他 Wi-Fi」條件決定,而非行動網路條件 |
| 切回指定 Wi-Fi | 從行動網路切回 HomeNet | 再次符合 Disconnect;檢查是否有較廣泛的規則先行符合 |
若發現「手動關閉後又重新連線」,請先確認 On Demand 是否仍啟用,以及目前網路是否持續符合 Connect 條件。系統依條件再次連線,不代表 App 忽略了操作。若要暫時維持中斷,請先停用 On Demand,再於 Home 中斷連線;恢復時依原先記錄重新啟用。
常見問題:自動重新連線、網域未觸發與部分網頁無法使用
為什麼中斷連線後,很快又自動連上?
前往 Settings → On Demand,確認目前 Wi-Fi 或行動網路是否符合 Connect。若要暫時停止自動連線,請先關閉 On Demand,再到 Home 中斷連線。保留原有條件的記錄,恢復使用時再重新啟用,避免為了暫停而刪除所有設定。
行動網路可以自動連線,換成其他 Wi-Fi 卻不行?
行動網路條件只適用於行動網路。請確認是否已設定其他 Wi-Fi 的動作,以及指定 SSID 條件是否排在較廣泛的條件之前。先完成 Wi-Fi 網頁登入驗證,再重新測試;若手動連線也失敗,請檢查目前網路是否允許存取既有伺服器的位址與連接埠。
輸入網域後,為什麼開啟網頁沒有觸發連線?
先確認輸入的是網域評估項目,而不是 Config 中的 DOMAIN-SUFFIX。接著確認 ConnectIfNeeded 的解析條件;DNS 快取、直接以 IP 發出請求,或 App 使用內建 DNS,都可能影響觸發結果。若只是希望該網域使用代理,透過網路 Connect 搭配 Config 分流會更容易驗證。
已自動連線,但只有部分網頁無法開啟,該怎麼辦?
在 Home 確認 Global Routing,再到 Config 檢查目前檔案的規則順序、DNS 設定與 FINAL。比較無法開啟與正常網域所符合的策略,先儲存原有設定,再逐項調整。不要同時更換伺服器、修改 DNS 並重新排列 On Demand 條件,否則無法判斷是哪項變更造成影響。