Shadowrocket DNS 設定指南:系統 DNS、自訂 DNS 與 DNS over HTTPS 比較

先確認網域名稱由哪裡解析,再選擇系統 DNS、自訂 DNS 或 DNS over HTTPS。本文整理 Config 設定方式、選擇依據與逐步驗證方法。

本文重點

適合已有自用連線設定,正在排查網域解析問題或想調整解析方式的讀者。先用系統 DNS 建立可用基準;需要指定解析伺服器時,再修改 dns-server;需要加密 DNS 查詢時,確認 DoH 網址及其連線狀況。每次只修改一項,並分別驗證網域存取與連線狀態。

先釐清 DNS、規則比對與連線出口

DNS 會將網域名稱轉換成可供連線使用的位址。Shadowrocket 的一次存取也可能先比對規則,再依規則選擇連線出口。因此,網頁無法開啟不一定是 DNS 問題:網域解析成功後,所選服務的連線仍可能失敗;反過來說,某些規則需要位址資訊,解析結果也可能影響比對。

輸入網域名稱發起解析取得位址比對規則選擇出口

在 Home 查看目前連線狀態與 Global Routing。Proxy 表示流量統一經由所選連線,Direct 表示直接連線,Config 會依目前設定中的規則處理,Scene 則依情境設定運作。調整 DNS 前,先記下目前狀態;若同時切換狀態並修改解析設定,就難以判斷是哪項變更影響存取結果。

規則也要依類型檢視。DOMAIN-SUFFIX 依網域後綴比對,IP-CIDR 依位址範圍比對,GEOIP 涉及位址歸屬判斷,FINAL 則處理前面未比對成功的請求。解析方式無法取代規則;例如將 dns-server 改成另一個位址,不會自動把 FINAL,DIRECT 改成代理出口。

三種方式各自解決什麼問題

系統 DNS 適合作為第一輪排查的基準。它沿用裝置目前網路環境提供的解析設定,不必額外手動維護伺服器位址。從 Wi-Fi 切換到行動網路後,使用的上游解析環境可能隨之改變;如果特定網域只有在某一種網路下無法開啟,建議分別記錄兩種網路的測試結果。

系統 DNS 與自訂 DNS

系統 DNS
先沿用目前網路的解析方式
自訂 DNS
在 Config 指定可連線的解析伺服器位址
先檢查什麼
同一網域在 Wi-Fi 與行動網路下的結果是否一致

若要穩定重現問題,請固定測試網路與 Global Routing。

DNS over HTTPS

傳輸方式
透過 HTTPS 將 DNS 查詢傳送至 DoH 伺服器
位址
使用伺服器提供的完整 HTTPS URL
先檢查什麼
目前網路能否連線至該 URL

DoH 加密的是對應 DNS 查詢的傳輸,不代表所有連線的出口都會改變。

自訂 DNS 適合需要明確指定解析伺服器,或比較不同上游解析結果的情況。傳統 DNS 通常使用 53 埠;DoH 則透過 HTTPS 連線,通常使用 443 埠。埠號不同只代表傳輸方式不同,不能單憑埠號判斷網域是否能成功解析。

53
傳統 DNS 常用埠號
443
DoH 使用的 HTTPS 常見埠號
3 種
本文比較的解析選項

選擇順序:先建立基準,再逐步增加變數

首次排查時,先用系統 DNS 測試同一網域;只有需要固定上游解析伺服器時,才填寫 dns-server。選用 DoH 時,也要另外確認 DoH 伺服器是否連線正常,不能直接把解析失敗歸因於連線規則錯誤。

在 Config 設定 dns-server 與 DoH

先在 Config 找到目前使用的設定檔,確認它是現正啟用的設定,再編輯其中的 [General] 區段。修改前先保留原有文字,尤其要保留既有規則與其他設定。不同設定檔來源可能會覆寫手動修改;若設定檔來自使用者已有的訂閱,更新後應再次檢查這個區段。

  1. 在 Home 確認目前設定檔名稱與 Global Routing,並記下一個可重複測試的網域。
  2. 開啟 Config,編輯對應設定檔的 [General];先只調整 DNS 相關行,不要同時修改 Rule 內容。
  3. 儲存後回到 Home,在相同網路與相同路由狀態下重新測試存取;若仍失敗,還原原值並確認設定文字已正確儲存。

