Global Routing 的三個常用姿態是 Config、Proxy、Direct,差別只在「流量先看什麼」:Config 先查規則表,Proxy 與 Direct 跳過規則表。本文依 Home → Global Routing 的實際路徑,說清三種姿態的判斷順序、各自適合的情境,以及排查結束後怎麼切回 Config,適合已經匯入訂閱、但不確定該停在哪個姿態的使用者。
三種姿態共用一個入口,差別在判斷順序
Shadowrocket(小火箭)的 Global Routing 位於 Home 頁的設定列,和連線開關、節點列表在同一畫面。點進去可以看到 Config、Proxy、Direct 三個常用姿態:它們不會改訂閱、不會改節點、不會改設定檔內容,只改變一條新連線在建立時「先看什麼」。
把三種姿態拆開來看,判斷順序只有三種寫法。Config 先查規則表,命中哪一條就依該條指定的策略處理,一條都沒命中才落到 FINAL 兜底;Proxy 完全不查規則表,所有流量都交給目前選取的節點;Direct 同樣不查規則表,所有流量直接連出去。換個角度說,Proxy 相當於把整張規則表替換成一條 FINAL,PROXY,Direct 相當於替換成一條 FINAL,DIRECT。
Config
推薦依目前設定檔的規則逐條比對,命中規則就走規則指定的策略,未命中則落到 FINAL。中國大陸直連、境外走代理的分流由規則表完成,不需要手動介入。
適合:日常主力姿態,中國大陸與境外服務混用
Proxy
跳過規則表,全部流量交給目前選取的節點處理,效果等同於一條 FINAL,PROXY。任何網域都不會再落到 DIRECT 分支。
適合:排查規則誤判、臨時讓全部流量走代理
Direct
同樣跳過規則表,全部流量直連,節點不參與。連線開關仍處於開啟狀態,但沒有任何流量被代理。
適合:對照測試、判斷問題出在規則還是線路
Global Routing 只改變流量的判斷順序,不會修改訂閱內容與節點列表;把姿態切回 Config,規則表立即重新生效,不需要重新匯入訂閱。
還需要把 Global Routing 和 Settings 裡的 On Demand 區分開:On Demand 管的是連線開關什麼時候自動開啟或關閉,例如加入某個 Wi-Fi 後自動連線;Global Routing 管的是連線開啟之後,流量依什麼順序被判斷。改其中一個不會動到另一個。
Config:規則表怎麼決定一條請求的去向
Config 姿態下,每條新連線都從規則表頂端往下比對,命中即停,後面的規則不再參與判斷。一條規則由「比對條件 + 策略」組成:比對條件描述流量特徵,策略決定把它交給 PROXY、DIRECT 還是 REJECT。下面是一段規則片段,順序由上而下生效。
DOMAIN-SUFFIX,example.com,PROXY
DOMAIN-KEYWORD,example,DIRECT
IP-CIDR,203.0.113.0/24,DIRECT
GEOIP,CN,DIRECT
FINAL,PROXY
| 規則寫法 | 比對對象 | 常見用法 |
|---|---|---|
DOMAIN-SUFFIX,example.com,PROXY | 網域及其子網域 | 把指定網域交給節點處理 |
DOMAIN-KEYWORD,example,DIRECT | 網域關鍵字 | 一次涵蓋含同一關鍵字的網域 |
IP-CIDR,203.0.113.0/24,DIRECT | 目標 IP 網段 | 直連已知的固定位址網段 |
GEOIP,CN,DIRECT | IP 歸屬地 | 中國大陸位址直連 |
FINAL,PROXY | 最終備援 | 以上都沒命中時的預設去向 |
網域類規則在連線建立前就能判斷;IP-CIDR 與 GEOIP 需要先知道目標 IP,可以在規則最後加上 no-resolve,避免為了比對規則而多做一次解析。最後一行的 FINAL 決定「沒有被任何規則提到」的流量去哪:如果 FINAL 是 PROXY,新出現的網域預設走代理;如果 FINAL 是 DIRECT,新網域預設直連。
Config 姿態的實際效果由目前選取的設定檔決定。換一個設定檔,同一個網域可能被判給不同策略;排查分流問題時,先在 Config 裡確認目前生效的是哪一個設定檔。
Proxy 與 Direct:兩個跳過規則表的極端
Proxy 和 Direct 是同一件事的兩端:都跳過規則表,把所有流量交給一個固定動作。Proxy 下,所有請求都會嘗試經過目前節點;Direct 下,所有請求直接連出去,節點完全不參與。因為不查規則,這兩個姿態的判斷結果永遠可預期,這也是它們適合當排查工具的原因。
Proxy 與 Direct:兩種診斷姿態各自驗證什麼
Proxy
- 所有網域都交給目前節點,不再有 DIRECT 分支
- 能通,代表節點與訂閱本身可用
- 中國大陸服務也會繞行節點,延遲與流量開銷上升
Direct
- 所有流量直連,節點完全不參與
- 能通,代表目標在不經過代理時可達
- 連線開關保持開啟,但沒有任何流量被代理
兩者都只適合短時間驗證:對照測試做完就切回 Config,不要長期停在 Proxy 或 Direct。
把 Proxy 當日常姿態用,最直接的代價是所有流量都繞行節點:存取中國大陸服務的往返延遲會疊加節點鏈路延遲,大流量下載也會一併計入節點流量。排查完不切回來,日常體驗會一直維持在「全部繞行」的狀態。
Direct 長期停留則是另一種誤判——連線開關仍然開啟,系統狀態列也顯示 VPN 標記,但沒有任何流量被代理,很容易被當成「已經連上了」。要確認目前姿態,回到 Home 頁看 Global Routing 列右側顯示的值即可,不需要中斷連線再重連。
日常怎麼選:預設停在 Config,排查時再切
日常使用建議保持 Config:規則表已經涵蓋大部分「中國大陸直連、境外走代理」的需求,不需要每次手動切換。遇到存取異常時,用下面四步把問題範圍縮小到「規則」或「線路」。
- 保持 Config,先看 Home 頁的連線狀態,並做一次 Connectivity Test,確認連線開關與節點是否正常。
- 切到 Proxy 再試同一個目標:如果 Proxy 下能通、Config 下不通,問題多半在規則表——某個網域被規則判給了 DIRECT 或 REJECT。
- 切到 Direct 試第三次:如果 Direct 下目標本來就不可達,代表問題與代理無關,先解決目標本身的可達性。
- 定位完成後把 Global Routing 切回 Config;如果確認是規則問題,在設定檔裡把對應規則往前移,或補一條更靠前的規則。
結論:Proxy 與 Direct 是診斷姿態,不是日常姿態
三種姿態裡只有 Config 會讀規則表。Proxy 與 Direct 的價值,是用兩次對照測試把問題鎖定在「規則」或「線路」其中之一;測試結束就切回 Config,分流才會恢復。
如果經常在多個網路之間移動,Global Routing 下還有一個 Scene 姿態,可以依目前網路環境自動切換設定與姿態。Scene 的設定成本比前三種高,需要先想清楚每種網路該對應哪一套設定;不確定時,保持 Config 手動切換更可控。
常見問題
以下是切換三種姿態時最常遇到的五個問題,答案裡提到的路徑都可以在應用程式內直接找到。
切到 Direct 之後訂閱還能更新嗎?
訂閱更新本身是一次普通網路請求。訂閱位址直連可達時,Direct 下也能更新;如果訂閱位址必須經過節點才能存取,更新會失敗,此時先切回 Config,或在 Settings → Subscribe 裡勾選 Update via Proxy 後重試。
Config 下寫了直連規則,某個網域還是走了代理?
兩種常見原因。一是順序:規則由上而下比對,前面的規則先命中,後面的直連規則不會再生效;二是兜底:該網域沒有被任何規則提到,落到了 FINAL,如果 FINAL 是 PROXY 就會走代理。把直連規則往前移,或確認 FINAL 的取值。
Proxy 姿態下 Connectivity Test 通過,但網頁開啟很慢?
這是預期現象。Proxy 下所有流量都經過節點,中國大陸服務也要繞行,延遲疊加後自然變慢。它不是故障訊號,排查完切回 Config 即可。
改了 Global Routing,節點列表為什麼沒有變化?
Global Routing 只改變流量的判斷順序,不讀也不改訂閱與節點。節點列表為空或過期時,去 Settings → Subscribe 檢查訂閱位址與最近一次更新時間,而不是反覆切換姿態。
Direct 下一切正常,能代表節點沒問題嗎?
不能。Direct 完全不經過節點,只能證明目標在不使用代理時可達。要確認節點狀態,應切到 Proxy 試一次,或在 Home 頁對單一節點做延遲測試。
在 App Store 取得 Shadowrocket
付費應用程式,一次性買斷,只在 App Store 販售;下載前可對照開發者名稱 Shadow Launch Technology Limited 與應用程式 ID 932747118 完成正版驗證。