本文重點

本文適合已有可用服務,並準備閱讀或修改 .conf 檔案的使用者。先區分 Config 設定檔與 Home 中的伺服器,再依序檢查四個設定區段的語法,最後切換設定檔並逐項測試,確認修改是否生效。範例僅說明欄位與比對方式,不含可用服務資訊。

1. .conf 檔案與 Home、Config、Settings 的關係

Shadowrocket(小火箭)的 .conf 檔案是文字設定檔,使用方括號區段名稱區分各項用途。[General] 通常放置全域參數,[Rule] 放置分流規則,[Host] 設定網域對應,[URL Rewrite] 設定請求 URL 的改寫規則。本文說明這四個區段,但完整設定檔不一定只包含這四段。

Home 主要用來選擇使用者已有的伺服器並控制連線;Config 用來管理及選擇設定檔;Settings 則是應用程式設定。服務訂閱更新與遠端設定檔更新是兩種不同操作:前者通常更新伺服器資料,後者更新設定內容。若要判斷本機修改是否會被覆蓋,請先確認正在更新哪一類資源。

4 個區段
本文解析 General、Rule、Host、URL Rewrite
3 個位置
檢查位置:Home / Config / Settings
1 項
每次只修改一個參數或一條規則

判斷方式:先確認目前使用的設定檔,再解讀檔案內容

開啟 Config,確認目前選取的檔案與正在編輯的檔案相同;接著返回 Home,將 Global Routing 設為 Config,再驗證分流。只儲存尚未選取的檔案,不會讓其中的規則自動套用至連線。

2. [General]:全域參數與 DNS 基準設定

[General] 使用 鍵 = 值 的格式。DNS 相關參數會影響網域查詢所採用的設定,不能只憑伺服器延遲測試成功,就認定 DNS 解析正常。延遲測試只反映該測試路徑;實際瀏覽網頁還涉及目標網域、解析結果與後續連線。

[General]
dns-server = system
ipv6 = false

dns-server = system 表示使用系統 DNS 設定,適合作為比較基準,但不代表目前網路提供的 DNS 解析服務一定可用。若要指定解析器,請填入已確認可連線且可信任的位址,並確保符合網路環境;不要將多組來源不明的參數整段疊加。

ipv6 = false 用於關閉此項 IPv6 支援。此範例是為了建立便於比較的測試條件,並非要求所有網路都關閉 IPv6,也不等於修改整台裝置的網路堆疊。若原本的環境依賴 IPv6,請保留原值,並依解析記錄及實際連線結果判斷。

  • 修改前記下原有的 dns-server 值,並保留一份可還原的設定檔。
  • 使用同一個網域測試,分別記錄是否成功解析及是否成功建立連線,不要把兩種失敗混為一談。
  • 傳統 DNS 通常使用連接埠 53;DNS 查詢是否可達與網頁的 443 連接埠是否可達,是不同的檢查項目。
  • 測試期間不要同時更換 DNS、伺服器和規則,否則無法判斷是哪項修改造成影響。

3. [Rule]:依序比對與 FINAL 預設規則

[Rule] 通常依照由上而下的順序檢查,命中後便採用該條規則指定的策略。較明確的規則應放在範圍較廣的規則之前;FINAL 用來處理前面都未命中的請求,應放在最後。以下使用保留的範例網域與文件位址,不代表建議的瀏覽目標。