以下片段分別示範三種設定方式,應擇一使用,不要將三個範例的 dns-server 行全部加進同一個 [General] 區段。若使用系統解析,可寫成:

[General]
dns-server = system

指定解析伺服器時,請在 dns-server 填入實際可用的 DNS 位址。以下位址僅用來示範欄位格式;是否適用目前網路,應以實際連線測試為準:

[General]
dns-server = 1.1.1.1

使用 DoH 時,請在 doh-server 填入伺服器提供的完整 HTTPS 位址。以下範例中的 example.com 僅供格式示意,不能當作可用的 DoH 伺服器;實際設定時,請改用已確認可用的位址,並依照 App 內目前的欄位說明檢查格式:

[General]
doh-server = https://example.com/dns-query

修改後如何驗證與找出問題

驗證分成兩個層次。第一層檢查 DNS:目標網域在相同網路下是否解析出可存取的結果。第二層檢查連線:取得位址後,請求是否依預期規則前往正確出口。只測試一個網頁無法區分這兩個層次,因為瀏覽器快取、網站本身狀態及既有連線都可能影響觀察結果。

  1. 記下修改前的網路類型、Global Routing、所選設定檔與目標網域;在 Home 執行 Connectivity Test,記錄一次連線狀態作為基準。
  2. 儲存一項 DNS 變更,中斷連線後再重新連線。先開啟先前能穩定存取的網域,再測試需要排查的網域,並分別記錄結果。
  3. 若兩者都無法存取,請檢查 [General] 拼寫、DNS 位址或 DoH URL 是否可連線;若只有特定網域失敗,再檢查該網域比對到的規則及服務本身。
  4. 還原原設定後重複測試。還原後立即恢復正常,表示新設定值得進一步排查;還原後仍然失敗,則應回頭檢查連線、網路與規則層面的變化。

檢查 IP-CIDR 或 GEOIP 相關規則時,特別留意解析結果與比對順序。規則由上而下檢查,先比對成功的規則會影響後續處理;FINAL 是備用規則,無法修正前面已比對成功的規則。檢查時不要只看 DNS 欄位,也要對照 Config 的規則區段,以及 Home 是否選用 Config 狀態。

判斷依據:重現條件必須一致

比較兩次結果時,請固定網路、設定檔、Global Routing 與測試網域,每輪只修改一項 DNS 設定。若同時切換 Wi-Fi、更新設定檔並修改規則,就無法明確判斷結果是由哪項變更造成。

常見問題與注意事項

填入 DoH 位址後,為什麼網頁反而無法開啟?

先確認 URL 是伺服器提供的完整實際位址,而不是本文中用來示意的 example.com。接著還原原 DNS 設定,測試同一網域;若還原後恢復正常,請檢查目前網路能否連線至該 DoH 伺服器,以及設定是否儲存在目前使用的 Config 中。

系統 DNS 可以存取,自訂 DNS 卻失敗,需要修改規則嗎?

先不要修改規則。保持 Home 中的 Global Routing 不變,確認 dns-server 填入的是可用位址,並在相同網路下重新測試。只有確認已取得解析結果,但連線仍不符合預期時,才檢查 DOMAIN-SUFFIX、IP-CIDR、GEOIP 與 FINAL 的比對順序。

切換 DNS 後,為什麼舊網頁看起來沒有變化?

先中斷連線再重新連線,接著發起新的存取。既有連線與快取可能仍顯示舊狀態;測試時記錄一個先前未存取過的目標,並與可穩定存取的網域比對,不要只反覆重新整理同一個頁面。

更新訂閱後,手動填寫的 dns-server 不見了?

在 Config 檢查目前啟用的設定檔及其 [General] 內容。若更新時設定檔文字遭到替換,手動修改可能會一併消失;請保留原設定記錄,再依自己的設定管理方式,決定應在哪一份設定檔中修改。

Shadowrocket 是 Apple 平台的付費 App,僅透過 App Store 提供;iPhone、iPad 是主要使用裝置,其他相容裝置與系統需求請以 App Store 頁面標示為準。App 買斷與連線服務是兩回事:本文只介紹 App 內的 DNS 設定,操作前提是使用者已經有自己的連線設定。

繼續檢查 App 與基本設定

尚未確認 App 來源時,可先查看 App Store 正版核對說明;若要從 Home、Config 與規則開始操作,請接著閱讀教學。

正版核對