Shadowrocket 規則設定入門:DOMAIN、DOMAIN-SUFFIX、DOMAIN-KEYWORD、GEOIP、IP-CIDR、FINAL 的匹配方式

逐一說明六種常用規則關鍵字的匹配對象與寫法,解析規則由上而下的匹配順序,以及 PROXY、DIRECT、REJECT 三種策略的作用。

本文重點

Shadowrocket(小火箭)會依序判斷規則,命中後採用對應策略。本文適合已經有可用設定、想調整分流的使用者;操作示範以 iPhone / iPad 的 Home、Config 介面為例,規則概念也適用於 Mac、Windows、Android、Linux 版,實際編輯位置請以各平台介面為準。閱讀本文後,你將能區分網域與 IP 匹配、寫出最基本的 Rule 區段,並透過連線記錄確認命中結果。

一、先確認 Global Routing 設為 Config

規則存在於設定檔中,不代表目前的連線一定依規則分流。在 Home 檢查 Global Routing:若要依目前設定檔中的 Rule 執行,請選擇 Config。Proxy 表示所有連線都採用代理策略,Direct 表示所有連線都直連;Scene 用於選擇情境,不是另一種規則關鍵字。開始排查前,先固定使用 Config,避免情境切換影響判斷。

  1. 進入 Config,先備份目前的設定檔,再確認要編輯的是目前選取的檔案,而不是另一份同名副本。
  2. 返回 Home,將 Global Routing 設為 Config,並確認現有代理連線可正常使用。
  3. 編輯規則後儲存設定檔;必要時重新建立連線,再送出新的測試請求。
  4. 查看連線記錄,核對目標網域或 IP、命中的規則與最終策略,不要只憑網頁能否開啟來判斷。

Settings → On Demand 管理的是自動建立連線的條件,不會決定特定網域要走 PROXY 還是 DIRECT。測試規則時若要手動中斷連線,請先留意 On Demand 是否會再次觸發連線,避免誤以為儲存規則後開關自行變動。

應用程式送出請求進入通道依序匹配採用策略記錄結果

二、規則的三個部分:類型、匹配值、策略

大多數基本規則由英文逗號分隔三個欄位:規則類型、匹配值、策略。例如 DOMAIN,example.com,DIRECT 表示目標網域完全符合 example.com 時採用直連。FINAL 沒有匹配值,因此寫作 FINAL,PROXY,不要比照三欄格式多加空欄位。

6 種
本文介紹的基本規則關鍵字
3 種
基本策略:PROXY / DIRECT / REJECT
第一條命中
不會依規則名稱自動排序
策略處理方式適用範圍
PROXY交由代理策略處理。仍須有可用的代理及其參數;規則本身不會建立連線服務。
DIRECT直接連線至目標。不代表繞過系統通道,也不保證目前網路可以連上目標。
REJECT拒絕符合條件的連線。命中後請求失敗是預期結果,僅應用於明確要封鎖的目標。

規則末尾也可以引用設定檔中已定義的策略群組。剛入門時先使用上述基本策略,不要任意填入不存在的群組名稱。PROXY 是策略識別字,Global Routing 中的 Proxy 則是運作模式,兩者的位置和作用不同,不能互換使用。

三、DOMAIN、DOMAIN-SUFFIX、DOMAIN-KEYWORD 有何不同

這三種規則都針對網域,但匹配範圍不同。DOMAIN 比對完整網域;DOMAIN-SUFFIX 比對指定網域本身及其子網域;DOMAIN-KEYWORD 則檢查網域是否包含指定字串。它們不會檢查網頁內容,也不會依 URL 路徑區分同一網站的不同頁面。

規則範例會匹配不會匹配
DOMAIN,example.com,DIRECTexample.comwww.example.com
DOMAIN-SUFFIX,example.com,DIRECTexample.com、img.example.comnotexample.com
DOMAIN-KEYWORD,example,PROXYexample.com、myexample.netsample.net

若只想讓 api.example.com 走代理,而同一網域下的其他連線直連,請將精確的 DOMAIN 規則放在範圍較廣的 DOMAIN-SUFFIX 之前。只要連線提供網域資訊,就能透過規則順序設定例外;若應用程式直接連到 IP,則需另外檢查 IP 規則。

四、GEOIP 與 IP-CIDR:匹配目標 IP

GEOIP,CN,DIRECT 會依 IP 地理資料庫中的地區歸屬判斷目標位址,不是依網域後綴或服務商總部所在地判斷。網域請求進入 IP 類規則時,可能需要先解析位址;結果也會受到 DNS 回傳值與資料庫資訊影響,因此同一服務的不同入口不一定會命中相同的 GEOIP 規則。

GEOIP,CN,DIRECT
IP-CIDR,192.168.0.0/16,DIRECT
IP-CIDR,192.0.2.0/24,REJECT

