Shadowrocket 設定檔 .conf 怎麼看:[General]、[Rule]、[Host]、[URL Rewrite] 分段解析

逐段解析 Shadowrocket 設定檔:[General] 管理全域行為、[Rule] 決定分流順序、[Host] 設定本機對應、[URL Rewrite] 改寫請求,並附常用語法範例。

本文速覽

本文適合已在 Home 新增連線資訊,準備在 Config 閱讀或修改 .conf 檔案的使用者。先分清連線參數與設定規則,再逐段查看 DNS、比對順序、本機對應與請求改寫,最後透過單項修改及請求記錄確認設定是否生效。文中的網域與位址範例僅用來說明語法,並非可直接使用的服務設定。

一、.conf 檔案與 Home 連線資訊的差異

Shadowrocket(小火箭)的 .conf 檔案是以方括號標示區段的文字設定檔。每個區段從標題開始,到下一個區段標題前結束。空行用來分隔內容,不能取代區段標題;檔案也不是 JSON,不必在每行加上雙引號或於行尾加逗號。

Home 中的伺服器位址、連接埠、憑證及協定選項,決定連線如何建立;Config 中啟用的設定則決定請求如何處理。只有規則檔、沒有可用的連線參數,無法建立代理連線。訂閱需向你的服務商取得;連線訂閱與遠端 .conf 設定檔用途不同,不能只憑網址以 https 開頭就判斷是哪一種。

4 個區段
本文解析 General、Rule、Host、URL Rewrite
4 種
規則範例包含 DOMAIN-SUFFIX、IP-CIDR、GEOIP、FINAL
1 項
每次只修改一項設定,再以相同請求重新測試

閱讀時可以先找出所有區段標題,再確認每一行屬於哪種語法。[General] 和 [Host] 常見的是以等號連接的鍵值;[Rule] 常見以英文逗號分隔欄位;[URL Rewrite] 則包含正規表示式、目標與動作。不同區段的格式不要混用。

二、[General]:先查看全域設定與 DNS

[General] 存放全域行為設定。排查「連線測試有回應,但網域無法開啟」時,應先查看這裡的 DNS 設定,而非立即更換所有規則。以下僅列出一個設定項目,用來說明鍵值語法,並非完整設定檔。

[General]
dns-server = system

dns-server 用來指定解析器來源,system 表示使用系統 DNS。這不代表「所有 DNS 請求都會透過代理」,實際解析路徑也與網路環境及其他 DNS 選項有關。將解析器改為某個公共位址,也無法單憑此項確認網域一定能成功解析。

全域設定速查卡

所在區段
[General]
設定項目
dns-server
範例值
system
語法
鍵 = 值

先確認目前的值,再記錄修改前後的解析狀況。

規則測試前提檢查卡

連線資訊
在 Home 檢查
設定檔
在 Config 確認已啟用
路由模式
Global Routing → Config
自動連線
Settings → On Demand

On Demand 管理連線的觸發條件,不會取代 [Rule] 的比對規則。

修改前先保存原值。若更換解析器後所有網域都出現解析錯誤,應先還原該項並重新測試,避免同時更動出站策略、對應與改寫。如此才能判斷是解析器無法連線,還是請求已成功解析、但後續連線失敗。

三、[Rule]:依序理解比對與策略

[Rule] 會由上而下比對,命中後便採用對應策略。較具體的網域規則通常排在範圍較廣的 IP 或地理規則之前;FINAL 則放在最後處理其餘請求。以下規則僅供理解結構;其中的 PROXY 必須有可用的代理出站設定。

[Rule]
DOMAIN-SUFFIX,example.com,PROXY
IP-CIDR,192.0.2.0/24,DIRECT,no-resolve
GEOIP,CN,DIRECT
FINAL,PROXY
關鍵字範例說明閱讀重點
DOMAIN-SUFFIX比對 example.com 及其子網域。不是比對任意字串中是否包含指定內容。
IP-CIDR比對 192.0.2.0/24 位址範圍。no-resolve 表示不會為了比對這條規則而主動解析網域。
GEOIP依據 IP 地理資料庫比對 CN。判斷依據是 IP 資料,而非網站使用的語言。
FINAL將先前未命中的請求交由 PROXY 處理。沒有網域欄位,不應寫成三欄位格式。

DIRECT 表示直接連線,不代表停止連網;PROXY 表示使用代理策略,也不會自動產生連線參數。若原始檔案使用自訂策略名稱,請確認對應策略確實存在,不要只替換文字而忽略其定義。

判斷方式:先確認路由模式,再調整規則順序

驗證 [Rule] 時,先將 Global Routing 設為 Config,再查看請求命中了哪條規則。若目前是 Proxy 或 Direct,請先切回 Config 後重新測試,不能據此判定規則語法失效;Scene 也不等同於某一條固定的 FINAL 規則。

上例中的 192.0.2.0/24 是文件範例位址範圍,不是供日常存取使用的目標。網域規則與 IP 規則處理的問題不同:前者比對網域,後者比對位址。尤其使用 no-resolve 時,不應直接把「網域請求未命中某條 IP 規則」判定為解析故障。

