On Demand 決定系統何時建立或中斷 VPN 通道;Global Routing 與 Config 則決定通道建立後如何處理請求。本文適合已能手動連線,且已有自己的服務資訊與訂閱的使用者:先設定 Wi-Fi 與行動網路條件,再確認網域評估的適用範圍,最後依固定順序測試,避免混淆自動連線、規則分流與服務可用性。
一、先區分 On Demand 與規則分流
Shadowrocket(小火箭)的 On Demand 是交由 Apple 系統執行的按需連線機制,並非每次瀏覽網頁都重新選擇連線開關。網路介面、Wi-Fi 的 SSID 等條件用來判斷是否需要建立通道;請求進入通道後,才由 Global Routing、目前的 Config 與所選連線設定決定流向。自動連線成功,不代表所有請求都會經過 Proxy。
例如,On Demand 已讓 VPN 保持連線,但 Global Routing 選擇 Direct 時,請求仍會以直連方式處理。若要使用自訂規則,請確認 Global Routing 是否設為 Config。Proxy 是整體代理模式,Scene 則與情境選擇有關;兩者都不能取代 Wi-Fi 或行動網路觸發條件。
結論:先完成一次手動連線,再新增自動條件
先在 Home 選擇現有連線設定,手動連線並確認目標可存取;若這一步未通過,應先檢查服務參數、DNS 與 Config,不要靠新增 On Demand 規則掩蓋連線問題。
二、Settings → On Demand:先記錄目前設定,再啟用條件
開始前,記錄 Home 目前選取的連線設定、Global Routing 模式與 Config。若已有訂閱,請先確認匯入與更新成功,且連線設定仍有效。On Demand 不會更新訂閱,也不會修正過期的驗證資訊;訂閱更新後若設定名稱或選取項目有所變動,還需要重新測試連線。
- 先在 Home 完成手動連線測試;首次使用時,請依系統提示允許新增 VPN 設定。
- 前往 Settings → On Demand 檢查現有條件。先記錄原本的順序,不要直接新增一組意義相反的規則。
- 先新增一項容易驗證的網路條件,例如指定 Wi-Fi 的 SSID;只修改這一項,儲存後再啟用 On Demand。
- 在 iPhone 或 iPad 的系統設定中搜尋 VPN,進入 Shadowrocket 對應的設定詳細資訊,確認 Connect On Demand 狀態。選單路徑可能因系統介面而異,請以裝置實際顯示為準。
- 切換網路後觀察 VPN 狀態,再重新發出一個請求。系統評估條件及建立通道都需要時間,請勿連續快速切換開關。
以下設定卡僅為條件設計範例,並非介面截圖,也不能直接匯入。Connect、Disconnect 表示連線動作;實際可編輯的條件請以 Settings → On Demand 顯示的項目為準。
三、依 SSID 區分 Wi-Fi,分開設定行動網路
SSID 是 Wi-Fi 網路名稱,不是路由器管理位址,也不是裝置在區域網路中的 IP 位址。輸入時請依實際名稱確認大小寫、空格與符號。若家中兩個頻段分別命名為 HomeNet 與 HomeNet-5G,應分別納入預期條件;不要把名稱的一部分當成可自動比對所有網路的萬用字元。
指定 Wi-Fi 的中斷連線例外
- 設定入口
- Settings → On Demand
- 介面條件
- Wi-Fi
- SSID 範例
- HomeNet
- 動作
- Disconnect
- 規則位置
- 一般 Wi-Fi 連線條件之前
只有確定不希望該網路建立通道時才使用;SSID 名稱本身無法證明網路可信。
行動網路連線條件
- 設定入口
- Settings → On Demand
- 介面條件
- Cellular
- SSID 限制
- 不設定
- 動作
- Connect
- 驗證方式
- 關閉 Wi-Fi 後發出新請求
行動網路沒有 Wi-Fi SSID,請勿在此條件中附加家庭網路名稱。
若目標是「指定家庭 Wi-Fi 中斷連線,其他 Wi-Fi 與行動網路則連線」,就必須區分特定 SSID 例外與一般 Wi-Fi 條件。不要只設定家庭網路例外,就認為其他網路會自動採取相反動作;其他情況的行為仍取決於後續條件與原有設定。
- 同名網路:不同地點可能使用相同 SSID,名稱比對無法驗證路由器身分。
- 雙頻合併:兩個頻段使用相同 SSID 時,通常無法透過名稱條件區分頻段。
- 需驗證的網路:若 Wi-Fi 需要透過網頁登入,請先完成網路驗證,再檢查通道連線與存取狀況。
- 介面變更:Wi-Fi 訊號不佳時,介面可能變更;請確認裝置實際使用的網路,而不只是查看 Wi-Fi 是否已開啟。
四、網域觸發不是 DOMAIN-SUFFIX,也不是關閉網頁後中斷連線
設定網域相關的按需連線時,需區分系統連線評估與 App 內的流量分流。Apple 的 On Demand 機制支援透過 EvaluateConnection 評估符合條件的網域,例如在相應條件下依需求建立連線。是否提供網域條件、可選動作及 DNS 判斷項目,請以目前 Shadowrocket 的 On Demand 編輯頁面為準;系統支援的所有欄位,不代表 App 中一定都有對應的輸入欄位。
若頁面提供網域評估條件,請填入網域,而非完整 URL。例如測試網域填寫 example.com,不要填成 https://example.com/path。部分評估會依賴解析失敗或可達性判斷,並非每次存取該網域都會立即連線;現有通道、DNS 快取與重複使用的連線也會影響觀察結果。測試網域觸發時請單獨進行,避免同時存在較早符合的「所有網路皆連線」條件。
| 設定對象 | 要解決的問題 | 不應據此推論的行為 |
|---|---|---|
| On Demand 網域評估 | 系統是否需要為符合條件的請求建立連線 | 關閉某個網頁就會立即中斷整個 VPN |
DOMAIN-SUFFIX | 在 Config 中依網域後綴選擇請求策略 | 只新增規則就能從未連線狀態啟動通道 |
DIRECT | 讓符合條件的請求直接連線至目標 | 中斷正在運作的整個 VPN 通道 |
FINAL | 處理前面未符合規則的請求 | 成為 On Demand 網路條件的預設動作 |
若要「特定網域走 Proxy,其餘直連」,主要應在 Config 中設定,而不是嘗試讓系統隨每個網域反覆連線與中斷。以下為規則片段示意,需加入目前設定的規則區段;PROXY 必須對應有效的策略,範例網域不代表任何可用服務。
DOMAIN-SUFFIX,example.com,PROXY
FINAL,DIRECT
網域條件未觸發連線,不代表會強制中斷已建立的連線。單一通道可能同時承載多個 App 的請求,不能以某個網頁的開啟或關閉來界定整個通道的存續時間。
五、多條條件的順序:特定例外在前,一般條件在後
系統會依序檢查 On Demand 規則,並採用第一條符合的規則。單一規則中的介面、SSID 等限制必須同時符合;同一個 SSID 清單則用來列出可比對的網路名稱。排查時不只要確認「規則存在」,也要確認它沒有被前面較寬泛的條件遮蔽。
- 第一層:特定例外。例如介面為 Wi-Fi,且 SSID 為 HomeNet 時執行 Disconnect。
- 第二層:一般 Wi-Fi。對其他希望連線的 Wi-Fi 執行 Connect;若放在第一條,家庭網路例外可能就不會有機會執行。
- 第三層:行動網路。為 Cellular 設定獨立動作,不要附加只適用於 Wi-Fi 的 SSID 條件。
- 最後確認:其餘情況。檢查既有的一般條件,確認沒有與目標衝突的寬泛 Disconnect 或 Connect。
這個順序說明的是網路規則設計。若加入 EvaluateConnection,還要確認它前面是否已有符合目前網路的規則。On Demand 的「第一條符合」與 Config 規則的「第一條符合」發生在不同階段:調整 FINAL 的位置無法修正 SSID 條件順序,移動 SSID 條件也不會改變 DOMAIN-SUFFIX 的請求策略。
六、以四種狀態交叉確認,不要只憑圖示變化判斷
測試期間請保持現有服務、Global Routing 與 Config 不變,只切換網路條件。每次切換後先等待狀態穩定,再發出新的請求;已開啟的網頁可能繼續顯示快取內容,既有長連線也不一定會立即呈現新的路徑。下表是前述範例設計的預期結果,並非任何網路的實測結果。
| 測試狀態 | 範例預期結果 | 結果不符時優先檢查 |
|---|---|---|
| 連線至 HomeNet | 符合特定 SSID 的 Disconnect | SSID 拼字、例外順序、設定是否已儲存 |
| 連線至其他 Wi-Fi | 符合一般 Wi-Fi 的 Connect | 是否設有一般條件、網路是否已完成驗證 |
| 關閉 Wi-Fi,改用行動網路 | 符合 Cellular 的 Connect | 實際介面、行動網路存取權限、連線設定是否有效 |
| 暫時關閉 On Demand | 停止依這些條件自動觸發 | 系統設定中的 Connect On Demand 狀態 |
暫停自動連線時,請先關閉 On Demand;必要時再手動中斷現有通道,並確認系統設定。只在 Home 關閉連線,系統仍可能在下一次符合條件時重新建立通道。若長期不使用某組自動條件,建議先記錄設定,再停用或刪除對應規則,比反覆手動中斷更容易維持可預期的狀態。
七、常見問題:自動重新連線、網頁無法開啟與網域未觸發
已手動中斷,為什麼過一會兒又自動連線?
先前往 Settings → On Demand,檢查目前網路是否仍符合 Connect 條件。若只是暫時停用,請關閉 On Demand,再到系統 VPN 設定確認 Connect On Demand 狀態,最後中斷現有連線;不要只是不斷點按 Home 的連線開關。
家庭 Wi-Fi 設定了 Disconnect,為什麼還是自動連線?
在系統 Wi-Fi 頁面確認實際 SSID,檢查空格、大小寫及另一個頻段的名稱。接著將特定 SSID 例外移至一般 Wi-Fi 條件之前。確認條件已儲存後,重新連線至該 Wi-Fi,避免將修改前留下的通道狀態誤認為新規則的結果。
VPN 顯示已連線,網頁卻無法開啟,還要繼續修改 On Demand 嗎?
先暫停自動條件並手動連線,確認 Home 選取的現有服務是否有效,再檢查 Global Routing 與目前的 Config。延遲結果不代表 DNS 解析與網頁請求都已成功;若手動連線也無法存取,應轉而檢查服務參數、DNS 與請求策略。
新增了 DOMAIN-SUFFIX,為什麼存取網域時沒有自動連線?
DOMAIN-SUFFIX 是 Config 中的分流規則,不會啟動尚未建立的通道。先到 Settings → On Demand 確認是否提供並啟用了相應的連線評估條件,再檢查是否有更早符合的規則將其覆蓋。若目標只是讓該網域走 PROXY,可先維持通道連線以測試分流。
完成設定後,應分別確認兩件事:網路變更時,通道是否依預期建立或中斷;通道建立後,請求是否依預期分流。分開記錄結果,才能判斷下一步要調整 On Demand,還是 Global Routing、Config 或現有服務參數。