2026-09-15 · 規則分流 · 約 10 分鐘

Shadowrocket 分流規則怎麼設定:比對順序、FINAL 兜底與 PROXY/DIRECT/REJECT 策略

了解規則由上而下比對、符合即停止的機制、FINAL 兜底的用途,以及三種策略的適用情境與常見錯誤。

本文重點

Shadowrocket(小火箭)的規則由比對條件與執行策略組成。本文適合已有自己的服務商與訂閱、準備調整設定檔的使用者:先確認 Global Routing 使用 Config,再依「精確例外在前、寬泛條件在後、FINAL 放最後」整理規則,最後以同一個目標請求確認比對結果。範例僅說明語法,不提供節點或訂閱。

一、先確認 Global Routing,再檢查規則

規則寫入檔案,不代表目前的請求一定會依該檔案分流。Home 用來管理連線與服務項目,Config 用來管理設定檔,Settings 用來設定 App。排查時,先確認連線使用的設定檔,再查看 Home → Global Routing。本文說明規則時,前提是使用 Config;若以 Proxy 或 Direct 暫時覆寫分流,則不適用。

Config

建議

依目前設定檔中的規則決定請求策略。最後採用 PROXY、DIRECT 或 REJECT,取決於實際符合的規則,而非由此模式預先決定。

適用情境:撰寫規則、確認比對順序,以及日常依設定檔分流。

Proxy

以代理模式處理流量,不會依本文所述的逐條規則進行一般分流。可用來比較同一目標透過代理時能否連線,但不能取代規則驗證。

適用情境:短時間比較代理連線與 Config 分流的差異。

Direct

以直接連線模式處理流量。若目前處於 Direct,只在設定檔中新增 PROXY 規則,不能證明規則已生效。

適用情境:比較透過本地網路直接存取目標的結果。

Global Routing 中的 Scene 涉及情境選擇,應確認該情境目前採用的設定;它不是可寫在 [Rule] 內的規則關鍵字。初次驗證規則時,建議明確切換至 Config,以減少變因。Settings → On Demand 控制依條件觸發連線的行為,不會改變規則的先後順序。

判斷方式:先固定模式,再修改一條規則

若切換至 Config 後結果才有所不同,應先確認原本的 Global Routing 或情境設定;不要同時修改 DNS、服務項目和規則順序,否則無法判斷是哪項變更造成影響。

二、規則語法:條件在前,策略在後

設定檔中的規則位於 [Rule] 區段。常見規則採用「類型,比對值,策略」的結構,欄位之間以英文半形逗號分隔。以下三行分別示範精確網域、網域後綴與最終策略;示範網域僅用於說明,請勿直接照搬為實際業務清單。

[Rule]
DOMAIN,api.example.com,PROXY
DOMAIN-SUFFIX,example.com,DIRECT
FINAL,PROXY
3 種策略
本文使用 PROXY / DIRECT / REJECT
2 個欄位
FINAL,PROXY:關鍵字與最終策略
1 條兜底規則
在規則末尾保留明確的 FINAL
策略執行方式檢查重點
PROXY透過代理連線處理請求。確認目前選取的代理是否可用;若設定使用自訂策略組,也要確認組內選取的項目。
DIRECT直接連線至目標,不使用代理策略。目標必須能透過目前的本地網路存取;符合 DIRECT 不代表一定能成功連線。
REJECT拒絕符合條件的請求。確認條件足夠精確,避免封鎖登入、圖片或其他必要的相依項目。

PROXY 不是服務位址,也不是協定名稱。Shadowsocks、VMess、VLESS、Trojan、Hysteria2 與 WireGuard 屬於連線協定;規則決定請求採用哪種策略,服務項目則提供實際連線參數。請勿將協定名稱、訂閱網址或伺服器連接埠填入規則的策略欄位。若使用自訂策略組,其名稱必須與設定檔中的名稱一致。

三、比對順序:上方符合後,下方不再比對

規則會由上而下依序檢查,符合後便執行對應策略。並非「越精確就會自動優先」,也不會合併所有符合的結果。以上方範例來說,api.example.com 先符合 DOMAIN,因此使用 PROXY;img.example.com 不符合第一行,接著符合 DOMAIN-SUFFIX,因此使用 DIRECT。

  1. 精確例外優先。需要個別處理的完整網域可放在寬泛的後綴規則前,例如將 DOMAIN,api.example.com,PROXY 放在 DOMAIN-SUFFIX,example.com,DIRECT 之前。
  2. 接著放範圍規則。DOMAIN-SUFFIX 同時涵蓋指定網域本身及其子網域。example.com 會涵蓋 example.com 和 a.example.com,但不會匹配任意包含這段文字的網域。
  3. 拒絕規則請謹慎安排。若先寫入 DOMAIN-SUFFIX,example.com,REJECT,後面針對 api.example.com 的允許規則就不會有機會執行。
  4. 最後放置 FINAL。只有前面的條件都未符合時,才會採用最終策略;FINAL 後方的規則無法正常進行後續比對。

交換前兩行的順序,結果就會不同。以下寫法會讓 api.example.com 先符合第一行並直接連線;即使第二行更精確,也不會推翻已產生的結果。

[Rule]
DOMAIN-SUFFIX,example.com,DIRECT
DOMAIN,api.example.com,PROXY
FINAL,PROXY

四、FINAL 兜底與 IP 規則的搭配方式

FINAL 不需要網域或網段參數,正確格式是 FINAL,策略,例如 FINAL,PROXY 或 FINAL,DIRECT。它不是失敗重試機制:若某條 PROXY 規則已符合但連線失敗,不會因此繼續往下找到 FINAL 改用 DIRECT。兜底處理的是「沒有符合任何條件」,而非「連線未成功」。