四、[Host]:本機對應不等於分流規則

[Host] 用來設定本機名稱對應。以下將範例網域指向文件專用位址,僅用來展示格式;若直接用該位址存取真實服務,預期不會取得有效的服務回應。

[Host]
demo.example.com = 192.0.2.10

這行設定回答的是「這個網域會解析到哪個位址」,而非「這個請求要使用哪條連線」。完成對應後採用什麼策略,仍須依路由模式和規則判斷。它不會變更瀏覽器網址列中的網域,也不會自動變更 HTTPS 憑證驗證所使用的主機名稱。

五、[URL Rewrite]:區分位址對應與請求改寫

[URL Rewrite] 會比對並改寫可處理的請求 URL,不是 DNS 設定,也不是網域分流規則。以下以將 HTTP 位址重新導向至 HTTPS 位址為例,說明「正規表示式、目標、動作」的寫法。

[URL Rewrite]
^http://example\.com/(.*)$ https://example.com/$1 302
  1. ^ 與 $ 用來限定比對範圍,避免只比對 URL 中的一部分。
  2. example\.com 中的反斜線會讓點號表示字面上的點;未跳脫的點在正規表示式中則可比對其他字元。
  3. (.*) 會擷取斜線之後的內容,目標中的 $1 則引用第一組擷取結果。
  4. 302 表示暫時重新導向。改寫後的請求仍須能解析網域並建立連線。

如果瀏覽器透過 HSTS 或自身的 HTTPS 優先機制,在送出請求前就升級了位址,上述 HTTP 規則可能沒有可比對的請求。此時應檢查實際送出的 URL,而非只依網址列最初輸入的內容判斷。

改寫與對應應分開驗證:[Host] 會影響名稱解析為位址的結果,[URL Rewrite] 則會影響符合條件的請求 URL。同時修改兩者會擴大排查範圍,尤其重新導向後主機名稱有所變更時,還須重新檢查該主機名稱的解析結果與策略。

六、在 Config 中修改、啟用與驗證

看過檔案不代表設定已生效。請在 Config 確認目前啟用的設定,再編輯副本;不要只憑檔名判斷目前使用的是哪一份。遠端設定更新也可能覆蓋本機修改,應將自行維護的內容與遠端來源分開管理。

儲存副本單項修改啟用設定重新測試請求核對記錄
  1. 保存原始內容。記錄目前的設定名稱、dns-server 值與 Global Routing 模式,並保留修改前的副本。
  2. 選擇一個測試目標。使用自己有權存取、且知道預期行為的網域。本文的 example.com 和文件專用 IP 僅用來說明語法,不能作為代理可用性的測試目標。
  3. 一次只改一處。例如只調整一條 DOMAIN-SUFFIX 規則的位置,暫時不要同時更換 DNS 或新增改寫規則。
  4. 儲存並確認已啟用。必要時重新建立連線並送出新請求,避免將既有連線或快取結果誤認為新規則的測試結果。
  5. 核對請求記錄。比對實際網域、命中的規則、出站策略與錯誤類型。解析失敗、連線逾時及憑證錯誤屬於不同環節,應分別處理。

若修改後出現異常,先還原剛才變更的項目,再重複相同測試。只有還原後能穩定改變結果,才有依據繼續縮小排查範圍。訂閱更新成功只代表相應內容已取得並完成處理,不代表 Config 中的規則已變更;同樣地,遠端設定更新成功也不代表 Home 中的連線憑證已更新。

七、設定檔常見問題

修改了 [Rule],為什麼連線路由沒有改變?

先在 Config 確認修改的是目前啟用的檔案,再檢查 Global Routing → Config。接著重新送出請求,確認是否先命中上方範圍較廣的規則;若是,將具體規則移到該規則之前,再重新測試。

已經寫了 PROXY,為什麼還是連不上?

返回 Home 檢查目前選取的連線是否有效,並確認位址、連接埠與憑證都與服務商提供的資訊相符。PROXY 只指定處理策略,無法補齊 Shadowsocks、VMess、VLESS 或 Trojan 所需的連線參數。

更新訂閱會連手寫規則也一起更新嗎?

先確認更新的是連線訂閱還是遠端設定。連線訂閱主要用來管理伺服器項目;手寫規則則應在 Config 中核對。遠端設定請保留本機副本,並在更新後逐項比較自訂內容是否仍存在。

可以直接把幾份 .conf 檔首尾串接嗎?

不要直接串接。先依區段整理內容,檢查同名設定、重複對應、策略名稱與規則順序,並將 FINAL 留在規則末尾。合併後先用少量已知請求驗證,再逐步加入其他內容。

需要繼續排查,可參閱疑難排解;需要確認設定與關鍵字的意思,可查看功能與設定或術語表。閱讀與測試都應以自己的設定和請求記錄為依據,不要將範例檔案當成通用線路設定。

前往 App Store