本文適合已經有服務商提供的訂閱或可用連線,並準備編輯 Shadowrocket(小火箭)設定檔的使用者。先確認 Global Routing 設為 Config,再依照「具體例外在前、較廣範圍在後、FINAL 放最後」整理規則。本文透過最簡設定檔、衝突範例與驗證步驟,協助判斷是「規則未匹配」還是「匹配後連線失敗」。
一、先確認 Config:規則清單何時會參與分流
自訂規則不是連線開關,也不會提供連線所需的伺服器資訊。開始前,請先向服務商取得訂閱或連線參數,並確認選用的連線可正常使用。本文以 iPhone / iPad 上的 Home、Config、Settings 頁面名稱說明操作;其他平台請在相應的路由與設定入口確認相同選項。
在 Home 檢查 Global Routing。選用 Config 時,目前生效設定檔中的規則才是排查分流的主要依據。Proxy 與 Direct 是全域路由模式,不可與單條規則結尾的 PROXY、DIRECT 策略混為一談;Scene 則須依目前場景的設定判斷,不能直接視為 Config 的同義詞。
這個流程描述的是參與設定分流的請求,不代表所有系統請求都必然經過完全相同的處理路徑。驗證時,請從明確的目標網域與新連線開始;不要只因狀態列出現 VPN 標記,就認定規則已生效。
- Home:確認連線狀態、選用的連線,以及 Global Routing 目前的模式。
- Config:確認目前使用的設定檔;編輯未選用的檔案不會改變現行分流。
- Settings → On Demand:控制符合條件時是否自動連線,不會決定 DOMAIN-SUFFIX 與 FINAL 的匹配順序。
二、規則語法:分開看匹配條件與執行策略
常見規則由「類型、匹配值、策略」組成,欄位之間以英文逗號分隔。類型說明檢查項目,匹配值限定範圍,策略決定匹配後的動作。FINAL 不需要匹配值,因此通常只有兩個欄位。請勿使用全形逗號,也不要在策略名稱後直接加上說明文字。
| 規則類型 | 範例 | 檢查範圍 |
|---|---|---|
DOMAIN | DOMAIN,login.example.com,PROXY | 精確匹配 login.example.com,不會自動包含其子網域。 |
DOMAIN-SUFFIX | DOMAIN-SUFFIX,example.com,DIRECT | 匹配 example.com 本身及其子網域,例如 www.example.com。 |
IP-CIDR | IP-CIDR,192.168.50.0/24,DIRECT | 檢查目標 IPv4 位址是否位於指定網段;/24 不是連接埠號碼。 |
GEOIP | GEOIP,CN,DIRECT | 根據目標 IP 在本機 GeoIP 資料中的地區分類判斷。 |
FINAL | FINAL,PROXY | 處理前面規則都未匹配的請求。 |
網域規則的匹配值不含 https://、路徑、查詢參數或連接埠。例如目標網址為 https://login.example.com:443/account,DOMAIN 的值仍填 login.example.com。IP-CIDR 使用位址與遮罩長度,不填網址。GEOIP 判斷的是 IP 分類,不是網頁語言、網域後綴或服務營運方所在地。
三、PROXY、DIRECT、REJECT 各自會改變什麼
策略位於規則結尾。匹配只代表已選定處理動作,不保證目標一定連得上:PROXY 仍取決於選用的連線與遠端網路,DIRECT 仍取決於本機網路,而 REJECT 會刻意阻止連線。以下兩張設定卡用於拆解規則,並非需要同時匯入的完整設定檔。
依網域設定例外
- DOMAIN
- login.example.com,PROXY
- DOMAIN-SUFFIX
- ads.example.com,REJECT
- DOMAIN-SUFFIX
- example.com,DIRECT
精確例外和封鎖子網域的規則,應放在涵蓋整個網域的規則之前,避免先被較寬泛的條件匹配。
依位址設定範圍
- IP-CIDR
- 192.168.50.0/24,DIRECT
- GEOIP
- CN,DIRECT
- FINAL
- PROXY
只有在確實需要直連該位址範圍時,才保留相應規則;其餘請求由 FINAL 處理。
- PROXY:將匹配到的連線交由代理伺服器處理。它不是伺服器位址,也不會自動建立可用連線;請在 Home 確認選用的連線,或設定檔指定的策略目標。
- DIRECT:直接連線至目標,不經代理伺服器。這不代表請求會避開所有 VPN 處理,也不保證目前的網路一定能連上目標。
- REJECT:拒絕匹配到的連線。此策略依據規則可識別的目標資訊運作,不是網頁內容篩選器,無法針對同一條 HTTPS 連線中的特定頁面內容選擇性封鎖。
同一個網域若同時用於登入和其他內容,廣泛使用 REJECT 可能連登入也一併阻擋。請先找出實際需要處理的目標,再縮小匹配範圍。不要直接把「頁面少了一部分」當成規則正確,也不要把所有失敗都歸咎於代理連線。
四、匹配順序:更精確的規則不會自動優先
規則清單從第一行開始往下檢查,最先匹配的規則決定這次請求採用的策略,後續規則不再參與此次判斷。DOMAIN 比 DOMAIN-SUFFIX 精確,但精確度不會自動改變規則順序;同樣地,REJECT 也沒有越過前方 DIRECT 規則的特殊優先權。
[Rule]
DOMAIN-SUFFIX,example.com,DIRECT
DOMAIN,login.example.com,PROXY
FINAL,PROXY
依照這個順序,連線至 login.example.com 時會先匹配第一行,因為它是 example.com 的子網域。第二行雖然更精確,但已沒有執行機會。若要讓登入網域使用 PROXY、其他子網域使用 DIRECT,請將前兩行對調:
[Rule]
DOMAIN,login.example.com,PROXY
DOMAIN-SUFFIX,example.com,DIRECT
FINAL,PROXY
結論:例外規則要放在涵蓋它的較大範圍之前
新增規則後,先檢查上方是否已有涵蓋相同目標的條件。若有,請調整規則順序或縮小上方規則的範圍,不要一再新增相同規則。
「具體規則在前」是整理規則的實用方法,真正生效的原則仍是先匹配者優先。例如特定 IP 必須使用 PROXY,就應放在可能涵蓋該 IP 的 GEOIP 直連規則之前。不要假設網域規則一定優先於位址規則,也不要認為某種策略天生比其他策略更強。
五、FINAL 為什麼必須放在最後
FINAL 不會再檢查特定網域或位址,而是接手處理前面都未匹配的請求。若將它放在清單中間,就等於從該位置起停止檢查其餘規則;即使下方仍有語法正確的 DOMAIN、IP-CIDR 或 GEOIP,也無法處理已被 FINAL 接手的請求。
[Rule]
DOMAIN,login.example.com,PROXY
DOMAIN-SUFFIX,ads.example.com,REJECT
DOMAIN-SUFFIX,example.com,DIRECT
IP-CIDR,192.168.50.0/24,DIRECT
GEOIP,CN,DIRECT
FINAL,PROXY
以下是用來理解規則順序的最簡範例,並非適用於所有網路環境的預設方案。example.com 及其子網域僅供示範;區域網路網段也必須替換為實際需要存取的範圍。若現有設定檔已包含 [Rule],請在原有區段整理規則,不要再次貼上同名區段。
login.example.com在第一行匹配 PROXY,不會繼續比對後續的網域後綴規則。ads.example.com在第二行匹配 REJECT;其子網域也包含在此後綴範圍內。www.example.com匹配第三行 DIRECT,前提是請求中有可供匹配的目標網域資訊。- 目標位址
192.168.50.10位於範例 /24 網段內;若前面的規則都未匹配,便由第四行處理。 - 其餘請求會繼續檢查 GEOIP;仍未匹配時,才使用 FINAL 指定的 PROXY。
FINAL 的策略必須自行選擇。FINAL,PROXY 代表將未分類的請求交由代理處理;FINAL,DIRECT 則代表未分類的請求直接連線。兩者沒有脫離網路需求後仍一概適用的正確答案。實際維護時,請保留一條明確的 FINAL,並讓它成為最後一條有效規則。
IP 類規則可能涉及網域解析,匹配結果也會受到實際目標 IP、DNS 回應及 GeoIP 資料影響。直接以 IP 位址連線時,可能沒有可供 DOMAIN 規則匹配的網域。因此,透過網域連線和直接連線至該 IP,不應視為完全相同的測試。
六、儲存與驗證:先確認設定生效,再檢查連線失敗
編輯前,請先備份目前可用的設定檔。驗證時一次只更動一個目標或一項順序,並保留修改前後的結果;避免同時調整 DNS、路由模式與規則清單,否則難以判斷是哪項變更造成影響。
- 確認正在編輯的檔案:進入 Config,確認目前使用的設定檔,再開啟其編輯入口。遠端設定檔與本機副本請分開辨認。
- 檢查規則區段:在
[Rule]中修改,保留英文逗號;確認策略名稱拼寫正確,並將 FINAL 移至最後。 - 儲存並套用:完成編輯後儲存,確認該設定檔仍是目前使用的檔案;返回 Home,確認 Global Routing 設為 Config。
- 建立新連線:儲存後重新連線,再重新開啟測試頁面或 App,避免把既有長連線的行為誤認為新規則的結果。
- 檢查記錄:在請求或連線記錄中找到測試目標,查看可用的匹配規則、策略及目標位址資訊。先確認是否匹配預期規則,再檢查連線錯誤。
- 縮小問題範圍:若匹配 PROXY 後仍逾時,請檢查選用的連線及服務商狀態;若匹配 REJECT 後連線失敗,則是該策略預期的行為。
更新訂閱與更新設定檔是兩回事。連線訂閱通常用於更新服務商提供的連線資訊,不代表目前的 [Rule] 已經修改;更新遠端設定檔則可能取代檔案內容。若要長期保留自訂規則,請明確指定存放的設定檔,並在更新後再次確認。
不要只憑一次「可以開啟」就認定分流正確。同一個頁面可能連線至主網域、圖片網域和 API 網域,分別匹配不同規則。請逐一核對相關請求;排查時也不要公開含有認證資訊的訂閱連結或完整設定檔。
七、規則未生效時的常見問題
為什麼新增 REJECT,目標還是能開啟?
先檢查上方是否已有 DIRECT、PROXY 或 FINAL 涵蓋相同目標,再確認 Global Routing 設為 Config,且正在編輯的檔案就是目前生效的設定檔。接著重新建立連線,核對實際請求的網域;頁面使用的 API 網域可能與網址列中的網域不同。
FINAL 後面還能繼續新增規則嗎?
檔案中可以有後續文字,但 FINAL 已接手處理此前未匹配的請求,後面的普通規則就沒有機會處理這些請求。請將需要使用的規則移至 FINAL 上方,並移除多餘的 FINAL,以免維護時造成誤判。
開啟 On Demand,為什麼仍未依網域分流?
Settings → On Demand 管理自動連線條件,不會取代 Global Routing 的選擇。請返回 Home 確認目前為 Config 模式,再到 Config 確認使用中的設定檔;不要以自動連線開關取代路由設定。
訂閱更新成功,為什麼剛新增的規則看起來沒變?
先確認更新的是連線訂閱還是遠端設定檔。前者不能證明規則已更新;後者則可能覆寫本機修改。請開啟目前使用的設定檔檢查實際的 [Rule] 內容,再針對明確目標建立新連線進行驗證。
同一個網域昨天直連,今天卻匹配到其他規則?
先比對匹配記錄、實際目標 IP 與目前的設定檔。DNS 回傳位址改變,可能影響 IP-CIDR 或 GEOIP 的判斷;遠端設定檔更新也可能改變規則順序。若要穩定依網域處理,可將相應的 DOMAIN 或 DOMAIN-SUFFIX 規則放在相關位址規則之前。
取得 Shadowrocket 並繼續設定
iPhone / iPad 版在 App Store 一次性購買,價格為 $2.99;Mac(Apple 晶片 / Intel)、Windows、Android、Linux 版免費。iPhone / iPad 的系統需求以 App Store 頁面標示為準。前往下載頁選擇相應平台,再依照教學匯入現有設定檔與訂閱。
用戶端買斷 ≠ 連線方案。連線所需的訂閱請向服務商取得;本站提供用戶端取得方式與設定說明,不提供、不販售也不推薦節點或訂閱。