IP-CIDR 使用網路位址加上前綴長度。192.168.0.0/16 涵蓋從 192.168.0.0 到 192.168.255.255 的位址;IPv4 的 /32 只匹配單一位址。上方的 192.0.2.0/24 是文件範例網段,不是真實服務位址,不能用來證明實際網站可連線。

結論:網域範圍明確時,優先使用網域規則

先用 DOMAIN 或 DOMAIN-SUFFIX 表達具體需求,再以 GEOIP、IP-CIDR 處理地區與網段策略。這樣可降低解析位址變動造成的判斷落差,也更容易從連線記錄說明命中原因。

五、將 FINAL 放在最後:從特定例外到預設策略

Shadowrocket 會依序檢查規則,由第一條符合的規則決定處理策略,不會因為下方某條規則「更精確」就自動改用該規則。FINAL 用來處理前面都未匹配的連線,應放在規則區段最後。若放在最前面,下方為特定網域設定的規則就不會生效。

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

這是教學用的 Rule 區段,不是包含代理參數、DNS 等內容的完整設定檔。若現有設定檔已包含 [Rule],請編輯該區段中的項目,不要重複加入多個同名區段。範例網域僅用來說明匹配關係,實際使用時請替換成要處理的目標。

  1. 請求 api.example.com 時,第一條 DOMAIN 規則命中並採用 PROXY,不會再繼續檢查後面的網域後綴規則。
  2. 請求 img.example.com 時,第一條規則不匹配,第二條 DOMAIN-SUFFIX 規則命中並採用 DIRECT。
  3. 若網域包含 blocked-demo,且未命中前兩條規則,就會命中 REJECT;請勿用其他網域測試這條規則。
  4. 其他連線接著檢查指定網段與 GEOIP;只有這些條件都不符合時,才由 FINAL 交由 PROXY 處理。

若希望預設直連,可將最後一條改成 FINAL,DIRECT,但這會影響所有未命中的連線,不只是目前測試的網站。修改前請先列出必須走代理的網域,並將相關規則放在 FINAL 之前。

六、規則沒有生效:先區分匹配問題與連線問題

網頁無法開啟,不代表規則一定寫錯。先查看連線記錄:目標是否符合預期、命中了哪條規則,以及最後採用哪個策略。只有命中項目或策略不如預期時,才優先檢查設定檔選擇、規則範圍與順序;若命中正確但連線失敗,則應繼續檢查網路和現有代理參數。

Connection timed out

原因:連線未能在等待時間內完成,問題可能出現在直連目標或代理連線階段,並非專門表示規則語法錯誤。

解決方式:先從記錄確認使用的是 DIRECT 還是 PROXY,再透過目前網路測試相應目標或現有代理;不要只靠移動 FINAL 來掩蓋問題。

Connection refused

原因:目標連線遭到拒絕,常見原因是該位址的連接埠沒有服務監聽,或對端主動拒絕連線。

解決方式:核對記錄中的目標位址與連接埠;若 PROXY 連線失敗,再檢查現有代理的位址、連接埠及服務狀態。

HTTPS 常見的目標連接埠是 443,但 DOMAIN 規則並不是「只匹配 443 連接埠」的規則。代理伺服器本身的連接埠也不能直接照抄為 443,請以你現有服務的實際參數為準。若 PROXY 命中正確但仍無法連線,還需依使用的通訊協定核對參數,而不是修改網域關鍵字。

七、常見問題:網域、通訊協定與訂閱的差異

設定了 DOMAIN,為什麼子網域沒有一起生效?

DOMAIN 只匹配完整網域。若要同時涵蓋主網域和所有子網域,請改用 DOMAIN-SUFFIX;若只有一個子網域需要例外處理,請將它的 DOMAIN 規則放在後綴規則之前。

GEOIP,CN,DIRECT 為什麼沒有讓所有中文網站直連?

GEOIP 判斷的是 IP 所屬地區,不是頁面語言。先查看目標解析位址與命中記錄;若要指定特定網站直連,請使用該網站的實際網域設定 DOMAIN-SUFFIX,並放在 GEOIP 之前。

把 FINAL 改成 PROXY,就能修正通訊協定參數嗎?

不能。Shadowsocks、VMess、VLESS、Trojan、Hysteria2、WireGuard 是代理通訊協定,不是規則類型。FINAL 只決定未命中連線採用的策略,不會修正密碼、身分憑證、TLS 或傳輸設定。

更新自己的訂閱後,手動規則會保留嗎?

先確認更新的是 Home 中的代理訂閱,還是 Config 中的遠端設定檔。遠端設定檔更新可能會取代檔案內容;修改前請在 Config 備份,更新後再檢查 Rule 區段。不要假設所有更新入口都採用相同的合併方式。

日常維護請依照「備份、修改單一規則、送出新請求、查看命中結果」的順序進行。每次只調整一個變數,比同時修改 DNS、Global Routing 和多條規則更容易找出原因。本文以使用者已有自己的服務與訂閱為前提;本站不提供、不販售也不推薦節點或訂閱,取得用戶端與取得線路服務是兩回事。

下載 Shadowrocket