[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,PROXY 會比對該網域及其子網域,不必寫成 *.example.com。IP-CIDR 依目標 IP 所屬的網段比對;範例中的 no-resolve 表示不會為了這條 IP 規則額外發出網域解析要求,因此不要預期它會主動解析所有網域後再檢查網段。

GEOIP,CN,DIRECT 依目標 IP 的地理位置資料比對,不是判斷網頁內容、網域後綴或營運主體。比對結果取決於所使用的資料庫,不能因此保證特定網域一定走 DIRECT。若需要明確指定網域策略,請在前面加入清楚的網域規則。

比對欄位

DOMAIN-SUFFIX
example.com:網域後綴
IP-CIDR
192.0.2.0/24:IPv4 網段
GEOIP
CN:目標 IP 所屬地區代碼

明確的網域規則放前面,IP 類規則則依實際需求排序。

策略欄位

PROXY
透過代理策略處理連線
DIRECT
直接連線至目標
REJECT
拒絕此請求

FINAL 是規則關鍵字,後面仍須填入策略,例如 FINAL,PROXY。

此處的 PROXY 不包含伺服器位址、連接埠或驗證資訊,也不會建立可用服務。實際對外連線仍取決於使用者已有的伺服器與目前選擇的項目。遇到未知的策略名稱時,請先檢查設定檔中是否另有對應的策略定義,不要直接將名稱替換成協定名稱。

4. [Host]:本機對應不等於分流規則

[Host] 用來為特定網域設定本機對應。最簡單的寫法是以 IP 位址對應網域,適合已知固定位址的測試環境。以下的 192.0.2.10 是文件範例位址,不能用來驗證實際網站是否能開啟。

[Host]
lab.example.com = 192.0.2.10

這筆記錄表示「將 lab.example.com 對應至指定位址」,不表示「使用 DIRECT」。解析或對應確定目標位址後,連線仍須依適用的路由設定處理。若要為該網域指定對外連線策略,請另外在 [Rule] 中編寫規則。

  • 網域遷移:伺服器更換位址後,固定對應可能仍指向舊 IP,請一併確認並更新。
  • HTTPS:設定對應不會改變憑證驗證要求,伺服器憑證仍須符合請求的網域。
  • 應用程式快取:修改對應後,請重新建立連線;既有連線不一定會重新解析。
  • 輸入格式:左側填寫網域,不要加入 https://、路徑或連接埠。

不要將某次查詢取得的位址長期固定到使用動態調度的網站。若網站仰賴 CDN 或依網路環境分配位址,過時的對應會略過正常解析流程,可能造成部分資源逾時,而非所有請求都失敗。

5. [URL Rewrite]:比對 URL 並指定改寫動作

[URL Rewrite] 用來處理請求 URL,而非選擇代理連線。規則通常包含比對運算式、目標位址與動作。以下示範將測試網域的 HTTP 請求重新導向至 HTTPS;末尾的 302 是重新導向狀態碼,不是連接埠號碼。

[URL Rewrite]
^http://example\.com/(.*)$ https://example.com/$1 302

運算式開頭的 ^ 與結尾的 $ 用來限定比對範圍;\. 表示網域中的一般句點;(.*) 會擷取路徑及其後續內容,目標中的 $1 則引用第一組擷取結果。若直接將句點寫成 .,依正規表示式語法,它會比對任意單一字元,比對範圍可能比預期更廣。

  1. 先用一個可自行控制的 HTTP 測試位址驗證規則,不要從複雜的登入頁面開始。
  2. 檢查是否有重新導向,以及路徑與查詢參數是否如預期保留。
  3. 確認目標不會再次跳回原位址,避免形成重新導向循環。
  4. 驗證成功後,再逐步擴大比對範圍,並保留修改前的原始規則以便還原。

6. 在 Config 編輯、選取與驗證 .conf

編輯前,先保留目前可用檔案的副本。若檔案來自遠端設定,請另存一份本機副本再進行測試,避免下次遠端更新覆蓋修改。副本名稱僅供辨識,例如 local-test.conf;檔名本身不會決定設定是否生效。

備份原始設定 編輯單一項目 儲存並選取 重新建立連線 檢查請求
  1. 進入 Config:找到目標檔案,從檔案操作選單開啟文字編輯器。編輯入口的圖示或呈現方式可能因介面調整而不同,請以畫面上實際顯示的項目為準。
  2. 檢查區段位置:確認鍵值位於正確的區段名稱下。不要將 dns-server = system 貼到 [Rule] 中,也不要將 FINAL,PROXY 寫成 General 參數。
  3. 儲存並選取:返回 Config 檔案列表,確認目前使用的標記位於剛儲存的檔案上;只在編輯器中檢視檔案,不代表已切換設定檔。
  4. 確認模式:返回 Home → Global Routing,選擇 Config。Proxy 與 Direct 可用來比較整體代理或直連狀態,但不適合用來證明檔案中的分流規則有效;Scene 則須依已設定的場景條件判斷。
  5. 重新建立測試連線:若可接受短暫斷線,請重新連線,再次開啟測試頁面,避免沿用舊連線。檢查請求記錄中的目標、策略與錯誤訊息。

Settings → On Demand 用來依已設定的條件自動連線,與選取 .conf 檔案屬於不同設定。排查時若連線狀態自行變動,也請檢查 On Demand 條件;不要將自動重新連線誤認為剛儲存的設定檔觸發連線。

驗證時請記錄可供比較的狀況。例如,同一個測試網域修改前可以解析但連線逾時,修改後仍可解析且規則命中結果變為 DIRECT,這只能說明比對與對外連線方式有所變動;是否確實恢復存取,還須確認頁面請求已完成,不能只看連線開關。

7. 設定檔編輯常見問題

儲存規則後,為什麼連線仍採用原本的策略?

先檢查 Config 目前選取的檔案,再確認 Home → Global Routing 是否設為 Config。確認這兩項後,查看目標規則上方是否已有較寬泛的規則先行命中,並重新送出請求,排除既有連線仍採用舊策略的情況。

將 FINAL 放在第一行會有什麼影響?

FINAL 會處理執行至該位置的請求;若放在前面,後續一般規則便沒有比對機會。請將它移至 [Rule] 末尾,再把特定網域、網段及其他條件放在前面,並逐條檢查順序。

為什麼更新後,手動修改的內容不見了?

先確認更新的是遠端設定檔,還是 Home 中的服務訂閱。重新取得遠端設定檔時,可能會覆蓋本機內容;若要長期保留測試修改,請寫入獨立的本機副本,並確認之後仍選取該副本。

刪除 Host 對應後,網域仍無法正常存取,該怎麼辦?

儲存後重新連線,關閉目標頁面再重新開啟,並檢查是否還有其他對應、規則或應用程式連線快取。接著確認 DNS 回傳結果與實際目標位址,區分解析失敗、連線逾時及憑證錯誤;不要反覆新增固定 IP 當作通用修復方式。

完成設定後,保留一份已驗證可用的本機副本,並記錄修改的欄位與測試結果。之後遇到異常時,先還原至這份基準,再逐項恢復修改,比同時替換整份設定檔與伺服器更容易找出原因。