本文適合已有自己的服務商與訂閱,並準備修改 Shadowrocket 規則的使用者。先在 Home 確認 Global Routing 是否設為 Config,再前往 Config 確認目前使用的設定檔,依序整理 Rule 區段中的「精確例外、較廣範圍、FINAL」,最後以新建立的連線確認命中紀錄。範例僅說明比對邏輯,不含連線憑證。
先確認操作位置:選取設定檔,再以 Config 分流
在 Shadowrocket(小火箭)的 Home 頁面開啟 Global Routing,選擇 Config。接著前往 Config,確認已選取要修改的設定檔;開啟該設定檔的編輯入口,找到 Rule 區段。文字設定檔中的區段標記為 [Rule],每行一條規則。修改前先儲存一份可還原的副本,避免直接覆寫目前可用的設定。
Global Routing 中的 Proxy、Direct、Config、Scene 代表不同的運作模式。Proxy 與 Direct 是全域的輸出選擇,不適合用來驗證特定自訂規則是否正確;本文使用 Config,讓連線依照選取的設定檔分流。Scene 用於依情境套用相應設定;驗證時應先固定運作條件,避免情境變動同時影響結果。
- 在 Home → Global Routing 選擇 Config,並記下目前使用的代理選擇。
- 前往 Config,確認目前設定檔名稱,並在副本中修改 Rule 區段。
- 儲存設定檔,確認它仍是目前選取的設定檔,然後重新建立測試連線。
- 連線至明確的測試目標,並在 Data 的連線紀錄中檢查目標、命中規則與輸出資訊;實際顯示欄位依目前介面為準。
訂閱中的伺服器清單與 Config 中的分流規則用途不同。更新既有訂閱通常是更新連線資料,不能據此判定 Rule 區段已變更;遠端設定檔更新則可能會取代設定內容。排查前先記錄更新的是哪一種資源,避免把連線參數變更誤認為規則順序變更。
比對順序:最先命中的規則決定本次策略
Rule 區段會由上而下依序檢查。某條規則命中並選定策略後,不會再往下比對以尋找「更精確」的條件。因此,精確規則不會自動優先於範圍規則;只有將它排在範圍規則之前,才有機會先命中。
例如,希望 api.example.com 使用 PROXY,而 example.com 的其他子網域使用 DIRECT,可採用以下順序。範例網域僅用於說明語法;測試網路連線時,請改用自己有權使用且確認可連線的目標。
[Rule]
DOMAIN,api.example.com,PROXY
DOMAIN-SUFFIX,example.com,DIRECT
FINAL,PROXY
連線目標為 api.example.com 時,會命中第一行 DOMAIN;目標為 www.example.com 時,第一行不符,接著由第二行 DOMAIN-SUFFIX 命中。DOMAIN-SUFFIX 同時涵蓋該網域本身及其子網域,並非比對任何包含這串字元的網域。
判斷原則:例外規則排在範圍規則之前
若同一目標同時符合 DOMAIN 與 DOMAIN-SUFFIX,請先調整兩行的順序,再測試新連線;新增在後面的精確規則,無法取代已先命中的範圍規則。
策略設定:PROXY、DIRECT、REJECT 只決定處理方式
規則通常由規則類型、比對值與策略組成,並以英文逗號分隔。例如 DOMAIN,api.example.com,PROXY 中,DOMAIN 是比對類型,網域是比對值,PROXY 則是命中後的處理策略。只接受網域的欄位中,不要填入完整網址、路徑或中文逗號。
| 策略 | 命中後的行為 | 需確認的條件 |
|---|---|---|
PROXY | 交由目前設定檔中的代理選擇處理 | 代理選擇可用,且連線參數與伺服器設定一致 |
DIRECT | 直接連線至目標,不經代理伺服器轉送 | 目前網路可直接連線至目標 |
REJECT | 拒絕符合條件的連線 | 目標確實應遭封鎖,且不會誤擋必要的相依服務 |
命中 PROXY 不代表遠端連線一定成功。即使規則判斷完全正確,代理連線的位址、連接埠或驗證參數錯誤,仍會造成連線失敗。DIRECT 也不代表連線完全不受系統網路設定影響;它只表示此處不經代理伺服器轉送。REJECT 則是明確拒絕,不應將由此造成的連線失敗視為線路逾時。
[Rule]
DOMAIN,blocked.example.com,REJECT
DOMAIN,api.example.com,PROXY
DOMAIN-SUFFIX,example.com,DIRECT
FINAL,PROXY
在這段設定中,blocked.example.com 雖然也屬於 example.com,仍會被第一行拒絕。若將 REJECT 行移到 DOMAIN-SUFFIX 後面,就無法封鎖這個目標。網站也可能連線至獨立的登入、圖片或 API 網域;測試時應逐筆查看連線紀錄,而非只確認首頁能否開啟。
FINAL 兜底:放在最後,不填網域
FINAL 用來處理前面規則都未命中的連線,不包含網域或位址條件。基本寫法為 FINAL,PROXY 或 FINAL,DIRECT,而非 FINAL,example.com,PROXY。應保留一條明確的 FINAL,並放在 Rule 區段末尾;若放在中間,後續規則就沒有命中的機會。
其餘連線使用 PROXY
- DOMAIN
- blocked.example.com,REJECT
- DOMAIN-SUFFIX
- example.com,DIRECT
- FINAL
- PROXY
先處理拒絕例外與直接連線範圍,其餘連線交由 PROXY 處理。
僅指定目標使用 PROXY
- DOMAIN
- blocked.example.com,REJECT
- DOMAIN-SUFFIX
- example.com,PROXY
- FINAL
- DIRECT
先處理拒絕例外與代理範圍,其餘連線使用 DIRECT。
以上是兩種不同的分流需求,請勿將兩張卡片中的 FINAL 一併加到同一個 Rule 區段。應採用哪種兜底策略,取決於目標在目前網路中的可連線性與個人連線需求。若沒有符合的網域規則,連線就會套用 FINAL;因此,遺漏規則造成的行為變化,往往會先表現在兜底策略上。
加入 IP-CIDR 與 GEOIP:先處理明確的位址範圍
網域規則比對網域條件,IP-CIDR 則比對 IP 位址網段。連線至本機裝置時,可以將已知的區域網路網段排在較廣泛的位址歸屬規則之前。以下的 192.168.0.0/16 涵蓋 192.168.0.0 至 192.168.255.255 的位址,但不代表所有家庭網路都使用此網段,實際設定應依路由器的位址規劃調整。
[Rule]
DOMAIN,blocked.example.com,REJECT
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
IP-CIDR用於比對 IPv4 網段;本例適用於已知的區域網路位址,不應直接推論為「所有本機資源都已涵蓋」。no-resolve表示比對這條 IP 規則時不要主動觸發網域解析,不代表整個連線流程都不會使用 DNS。GEOIP,CN,DIRECT依據目標 IP 的地理歸屬資料進行比對;網域後綴與使用者所在地不參與這項判斷。- 網域可能解析至不同位址,位址歸屬資料也可能與預期不符;若要固定連線走向,應優先使用排在前面的明確網域規則。
若連線只有網域資訊,且沒有可供位址規則使用的目標 IP,附有 no-resolve 的區域網路規則不會自行啟動解析。相對地,IP 相關判斷可能會用到既有的解析結果或解析流程。遇到「同一網域有時走不同路徑」時,請先確認實際目標 IP 與命中紀錄,再檢查 DNS 或位址歸屬因素,不要直接認定規則順序隨機變動。
儲存後驗證:用三類連線區分規則錯誤與連線錯誤
每次只修改一組規則,儲存後重新建立連線。瀏覽器或 App 可能重用已建立的連線;即使剛儲存規則檔,舊連線也不會因此重新比對。必要時關閉測試 App 的現有連線,或在適當時機中斷後重新連線 Shadowrocket,再次連線至目標。
- 驗證精確例外。選擇同時符合精確條件與範圍條件的目標,確認是否命中前面的 DOMAIN,而非後面的 DOMAIN-SUFFIX。
- 驗證範圍規則。選擇相同後綴下另一個未列為例外的目標,確認是否由 DOMAIN-SUFFIX 處理。
- 驗證 FINAL。選擇已知可連線且不符合任何前置條件的目標,確認是否使用預定的兜底策略。
- 驗證 REJECT。暫時使用可控的測試目標,確認拒絕規則是否生效;測試結束後刪除臨時規則,避免影響日常使用。
測試紀錄至少應註明目標網域、實際 IP、Global Routing 模式、命中規則與結果。不要只寫「無法開啟」。若紀錄顯示已命中預期規則但連線失敗,應檢查輸出連線;若命中的是其他規則,應先檢查規則順序與比對條件,不要同時修改通訊協定參數。
判斷原則:先確認命中規則,再檢查輸出連線
命中規則不符時,調整設定檔選擇、比對範圍或順序;命中正確但無法連線時,檢查 DIRECT 的網路連線能力,或 PROXY 的連線參數。每次只變更一項因素,並保留可還原的副本。
維護規則:更新後重新檢查例外與兜底
遠端設定檔更新後,應重新檢查 Rule 區段開頭的例外規則與末尾的 FINAL,確認自訂內容未遭取代。訂閱更新後,則應確認原本使用的代理選擇仍可用。這是兩種不同的維護作業;分開記錄設定內容與連線資料,才能釐清更新前後的行為變化。
- 儲存目前可用的設定檔副本,並記錄自訂規則的用途與預期策略。
- 新增 DOMAIN-SUFFIX 前,先搜尋是否已有範圍更廣的規則;需要保留的精確例外應排在該規則之前。
- 刪除重複或無法連線的規則,並確認 FINAL 下方沒有仍需生效的規則。
- 若要查看完整欄位說明,請參閱設定欄位說明;若要重新確認首次連線流程,請參閱使用教學。
規則決定連線如何分流,不提供連線服務。一次買斷用戶端 ≠ 線路方案;本文假設使用者已有自己的服務商與訂閱。Shadowrocket 是閉源商業 App,主要供 iPhone 與 iPad 使用,唯一取得管道為 App Store;系統需求請以 App Store 頁面標示為準。