Shadowrocket DNS 設定:系統 DNS、自訂 DNS 與 DoH 怎麼選

比較系統 DNS、自訂 DNS 與 DoH 的解析方式和適用情境,說明 DNS 設定與分流規則的關係,以及常見的解析失敗狀況。

本文重點

先保留目前可正常使用的 DNS 作為基準,再依需求選擇解析器與傳輸方式。本文適合已在 Shadowrocket 使用自有設定的使用者,說明系統 DNS、自訂 DNS 與 DoH 的差異、設定檢查順序,並分別處理解析失敗、規則比對與目標連線失敗。

先分清解析器位址與 DNS 傳輸方式

DNS 用來將網域名稱解析為 IP 位址等記錄。系統 DNS 是裝置從目前網路或系統設定取得的解析設定;自訂 DNS 是自行指定解析器;DNS over HTTPS(簡稱 DoH)則是指透過 HTTPS 傳送 DNS 查詢。因此,「自訂 DNS」與「DoH」並非互斥選項,自訂解析器也可以使用 DoH。

選擇時先釐清兩件事:要將請求交給哪個解析器,以及透過什麼連線傳送。更換解析器可能改變回傳的位址;更換傳輸方式則會改變查詢的傳輸路徑與保護方式。兩者都不會修改網頁本身的 HTTPS 設定,也無法保證一定能連上目標網站。

方式運作方式優先確認事項
系統 DNS使用目前系統取得的解析設定;實際請求路徑仍會受到隧道與設定影響。切換 Wi-Fi 或行動網路後,解析結果與內網網域是否有所變化。
自訂 DNS將查詢交給指定的解析器;使用一般 DNS 時,通常會透過 UDP 或 TCP 的 53 埠。確認位址是否可連線、連接埠是否可用,以及是否需要解析內網網域。
DNS over HTTPS透過 HTTPS 將 DNS 訊息傳送至解析端點。確認完整 URL、憑證、端點網域的初始解析,以及實際連線路徑。

判斷原則:先保留可用基準,每次只更動一項

如果目前網路可正常解析,先記錄系統 DNS 的結果;需要固定解析器時再設定自訂 DNS,需要加密查詢傳輸時再測試 DoH。不要同時更改解析器、Global Routing 與代理設定,否則無法判斷是哪項變更影響結果。

DNS 查詢與網頁連線是兩個檢查階段

一般網域存取時,應用程式需要先取得目標位址,再建立連線。實際過程可能使用快取,也可能由應用程式自行解析或交由代理端解析,因此不能假設每次存取都會在本機完成以下所有步驟。

網域請求 解析處理 回傳位址 路由判斷 目標連線

排查時,分別記錄「是否取得解析結果」和「取得結果後是否連線成功」。有回傳位址,代表該次查詢已收到回應;但位址是否適用於目前的連線出口、目標連接埠是否可連線,以及 TLS 是否成功,仍須進一步確認。瀏覽器顯示網頁無法開啟,不能單憑這個現象判定是 DNS 故障。

53
一般 DNS 常用連接埠,可使用 UDP 或 TCP
443
HTTPS 預設連接埠,DoH 端點通常使用此連接埠

連接埠可連線只是必要檢查之一。DoH 還需要正確的 HTTPS 路徑與有效憑證;將一般 DNS 位址的連接埠從 53 改成 443,並不會自動變成 DoH 服務。反過來說,DoH 加密的是傳送至解析端點的查詢,解析器仍看得到查詢內容,也不會自動讓所有網路連線都透過代理傳出。

變更前先備份,並確認目前設定是否參與 DNS 處理

在 Shadowrocket 中,先從 Home 確認目前的連線狀態與 Global Routing,再前往 Settings → DNS 檢查解析設定。同時到 Config 查看目前使用的設定檔:檔案中的 DNS 項目也可能影響實際行為,不能只因 Settings 填入某個位址,就認定最終使用的是該解析器。實際欄位與可選項目請以 App 目前顯示為準。

  1. 保留原始設定。記下現有 DNS 項目、目前的設定檔名稱與 Global Routing 選項。修改設定檔前先保留副本,以便逐項還原。
  2. 確認基準狀態。在目前網路上存取一個已知可正常使用的公網網域;若需要存取內網資源,也選一個實際使用的內網網域作為對照。
  3. 只更改 DNS。使用現有且已獲准使用的解析器參數,不要同時更換伺服器、規則與協定參數。
  4. 重新建立連線。儲存後中斷並重新連線,再重新發起存取。既有連線與快取可能仍使用舊結果,不要只重新整理一次頁面就下結論。
  5. 依網路分別確認。在實際使用的 Wi-Fi 與行動網路上分別測試;若已設定 Settings → On Demand,測試期間也要確認是否發生自動重新連線。

一般 DNS 參數檢查

位址格式
解析器 IP 位址
文件範例
192.0.2.53
常用連接埠
UDP / TCP 53
檢查重點
可連線性、內網解析需求與實際連線路徑

192.0.2.53 是文件範例位址,不能直接當作實際解析器使用。

DoH 參數檢查

