本文適合已在 Shadowrocket 匯入自己的訂閱,並想排查網域解析問題的使用者。先區分解析器位址、查詢傳輸方式與連線出站,再透過目前設定中的 [General] 和 dns-server 逐項修改,最後以相同網域、相同網路和記錄結果進行驗證;不要只憑網頁能否開啟,就判斷 DNS 是否生效。
一、DNS 設定會影響什麼,不會影響什麼
Shadowrocket(小火箭)中的 DNS 設定會影響網域解析:將網域轉換為後續連線所需的 IP 位址。系統 DNS 是指使用目前系統網路提供的解析器;自訂 DNS 通常是明確指定解析器位址;DNS over HTTPS 則是指透過 HTTPS 傳送查詢。這三種說法並非完全互斥,因為手動指定的解析器也可以使用 DNS over HTTPS。
DNS 與代理出站是不同環節。解析出位址,不代表後續連線一定使用 Proxy;使用加密 DNS,也不代表所有 DNS 請求都一定經過現有伺服器。實際行為還取決於目前設定、Global Routing、解析請求本身的路由,以及目標網域是否交由遠端解析。
上述流程用於區分各自的作用,不表示每次連線都必須先在本機完成查詢。具備網域資訊時,DOMAIN-SUFFIX 等網域規則可直接參與比對;部分連線也可能將網域交由遠端處理。IP-CIDR、GEOIP 等依賴位址資訊的規則,則需配合實際解析結果和規則選項理解。
二、如何選擇系統 DNS、自訂 DNS 與 DNS over HTTPS
先保留穩定可用的基準設定。若目前網路提供的 DNS 能正確解析所需網域,使用系統 DNS 更方便配合 Wi-Fi、行動網路及內部網路。需要排查特定解析器,或希望固定查詢目標時,再測試自訂 DNS;需要加密用戶端與解析器之間的查詢傳輸時,再評估 DNS over HTTPS。
| 設定方式 | 查詢目標與傳輸方式 | 適用情境 | 主要限制 |
|---|---|---|---|
| 系統 DNS | 使用系統目前提供的解析器;傳輸方式依實際網路設定而定。 | 保留網路預設行為,檢查內部網域及需登入的網路。 | 切換網路後,解析器及解析結果可能改變。 |
| 自訂傳統 DNS | 指定 IP 位址;一般 DNS 通常使用 UDP 53,必要時使用 TCP 53。 | 比較預設解析器與指定解析器的連線狀況及回應。 | 明確指定位址本身不會提供傳輸加密。 |
| DNS over HTTPS | 指定 HTTPS 查詢端點,通常使用連接埠 443。 | 驗證加密查詢通道及端點連線狀況。 | 須仰賴 HTTPS 建立連線、憑證驗證及端點可用性。 |
DNS over HTTPS 加密的是用戶端至解析器之間的查詢傳輸,解析器仍能處理查詢內容。它不能取代瀏覽網站時使用的 HTTPS,也無法保證降低延遲。首次建立加密連線、網路阻擋、解析器距離及快取狀態,都可能影響查詢時間。
結論:依故障目標選擇,不要只看名稱判斷速度
預設解析正常時保留基準設定;預設解析異常時,先測試一個明確指定的解析器;需要驗證查詢傳輸是否加密時,再單獨切換至 DoH,其他設定維持不變。
三、在 Config 中修改 dns-server
先在 Home → Global Routing 確認目前模式,再到 Config 確認實際啟用的設定。以下驗證流程以 Config 模式為基準。Proxy、Direct 會改變連線處理方式;若使用 Scene,應先確認目前場景對應的設定與路由狀態,避免切換網路時基準設定也跟著改變。
- 在
Config中確認目前使用的設定,先保留一份原始設定副本,並記下原有的dns-server值。 - 開啟該設定的編輯選單,進入
Edit Plain Text。搜尋現有的[General]區段,不要重複新增同名區段。 - 在現有的
[General]中替換dns-server的值。以下三種寫法擇一使用,不要同時貼上三行同名欄位。 - 儲存並確認已啟用修改後的設定,重新連線,再重新存取網域。不要只重新整理仍在沿用舊連線的頁面。
系統 DNS 寫法
[General]
dns-server = system
system 表示使用系統提供的解析器,並非固定位址。切換 Wi-Fi 與行動網路後,系統取得的 DNS 資訊可能不同。若內部網域只在公司或家用網路中有效,改用公共解析器可能就無法解析這些網域。
指定傳統 DNS 位址
[General]
dns-server = 1.1.1.1
此處的位址僅用於示範欄位寫法,不代表推薦任何解析服務,也不表示其速度表現。若要填入多個解析器,可用逗號分隔,例如 dns-server = 1.1.1.1, 1.0.0.1;不要假設清單中的第二個解析器一定會在第一個失敗時才被查詢。為了方便找出問題,首次測試只保留一個解析器。
DNS over HTTPS 寫法
[General]
dns-server = https://1.1.1.1/dns-query
此端點僅用來說明完整 URL 的寫法。DoH 位址必須是解析服務實際提供的 HTTPS 查詢端點,不能把一般網站首頁當成 DNS 伺服器。若使用 IP 位址形式的 HTTPS 端點,服務憑證必須涵蓋該 IP;不要將任意網域端點替換成解析出的 IP,也不要透過關閉憑證驗證來處理錯誤。
設定內容檢查
- 入口
- Config → 目前設定 → Edit Plain Text
- 區段
[General]- 欄位
dns-server- 修改範圍
- 每次只替換一個 DNS 值
在原設定中修改對應的行,不要用片段覆蓋整份設定。
生效條件檢查
- 設定
- 啟用剛才儲存的設定
- 模式
- 確認 Home → Global Routing
- 連線
- 重新連線後發出新請求
- 自動連線
- 確認 Settings → On Demand
On Demand 負責依條件連線,不負責選擇 DNS 解析器。
四、透過可重複的步驟驗證 DNS 是否生效
網頁能開啟,只能表示這次存取成功,無法單獨證明查詢使用了哪個解析器。瀏覽器可能沿用現有連線,應用程式可能保留位址快取,部分應用程式也會使用自己的加密解析服務。驗證時應分別記錄「是否發生查詢」、「查詢結果」及「後續連線方式」。
- 固定測試條件。使用同一台裝置、同一個網路、同一台現有伺服器及同一種 Global Routing 模式。記錄設定檔名稱和目前的
dns-server值。 - 保留系統基準。先使用
system測試一個已知正常的網域及一個有問題的網域,分別記錄成功、逾時或網域不存在等結果。 - 只修改 DNS。改用單一自訂解析器,重新連線,完全結束測試用的應用程式後再開啟重試。建立新連線有助於降低沿用舊連線的影響,但不代表已清除所有系統和應用程式快取。
- 檢查可用記錄。在 Shadowrocket 提供的日誌或請求記錄中,尋找測試網域、查詢類型、回傳位址及失敗訊息;若能看到解析器或出站資訊,也一併記錄。
Data中的流量增加本身並不能證明 DNS 已生效。 - 最後測試 DoH。改用 HTTPS 端點並重複相同流程。若端點回傳網頁、HTTP 錯誤或 TLS 錯誤,先處理端點問題,不要同時修改規則。
| 記錄項目 | 應記錄的內容 | 用途 |
|---|---|---|
| 網路與設定 | Wi-Fi 或行動網路、設定名稱、Global Routing 模式 | 排除測試條件變動 |
| 查詢 | 網域、A 或 AAAA、成功或具體錯誤 | 區分位址類型與查詢失敗 |
| 回應 | 回傳 IP、可見的 TTL、是否來自快取 | 辨識快取及結果變化 |
| 後續連線 | 命中的規則、出站策略、連線結果 | 區分 DNS 與路由問題 |
不同解析器回傳不同 IP 不一定代表錯誤。CDN 調度、解析器位置、快取更新及網路環境都可能改變回應。應依據目標是否能建立連線、憑證是否正確,以及故障能否重現來判斷,不要只因兩次 IP 不同就認定解析異常。
五、依故障現象縮小檢查範圍
發生故障時,先回到剛才的單一變數測試。尤其不要同時修改 DNS、Global Routing、現有伺服器及規則檔,否則即使恢復連線,也很難確認是哪一項設定發揮作用。
- 系統 DNS 正常,自訂 DNS 逾時:檢查目前網路是否允許透過 UDP/TCP 53 存取該解析器。能連上一般 HTTPS 網站,不代表傳統 DNS 連接埠也能連線。
- 傳統 DNS 正常,DoH 失敗:檢查端點路徑、443 連接埠、裝置時間及憑證錯誤。若端點使用網域名稱,首次連線還需要先取得端點本身的位址,這涉及引導解析問題。
- 內部網域無法解析:先切回
system進行驗證。公共解析器通常不知道區域網路或組織內部的名稱;加密傳輸無法補足缺少的解析資料。 - 已取得位址但網頁仍逾時:繼續檢查實際命中的
DOMAIN-SUFFIX、IP-CIDR、GEOIP或FINAL規則,以及所選的出站方式。DNS 查詢成功不代表目標連線也會成功。 - 部分網站偶爾無法連線:分別檢查 A 與 AAAA 回應及對應的網路連線狀況。AAAA 有結果不代表目前網路的 IPv6 路徑可用,不要只憑單一位址類型的回應,就推斷所有連線都正常。
- 修改後行為沒有變化:確認是否修改了未啟用的設定、是否仍沿用舊連線,以及測試用的應用程式是否使用內建解析服務。若設定來自遠端更新,也要檢查更新是否覆蓋了手動修改的內容。
結論:已取得位址但無法連線,先別再更換 DNS
確認查詢成功後,應將檢查重點轉向命中的規則、出站路徑及目標連線狀況;只有回應錯誤或解析路徑異常時,才繼續調整解析器。
六、儲存結果並還原原始設定
確認結果可重現後,再決定是否長期保留修改。系統 DNS 適合依賴目前網路解析的環境;指定解析器適合需要明確控制查詢目標的情境;DoH 則適合需要加密查詢傳輸且端點穩定可連線的環境。三者都必須依實際網路進行驗證,不能只憑欄位名稱判定哪一種最適合所有情況。
- 記錄有效設定中的
dns-server、測試網路及故障現象,不要記錄現有訂閱中的憑證資料。 - 分別在常用的 Wi-Fi 及行動網路重新測試,確認切換網路後不會依賴已無法連線的解析器。
- 若使用遠端設定,更新後請再次確認
[General];伺服器訂閱更新與 DNS 設定修改是不同的操作。 - 需要還原時,恢復備份中的原始值並重新連線。若原本使用系統解析,可還原為
dns-server = system。
本文步驟主要以 iPhone、iPad 上的設定編輯與故障排查為例。Shadowrocket 是 Apple 平台的付費用戶端,唯一取得管道為 App Store;系統需求、其他裝置相容性及通用購買資訊,請以 App Store 頁面標示為準。應用程式購買與使用者現有訂閱分開管理,購買用戶端不等於購買連線方案。