本文適合已匯入自己的服務設定,並準備修改 Shadowrocket 分流規則的使用者。先確認 Home → Global Routing 設為 Config,再依「具體例外優先、範圍規則其次、FINAL 放在最後」的順序編輯目前使用的設定。閱讀後可分辨規則比對與連線是否可用,並排查網域誤走 DIRECT、REJECT 未生效、FINAL 提前攔截等問題。
先確認 Global Routing:規則生效的前提
Shadowrocket(小火箭)的 Home 用來連線及選擇路由模式,Config 用來管理規則設定檔,Settings 用來管理運作設定。將規則寫入檔案,不代表目前已套用該檔案:還需確認選取中的設定檔,以及 Home → Global Routing 的狀態。本文假設使用者已有自己的服務商與訂閱,且連線參數可用,不涉及線路取得。
Global Routing 選擇 Config 時,會依目前設定檔的規則分流;Proxy 和 Direct 則會整體改變流量去向;Scene 會依已設定的情境條件選擇行為。介面中的 Proxy 與規則策略關鍵字 PROXY 不可混為一談:前者是路由模式,後者是規則命中後的處理方式。
Config
建議依目前設定檔中的規則處理連線。本文的規則順序調整與 FINAL 範例,皆在此模式下驗證。
適用情境:需要依網域、目標 IP 與地區規則分流。
Proxy
以全域代理方式處理流量,不適合用來確認自訂 DIRECT 或 REJECT 規則是否命中。
適用情境:暫時比對代理路徑,縮小規則排查範圍。
Direct
以全域直連方式處理流量。此時能否連上某個網站,不能用來證明設定中的 PROXY 規則正確。
適用情境:比對本機網路的直連狀況。
Scene
依已設定的情境條件決定行為。排查規則時,應先確認目前情境實際選用的路由方式。
適用情境:已明確設定網路環境切換條件。
判斷方式:先固定路由模式,再調整規則
測試期間,先將 Home → Global Routing 設為 Config,並保持選取同一份設定檔。每次只修改一項,避免把切換情境或全域代理的結果誤認為規則優先順序改變。
優先順序取決於行序,不看規則名稱或網域長度
規則依序由上往下檢查,第一條符合的規則會立即套用其策略,不會再往下尋找「更精確」的規則。因此,範圍較大的 DOMAIN-SUFFIX 可能先攔下下方較具體的網域規則;REJECT 也不會因為代表拒絕而自動取得最高優先順序。
例如,以下兩行都能比對 ads.example.com。第一行先命中,結果為 DIRECT;第二行雖然更具體,卻沒有機會執行。這是規則順序問題,並非 REJECT 失效。
DOMAIN-SUFFIX,example.com,DIRECT
DOMAIN-SUFFIX,ads.example.com,REJECT
將具體例外移到前面後,ads.example.com 及其子網域會先命中 REJECT;其他屬於 example.com 的網域才會繼續比對 DIRECT。DOMAIN-SUFFIX 會比對目標網域本身及其子網域,不是任意字串包含比對。
DOMAIN-SUFFIX,ads.example.com,REJECT
DOMAIN-SUFFIX,example.com,DIRECT
「由上而下」指目前實際使用的規則序列。若設定檔還引用外部規則集,也要檢查這些規則在設定中的位置;不能只看新增的兩行,而忽略前方已有的符合項目。
DOMAIN-SUFFIX、IP-CIDR 與 GEOIP 分別比對什麼
不同規則會檢查不同資訊。網域規則檢查主機名稱;IP-CIDR 檢查目標 IP 是否落在指定網段;GEOIP 則依 IP 地理資料庫分類。網域可用不代表一定會命中網域規則;IP 屬於某個地區,也不代表網站營運者或網域後綴屬於該地區。
| 規則範例 | 比對依據 | 使用注意事項 |
|---|---|---|
DOMAIN-SUFFIX,example.com,DIRECT |
目標主機名稱 | 涵蓋 example.com 及其子網域;具體例外應放在此規則上方。 |
IP-CIDR,192.168.0.0/16,DIRECT,no-resolve |
目標 IPv4 位址所屬網段 | 此處示範私有位址範圍;要連線至該網段,本機網路仍須具備相應路由。 |
GEOIP,CN,DIRECT |
目標 IP 在地理資料庫中的分類 | 可能需要解析網域以取得 IP;分類結果會受資料庫與實際解析結果影響。 |
FINAL,PROXY |
前面的規則皆未命中 | 不填網域或網段,並將此規則放在規則序列末尾。 |
no-resolve 表示不為了比對這條 IP 規則而額外發起網域解析。它不是「關閉 DNS」,也不會取代正常的網域解析流程。若請求只有主機名稱,且當下沒有可用的目標 IP,就可能無法依此規則命中,接著會繼續往下比對。
- 若要固定某個網域的流量去向,優先明確設定該網域規則,不要只依賴它目前解析出的 IP。
- 同一網域使用 CDN 時,解析結果可能改變;GEOIP 的命中結果也可能隨目標 IP 變動。
192.168.0.0/16並未涵蓋所有私有位址範圍;若實際使用其他網段,應依本機網路位址補上相應規則。- DOMAIN-SUFFIX 不會比對 URL 路徑。只填網域即可,不要加上
https://、連接埠或/path。
FINAL 後備規則寫法:先列例外,再列範圍,最後放後備規則
FINAL 沒有比對條件,會接手處理前面都未命中的連線。建議只保留一條有效的 FINAL,並放在規則清單末尾。即使後面新增的規則語法正確,也無法正常參與比對。規則片段在完整設定檔中屬於 [Rule] 區段,不應貼到伺服器位址、訂閱位址或協定參數欄位。
[Rule]
DOMAIN-SUFFIX,ads.example.com,REJECT
DOMAIN-SUFFIX,example.com,DIRECT
IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
GEOIP,CN,DIRECT
FINAL,PROXY
此範例的規則順序為:先拒絕指定網域,再允許明確指定的網域與私有網段,接著依 GEOIP 處理 CN 位址,其餘交由 PROXY 處理。example.com 是用來說明語法的範例網域,不是服務位址或可用線路。實際套用前,請換成自己的目標,並確認不會影響必要服務。
- 造訪
ads.example.com時,第一行網域規則命中,執行 REJECT,不會繼續比對後面的 DIRECT。 - 造訪
www.example.com時,第一行不符合,第二行命中,執行 DIRECT。 - 直接連線至
192.168.1.10時,前兩行網域規則不符合,私有網段規則可命中 DIRECT。 - 其他目標若被 GEOIP 判定為 CN,則執行 DIRECT;仍未命中時,由 FINAL 執行 PROXY。
FINAL,DIRECT 也是有效的後備選擇,意思是「只有明確命中的代理規則走代理,其餘流量直連」。FINAL,PROXY 與它並無不分使用情境的絕對優劣。此處的 PROXY 表示交由代理路徑處理,不會自動建立伺服器;目前選用的代理必須可用,設定中引用的策略也必須存在。
不要直接覆蓋現有設定檔的所有規則。先保留原始檔案與策略群組定義,再複製一份調整規則區段。若現有規則使用自訂策略群組名稱,應保留其原有用途,不要全部直接改成 PROXY。
在 Config 中編輯,並以新連線驗證
以下依 Home、Config、Settings 的介面結構說明。不同平台的編輯入口按鈕位置可能不同,但操作對象始終是 Config 中目前啟用的設定檔。不要將伺服器訂閱更新與規則檔編輯混為一談:更新伺服器清單不能取代儲存並選取規則設定檔。
-
確認路由模式
前往 Home → Global Routing → Config。記下目前選取的伺服器或策略群組,測試期間不要同時切換代理出口。
-
保留副本
前往 Config,找到目前選取的設定檔,先複製一份或匯出備份,再開啟該設定檔的編輯入口。確認編輯的不是另一份未啟用的檔案。
-
整理規則
檢查規則清單;若使用文字編輯,請找到 [Rule]。將具體例外移到範圍較大的規則之前,把新增規則放在 FINAL 上方,並保留其引用的策略定義。
-
儲存並啟用
儲存後返回 Config,確認已選取修改後的設定檔。再回到 Home 重新建立連線,查看是否出現設定解析錯誤;若有錯誤,先還原副本。
-
建立新請求
關閉目標頁面現有的連線後重新開啟,並依連線記錄中的目標、命中規則與策略核對結果。不要只重新整理仍沿用舊連線的頁面。
驗證時,分別選擇「應命中例外」、「應命中範圍規則」及「應進入 FINAL」的目標。先檢查實際命中的規則,再確認連線是否成功。命中 PROXY 後仍失敗,可能是代理連線或遠端服務問題;命中 DIRECT 後失敗,則可能與本機網路、DNS 或目標服務有關。不能只因網頁無法開啟,就判定優先順序錯誤。
- Connectivity Test:用來檢查所選伺服器的連線狀況,無法單獨證明特定網站命中了哪條規則。
- Settings → DNS:若記錄中的目標 IP 與預期不同,或網域無法解析,再檢查解析設定;每次只變更一個選項。
- Settings → On Demand:用來依條件觸發連線,不會改變規則行序。若測試時連線自動恢復,也要檢查此處的啟用狀態與條件。
常見問題:規則已設定,為什麼流量去向仍不如預期?
REJECT 寫在下方,為什麼流量還是直連?
先檢查上方是否已有比對範圍更大的 DIRECT 規則。例如,example.com 的 DOMAIN-SUFFIX 會先比對所有子網域。將需要拒絕的具體網域移到該範圍規則上方,儲存並重新建立連線,再查看實際命中的規則。
在 FINAL 後新增規則,為什麼沒有作用?
比對到 FINAL 時就會套用後備策略,後面的規則無法繼續比對。將新增規則移到 FINAL 前面,並檢查前方是否已有另一條 FINAL。不要只把最後一行改成其他策略,卻保留更前面的後備規則。
切換成 Proxy 就能開啟,Config 卻無法開啟,該如何排查?
回到 Home → Global Routing → Config,重新連線至相同目標,檢查是否命中 DIRECT 或 REJECT。若流量去向符合設定但不符合需求,請修改該規則或新增更具體的例外;若已命中 PROXY,再確認策略群組實際選用的出口。
更新自己的訂閱後,需要重新撰寫規則嗎?
先確認更新的對象。伺服器訂閱通常會更新連線項目;遠端規則設定更新則可能取代本機檔案內容。更新前先保留本機修改,更新後檢查目前使用的設定檔與自訂規則是否仍在。只有確認規則已遺失或引用的策略有變動後,才調整相應內容。
網頁部分內容載入失敗,需要放行整個網域群組嗎?
先查看失敗請求的實際主機名稱。頁面可能同時使用多個網域,主文件命中 DIRECT,不代表圖片或 API 也會命中同一條規則。只針對確認需要的目標新增例外,並將例外放在範圍較大的 REJECT 或其他範圍規則之前。
結論:依命中記錄排查,不要憑頁面表現猜測
保留一筆失敗請求的目標、命中規則與最終策略,每次只調整對應規則的位置或條件。若命中結果正確,就停止調整順序,改為排查 DNS、所選代理與目標服務。
取得 Shadowrocket 並查看設定教學
iPhone / iPad 版可從 App Store 取得,價格為 $2.99 一次性付費;開發者為 Shadow Launch Technology Limited,系統需求以 App Store 頁面標示為準。Mac(Apple 晶片 / Intel)、Windows、Android、Linux 版免費。請依裝置查看下載指南,再依快速入門說明匯入自己的設定。
用戶端買斷費用 ≠ 線路方案費用。本網站不提供、不販售也不推薦節點或訂閱;編輯規則的前提是使用者已有自己的服務設定。