位址格式
完整 HTTPS URL
文件範例
https://dns.example.com/dns-query
常用連接埠
HTTPS 443
檢查重點
路徑、憑證、端點初始解析與可連線性

範例端點不提供解析服務;實際 URL 應使用你現有解析服務提供的完整參數。

如果 DoH 端點使用網域名稱,建立 HTTPS 連線前也需要先取得該網域的位址,這通常稱為初始解析或 bootstrap。不可讓端點唯一的解析來源依賴尚未建立的同一條 DoH 連線。若目前設定涉及這類依賴,應檢查初始解析的安排,而不是反覆填入相同 URL。也不要任意將端點網域名稱換成 IP,否則可能導致憑證名稱驗證失敗。

DNS 與分流規則的關係:回傳位址不等於符合路由策略

Home → Global Routing 中的 Config 會依目前設定檔中的規則處理流量;Proxy 與 Direct 是不同的全域路由選項,不能以它們的測試結果取代 Config 下的規則驗證。使用 Scene 時,也要先確認該場景實際生效的路由設定。DNS 查詢的傳輸路徑與目標連線套用的策略,應分開檢查。

網域規則依據可用的網域資訊比對,IP 規則則依據目標位址比對。對需要判斷 IP 的流量,解析結果可能影響後續規則比對;但這不代表所有規則都必須先完成一次本機 DNS 查詢。例如,應用程式直接請求 IP 時,可能沒有可供比對的原始網域名稱。

[Rule]
DOMAIN-SUFFIX,example.com,PROXY
IP-CIDR,192.0.2.0/24,DIRECT,no-resolve
GEOIP,CN,DIRECT
FINAL,PROXY

以上僅為語法說明,範例網域與網段皆供文件說明使用,不能直接套用為完整設定。若更換 DNS 後,某次存取符合了不同的 IP 規則,應先比較回傳位址,再檢查規則順序;不要為了修正單一網域就直接刪除所有規則。如果解析器請求也必須透過代理,還要檢查是否形成「連線代理前必須先解析,但解析又依賴該代理」的循環依賴。

依現象排查解析失敗,別把所有逾時都歸因於 DNS

每次重新測試時,建議記錄四項資訊:目前網路、查詢網域、回傳結果或錯誤,以及後續連線是否成功。比較時維持設定與目標一致,並留意快取。Home 的 Connectivity Test 可作為連線狀況的參考,但單次延遲結果不代表下載頻寬,也無法單獨證明所有網域都能正常解析。

改用 DoH 後,所有網域都逾時怎麼辦?

先還原原本的 DNS,確認能否恢復基準狀態。接著檢查 Settings → DNS 中的完整 URL、端點網域是否可解析、裝置時間是否正確,以及目前路由是否阻擋端點連線。一般網頁可以開啟,不代表指定的 DoH 路徑一定可用。

公網網頁正常,但家中內網網域無法開啟?

先確認裝置仍連接到對應的內網,再比較系統 DNS 與自訂 DNS 的解析結果。公用解析器通常沒有區域網路的私有記錄;應保留相應的內網解析路徑,而非繼續更換公網解析器。也要分清一般 DNS 名稱與使用 .local 的 mDNS 名稱。

已經取得 IP,網頁卻一直轉圈,是 DNS 出問題嗎?

先查看該次連線符合的規則與套用的策略,再檢查目標連線逾時或 TLS 錯誤。若同時回傳 A 與 AAAA 記錄,也要確認 IPv4、IPv6 路徑是否都能正常使用。若只有其中一條位址路徑失敗,不宜直接判定整個解析器失效。

為什麼修改設定後,看起來還是原本的結果?

先儲存設定並重新建立連線,再關閉舊頁面重新存取;同時確認 Config 中是否仍有相關 DNS 設定。App 內建的 DoH、系統或 App 快取,以及既有的長連線,都可能讓單次重新整理無法反映新設定,應搭配對應的請求紀錄判斷。

若結果顯示 NXDOMAIN,代表解析器回報網域不存在;這與「沒有收到回應」的逾時不同。SERVFAIL 則表示解析器無法完成處理,可能涉及上游、DNSSEC 驗證或其他解析故障。先檢查網域名稱是否拼錯,再比較相同網域在基準解析路徑下的結果,不要把不同錯誤一律當成「網路很慢」。

完成驗證後,保留可還原的設定紀錄

最終選擇應依實際存取需求決定。系統 DNS 適合用來對照目前網路狀況;固定解析器適合需要明確控制解析來源的設定;DoH 適合需要透過 HTTPS 傳送查詢,且端點可正常連線的環境。是否保留某種方式,應同時檢查公網網域、內網網域與目前分流狀況,而不只是看單次查詢耗時。

Shadowrocket 是 Apple 平台上的閉源商業 App,主要供 iPhone、iPad 使用;其他裝置的相容性與系統需求請以 App Store 頁面標示為準。App 採一次性買斷,購買 App 與線路服務分開。本文以使用者已有自有設定為前提;本站不提供、不販售也不推薦任何節點或訂閱。

App Store 正版核對查看取得與購買說明