本文快速導覽

本文適合已能手動連線 Shadowrocket 的 iPhone、iPad 使用者。先區分 On Demand 與連線後的流量分流,再設定 Wi-Fi、行動網路條件,最後確認網域條件與規則順序。閱讀後即可建立方便還原的自動連線方案,並判斷「沒有自動連線」和「連線後套用錯誤策略」分別該檢查哪一層。

On Demand 管理連線,Config 管理連線後的流量分流

Shadowrocket(小火箭)的 On Demand 使用系統的按需 VPN 機制,依網路環境與連線評估條件決定是否啟動連線。它不是在背景定時點按連線開關,也不是為每個網站個別建立 VPN。設定路徑為 Settings → On Demand;可編輯的條件請以目前 App 介面為準。

網路條件變更 評估按需規則 系統建立通道 依連線規則分流 目標連線送出

On Demand 決定「是否建立通道」,Global Routing 則決定通道建立後如何處理流量。選擇 Proxy 代表全域代理模式,Direct 代表全域直連模式,Config 依目前設定比對規則,Scene 則依所選場景處理。若要確認設定中的 DOMAIN-SUFFIX 等規則,請先確認使用的是 Config,避免混淆兩層規則而誤判問題。

本文假設使用者已有自己的服務商與訂閱。On Demand 無法修復過期的連線資料,也不會自動更新失效的訂閱網址。若手動連線尚未成功,請先排除基本連線問題,再啟用自動化。

啟用前:先建立手動連線與還原方式

首次設定時,先不要啟用自動化。先手動連線一次,確認系統允許加入 VPN 設定,再返回 Settings → On Demand。測試期間請勿同時變更伺服器、DNS、Global Routing 和按需條件,否則單一故障現象可能涉及多個變因。

  1. 在 Home 選取自己已有且有效的連線資料,手動開啟連線。
  2. 依測試目的選擇 Global Routing。若要驗證設定檔分流,請使用 Config。
  3. 開啟平時可正常使用的網頁,記錄目前的網路類型及連線狀態。
  4. 前往 Settings → On Demand,先只加入一組網路條件,再啟用按需連線。
  5. 切換一次 Wi-Fi 與行動網路,檢查 Home 的連線狀態及系統 VPN 狀態。
先記下如何停止自動連線

需要停用時,先在 Settings → On Demand 關閉按需功能,再手動中斷連線。若只關閉 Home 的連線開關,之後網路變更時,系統仍可能重新評估按需規則。可在系統設定中搜尋「VPN」找到 VPN 項目;受組織管理的裝置也可能受到管理政策限制。

若 iPad 不支援行動網路,只需測試 Wi-Fi 條件。系統需求請以 App Store 頁面標示為準。裝置未出現行動網路切換選項,不代表行動網路條件失效。

Wi-Fi 與行動網路:先設定特定條件,再設定通用條件

網路條件的基本寫法是「介面類型 + 可選的 Wi-Fi 名稱 + 動作」。以下示範一種設定:連上家中 Wi-Fi 時不建立通道,連上其他 Wi-Fi 或行動網路時自動連線。Home-WiFi 是範例 SSID,設定時請改成裝置實際連線的 Wi-Fi 名稱,不是路由器管理頁面的網址。

家中 Wi-Fi 例外

設定路徑
Settings → On Demand
InterfaceTypeMatch
WiFi
SSIDMatch
Home-WiFi
Action
Disconnect

先加入特定 SSID 條件,再加入符合所有 Wi-Fi 的條件。

行動網路連線

設定路徑
Settings → On Demand
InterfaceTypeMatch
Cellular
SSIDMatch
不設定
Action
Connect

行動網路條件不使用 Wi-Fi 名稱;裝置必須具備可用的行動網路連線。

上述英文鍵名用來說明系統的按需條件,不代表 App 介面一定會逐字顯示這些欄位。請使用目前介面提供的 Wi-Fi、行動網路與動作選項進行設定,不要將這些鍵名貼入 Config 的一般分流規則。

評估順序符合條件動作預期結果
1WiFi,SSID 為 Home-WiFiDisconnect符合家中 Wi-Fi 例外,不維持此按需 VPN 連線
2WiFi,不限 SSIDConnect其他 Wi-Fi 觸發連線
3CellularConnect行動網路觸發連線

結論:先確認規則是否被覆蓋,再檢查連線資料

若連上家中 Wi-Fi 後仍自動連線,先確認通用 Wi-Fi 的 Connect 是否排在指定 SSID 的 Disconnect 之前。請讓特定例外優先評估,再重新切換網路測試。

請確認 SSID 的大小寫、空格及實際連線名稱。同一台路由器的不同頻段可能使用不同名稱,訪客網路也可能有另一個名稱。SSID 比對只辨識名稱,不會驗證網路是否可信,因此符合家中名稱不等於通過安全驗證。

網域按需連線:並非 DOMAIN-SUFFIX 的另一種寫法

網域按需連線屬於系統的連線評估機制。系統層級的 EvaluateConnection 可搭配網域條件與 ConnectIfNeeded 使用,但不代表「每次造訪該網域都會強制重新連線」。若目前網路已能完成所需的解析與連線評估,系統可能不會啟動 VPN。快取、既有連線和 App 的解析方式也會影響觀察結果。