規則寫法比對依據容易混淆之處
DOMAIN-SUFFIX,example.com,PROXY請求可辨識的網域後綴。比對值不包含 https://,也不包含網頁路徑。
IP-CIDR,192.168.0.0/16,DIRECT,no-resolve目標 IPv4 位址是否位於指定網段。/16 表示網段前綴,不是連接埠;此例涵蓋 192.168.0.0 至 192.168.255.255。
GEOIP,CN,DIRECT目標 IP 在地理位置資料庫中的歸屬地。不依網頁內容、網域後綴或使用者所在地判斷。
FINAL,PROXY前面的規則都未符合。不需要填寫比對值,應放在最後。

no-resolve 用來避免為了比對這條 IP 規則而額外進行網域解析。它不等於關閉整個 App 的 DNS,也不會自動將網域轉成 IP。若請求本身已有可用的目標 IP,仍可依該 IP 進行比對;若只有網域且尚無可用 IP,就不能認定這條規則一定會符合。

GEOIP 的結果會受到目標 IP 與本機資料庫影響。同一個網域若解析出不同結果,符合的地理區域條件也可能不同。少數必須採用固定策略的業務網域,建議先設定明確的 DOMAIN 或 DOMAIN-SUFFIX 例外,再安排 GEOIP 等範圍較廣的條件。請勿將「解析成功」、「符合規則」與「成功建立連線」視為同一件事。

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

以上片段僅示範一種排列方式,不是完整設定,也不是適用於所有網路的建議清單。採用前請確認區域網路網段、目標網域與最終策略都符合自身需求。若目標實際使用 IPv6,單一 IPv4 的 IP-CIDR 規則無法涵蓋對應的 IPv6 位址,需另外檢查相關規則與網路條件。

五、儲存後如何確認比對結果

驗證單位應是新建立的連線,而非已開啟的頁面。瀏覽器可能重複使用舊連線,網頁也可能直接顯示快取;只看頁面是否仍能開啟,無法判斷剛才的規則是否生效。修改前先儲存原設定,測試期間每次只變更一項條件或策略。

  1. 確認設定檔

    進入 Config,確認目前選用的檔案。編輯該檔案的 [Rule] 區段並儲存,請勿只修改另一份未啟用的副本。

  2. 固定模式

    返回 Home → Global Routing → Config,確認選取的是 Config,而非 Proxy、Direct 或尚未確認的 Scene。

  3. 重新建立連線

    讓設定重新生效後,再次發出目標請求;必要時中斷連線並重新連線。關閉測試頁面使用的舊連線,避免將重複使用連線誤判為新規則未生效。

  4. 檢查記錄

    查看請求記錄中實際出現的目標網域或 IP、符合的規則及採用的策略。若頁面涉及多個網域,請逐一區分主文件、登入介面與資源請求。

  5. 還原測試項目

    記下原有規則、變更內容與結果,並還原臨時新增的拒絕或例外規則。請勿將測試用的 REJECT 留在需要正常存取的業務網域上。

例如,將已獲授權的測試網域設為 REJECT 後,新的目標請求應顯示遭拒絕;但頁面上的舊文字仍可能來自快取,其他網域載入的圖片也可能繼續顯示。這是驗證方式的示例,並非本站實測資料。判斷時應以對應請求的記錄為準,而不是要求整個網頁立即變成空白。

六、規則分流常見問題

已加入 FINAL,PROXY,為什麼有些請求仍然直連?

先確認 Home → Global Routing → Config,再查看請求是否已符合前面的 DIRECT。FINAL 只處理之前都未符合的請求。若前面有 DOMAIN-SUFFIX、IP-CIDR 或 GEOIP 的 DIRECT 條件,應先檢查這些規則,而不是重複新增 FINAL。

可以把完整網址貼到 DOMAIN-SUFFIX 嗎?

不能以網址格式填寫。從 https://api.example.com/login 擷取主機名稱;若只處理這個主機,請寫 DOMAIN,api.example.com,PROXY。只有需要涵蓋根網域及其子網域時,才使用 DOMAIN-SUFFIX,example.com,PROXY,不要包含協定、連接埠或路徑。

符合 PROXY 卻無法開啟,是規則順序錯了嗎?

若記錄已顯示預期的規則與 PROXY,分流選擇這一步就已完成。接著分別檢查網域解析、目前代理的可用性與目標服務狀態。延遲測試正常,只能表示該項測試有回應,不能證明目標網域解析或目標網站一定能成功存取。

新增 REJECT 後無法登入,該如何復原?

先移除剛新增的拒絕規則,重新建立連線後再測試。若登入恢復,請確認遭拒絕的網域是否承載驗證介面;需要允許的精確 DOMAIN 例外應放在範圍較廣的 REJECT 之前,或縮小拒絕條件。不清楚相依關係時,請勿拒絕整個業務根網域。

整理設定時,先確保少量規則就能解釋每次測試結果,再逐步擴大範圍。每新增一條規則,都應能回答三個問題:它會比對什麼、前面是否已有涵蓋它的條件,以及符合後會採用什麼策略。只要這三點清楚,FINAL 就只是最後一項明確選擇,而不是掩蓋前面規則錯誤的補丁。

取得 Shadowrocket 並查看設定步驟

兩種取得方式:iPhone / iPad 版於 App Store 一次性付費 $2.99,系統需求請以 App Store 頁面標示為準;Mac(Apple 晶片 / Intel)、Windows、Android、Linux 版免費。前往下載頁選擇裝置平台,或查看入門指南中的設定步驟。本網站不提供、不銷售或推薦節點與訂閱,請使用自己已有的服務。

下載 Shadowrocket