以下展示系統按需規則的結構,方便理解 Action、Domains 和 DomainAction 之間的關係。這是用於說明的屬性清單片段,不是 Shadowrocket Config 檔案,也不是可直接匯入的設定。只有在目前 On Demand 介面提供相應的網域評估選項時,才透過介面設定。

<dict>
  <key>Action</key>
  <string>EvaluateConnection</string>
  <key>ActionParameters</key>
  <array>
    <dict>
      <key>Domains</key>
      <array>
        <string>example.com</string>
      </array>
      <key>DomainAction</key>
      <string>ConnectIfNeeded</string>
    </dict>
  </array>
</dict>

例如,example.com 是網域,example.com:443 則包含連接埠,兩者不應視為相同的網域條件。HTTPS 常用連接埠 443,但 On Demand 不會依此連接埠決定是否啟動連線。直接造訪 IP 位址,也無法驗證網域條件是否符合。

網路方案與網域方案請分開測試

若前面的規則已對所有 Wi-Fi 執行 Connect,後續的網域評估通常就沒有機會決定是否啟動連線。相反地,前面的 Disconnect 也可能略過網域評估。請先單獨測試網域評估,再加入網路限制;不要預期系統會自動合併多個互斥動作。

通道建立後:再用 Config 決定目標流量的去向

若需求是「保持連線,但只有指定網域走代理」,通常應使用 Config 分流,而不是反覆啟動及中斷整條通道。On Demand 可負責行動網路自動連線,再由 Config 依網域、IP 或地區選擇策略。兩種機制可以搭配使用,但不能互相取代。

[Rule]
DOMAIN-SUFFIX,example.com,PROXY
IP-CIDR,192.168.0.0/16,DIRECT
GEOIP,CN,DIRECT
FINAL,PROXY

此處僅示範規則語法,並非完整可用的連線設定。DOMAIN-SUFFIX 比對網域後綴;IP-CIDR 比對指定的位址範圍;GEOIP 依位址歸屬資料庫進行比對;FINAL 處理前面規則都未符合的要求。請依自己的現有設定理解策略,不要直接覆寫整份 Config。

要解決的問題應調整的位置請勿混淆的事項
切換至行動網路時自動連線Settings → On Demand不是新增一條 GEOIP 規則
連線後讓 example.com 使用代理Config 中的 DOMAIN-SUFFIX不是啟動通道的觸發條件
區域網路位址保持直連Config 中的 IP-CIDRDirect 分流不代表系統 VPN 已中斷
未符合其他規則的要求Config 中的 FINAL應放在需要優先比對的規則之後

排查時也應分層進行。先確認系統是否已建立通道,再確認 Global Routing 是否使用 Config,最後檢查實際符合的分流規則。若尚未連線,修改 FINAL 無法解決按需觸發問題;若已連線但目標流量套用錯誤策略,應檢查設定檔,而非反覆修改 Wi-Fi 條件。

測試與排除問題:每次只變更一項條件

確認自動連線是否正常,應透過可重現的網路切換進行測試。以下提供測試步驟與預期現象,不代表所有網路環境都能在特定時間內完成連線。切換網路後,請等待系統完成評估再檢查狀態;不要在切換當下連續手動開關連線。

  1. 測試指定 Wi-Fi:連上 Home-WiFi,確認符合 Disconnect 例外條件。若仍保持連線,請檢查 SSID 和規則順序。
  2. 測試其他 Wi-Fi:切換至另一個名稱已知的 Wi-Fi,確認通用 Wi-Fi 的 Connect 能觸發連線。
  3. 測試行動網路:關閉 Wi-Fi,確認裝置已連上行動數據,再觀察 VPN 是否啟動。
  4. 單獨測試網域:暫時移除會優先符合的通用動作,中斷既有通道,再依網域評估條件測試。不要只靠反覆重新整理快取頁面來下結論。
  5. 測試還原方式:關閉 On Demand 後手動中斷連線,再切換網路,確認沒有其他自動化或管理政策重新啟動連線。

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

先前往 Settings → On Demand 關閉按需功能,再到 Home 中斷連線。若連線仍恢復,請檢查系統 VPN 設定是否還有其他有效的按需設定,以及裝置是否受組織管理。

為什麼家中 Wi-Fi 的 Disconnect 沒有生效?

先在系統 Wi-Fi 設定中確認目前的 SSID,再將指定 SSID 條件排在通用 Wi-Fi 條件之前。若同一台路由器提供兩個不同名稱,請分別加入需要比對的範圍。

造訪指定網域後,為什麼沒有立即連線?

先確認使用的是網域評估,而非 Config 中的 DOMAIN-SUFFIX。接著檢查是否已有前置的 Connect 或 Disconnect 規則符合條件。ConnectIfNeeded 取決於系統評估;若一般網路能直接解析並連線,不啟動 VPN 也可能符合其設計。

VPN 已連線,為什麼目標要求仍是直連?

在 Home 檢查 Global Routing。若使用 Config,請檢查目前設定中優先順序較前的規則,以及最後符合的策略。系統顯示 VPN 已連線,只代表通道已建立,不代表每項要求都會使用 PROXY。

保留最後確認有效的方案時,請記錄實際 SSID、規則順序、Global Routing 模式及測試時的網路類型。請勿在排查紀錄中公開訂閱網址或驗證資料。日後需要新增條件時,先重新測試目前方案,再一次新增一條規則。