Shadowrocket DNS 設定教學:系統 DNS、自訂 DNS 與 DNS over HTTPS 怎麼選

比較系統 DNS、自訂 DNS 與 DNS over HTTPS 的解析流程和適用情境,附上 Config 設定範例,以及解析異常時的檢查順序。

本文重點

本文適合已完成 Shadowrocket 連線設定,並想調整網域解析方式的使用者。先分清 DNS 伺服器、DNS 傳輸方式與請求的出站策略,再透過 Config 中的最小設定逐項測試。系統 DNS 適合作為基準,自訂 DNS 可指定解析器,DNS over HTTPS 則會加密用戶端與解析器之間的查詢;實際效果仍須依目前網路、規則和解析結果判斷。

一、先分清 DNS 解析與連線出站

Shadowrocket(小火箭)的 DNS 設定處理的是「網域對應哪些 IP 位址」,Global Routing 和規則處理的則是「連線如何出站」。網頁無法開啟,可能是這兩個環節其中之一出問題,也可能是目標服務本身異常。只更換 DNS,無法修復服務連接埠無法連線、連線驗證失敗或目標網站拒絕存取等問題。

以下示意需要在本機解析時的簡化流程。實際處理時,網域規則可能先於位址規則生效;部分代理請求也可能將網域交由遠端處理,因此並非每條連線都會完整經過相同的本機 DNS 流程。

網域請求 選擇解析器 返回位址 判斷策略 建立連線

也要留意應用程式本身的解析機制。瀏覽器或其他 App 可能使用獨立的加密 DNS,既有連線與快取也可能沿用舊位址。在 Config 中設定解析器,不代表裝置上所有 App 的每次查詢都一定經過該解析器。排查時請固定使用同一個 App、網域和網路,避免混在一起比較不同請求。

二、系統 DNS、自訂 DNS 與 DoH 有何不同

系統 DNS 通常沿用目前網路提供的解析設定;切換 Wi-Fi 或行動網路後,實際使用的解析器可能隨之改變。自訂 DNS 則是在設定中指定解析器位址。「自訂」描述的是選擇方式,不代表傳輸已加密。DNS over HTTPS(簡稱 DoH)是透過 HTTPS 傳送 DNS 查詢,也可以自訂解析器。

設定方式 解析器來源 傳輸特性 優先檢查的情境
系統 DNS 目前的系統與網路設定 不能只憑名稱判斷是否加密 網路登入頁面、家庭網路、內部網域
自訂一般 DNS 設定中指定的 IP 位址 通常使用 UDP 53,也可能使用 TCP 53 需要固定解析器並比較解析結果
DNS over HTTPS 設定中指定的 HTTPS 端點 常見連接埠為 443,且須完成 TLS 連線 需要加密 DNS 查詢,且端點必須可連線
53
一般 DNS 的標準連接埠,通常使用 UDP,也可使用 TCP
443
HTTPS 的預設連接埠,DoH 端點通常使用此連接埠
2 類
常見位址記錄:A 對應 IPv4,AAAA 對應 IPv6

結論:先建立基準,再決定是否改用 DoH

先用系統 DNS 確認目標網域能否解析,再單獨切換一種解析方式重測。如果一般 DNS 可用,但 DoH 逾時,應先檢查 DoH 端點是否能透過 HTTPS 連線,不要同時變更規則和連線設定。

DoH 加密的是裝置與所選解析器之間的查詢傳輸,解析器仍須處理查詢內容。它不保證回傳的位址速度更快,也不保證能解析內部網域。解析器回傳的位址、目標服務的地區調度和網路路徑,都可能影響實際連線體驗。

三、在 Config 設定 DNS:先備份,再逐項修改

操作前,請確認已選用自己的服務供應商與訂閱,並完成基本連線測試。Subscribe 匯入或更新的是既有連線資訊,不代表 DNS 設定也已完成。本文只調整目前 Config 的解析設定,不涉及服務來源的選擇。

  1. 進入 Config,確認目前實際使用的設定檔,並先儲存一份副本。不要只修改未啟用的檔案。
  2. 開啟該設定檔的編輯功能,找到 [General] 區段中的 dns-server 項目。編輯入口的文字或圖示可能因介面變動,請以目前畫面顯示為準。
  3. 如果已經有 dns-server,請修改原有項目,不要在檔案末尾重複新增多個同名設定。
  4. 儲存並確認仍選用該設定檔,返回 Home,在可中斷連線時重新連線,再測試相同網域。
  5. 保留修改前後的解析結果與錯誤訊息。若問題沒有改善,先還原副本,再進行下一項測試。

以下三段是互斥的最小範例,每次只選一段替換目前設定中的對應項目。這些範例不是完整設定檔,不應覆蓋原有規則與連線資訊。範例中的公共解析器僅用來說明語法,是否採用應視其連線狀況與服務政策而定。

方案 A:沿用系統 DNS

[General]
dns-server = system

system 代表使用系統 DNS,適合建立比較基準,也適用於依賴本機解析器的環境。如果內部網域在未連線時可用,改用公共 DNS 後卻無法使用,應優先確認該網域是否只能由本機網路的解析器解析。

方案 B:指定一般 DNS

[General]
dns-server = 1.1.1.1

此處只指定一個解析器,方便排除其他變因。一般 DNS 位址不需要加上 https://,也不要把網頁網址填入一般伺服器位址欄位。如果目前網路限制外部 DNS,即使指定 IP 仍可能逾時;此時應先還原系統 DNS 進行驗證,而非不斷新增更多位址。

方案 C:指定 DNS over HTTPS

[General]
dns-server = https://1.1.1.1/dns-query

DoH 必須填入完整端點,通訊協定、主機名稱和路徑都很重要;只填解析服務的首頁網址,並不等於填入 DoH 位址。此範例使用憑證支援該 IP 位址的端點,不要因此將其他網域端點任意改成 IP,否則可能發生憑證驗證失敗。

四、DNS 如何搭配 Global Routing 與規則

在 Home 確認 Global Routing:Config 會依目前設定檔中的規則處理連線;Proxy 和 Direct 分別代表代理或直連模式;Scene 則依已設定的場景選擇運作方式。排查規則問題時應先固定模式;若停在 Proxy 或 Direct,再用 Config 中的分流規則解讀存取結果,容易得出錯誤結論。

DNS 設定檢查

位置
Config → 目前設定檔 → 編輯
設定區段
[General]
設定項目
dns-server
驗證條件
儲存、選用設定檔並重新連線

修改未啟用的設定檔,不會影響目前連線的解析設定。

規則關鍵字檢查

DOMAIN-SUFFIX
依網域後綴比對
IP-CIDR
依 IPv4 位址範圍比對
GEOIP
依 IP 地理資料庫比對
FINAL
前面規則皆未命中時套用的最終規則

規則會依序判斷;位址類規則可能會用到解析結果。

以下僅示範規則語法,不能直接取代完整設定檔。192.0.2.0/24 是文件範例網段,並非需要連線的服務位址。DOMAIN-SUFFIX 可依網域比對;位址類規則則須搭配已知的目標 IP。附加 no-resolve 代表不因該位址規則主動觸發網域解析,而不是禁止整條連線使用 DNS。

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

DNS 回傳位址後,後續連線也不一定會依預期出站。應分別檢查解析結果與規則命中紀錄;如果網域已命中前面的規則,繼續修改後面的 GEOIP 或 FINAL,也不會改變這次比對結果。也不要只憑 Global Routing 的名稱推斷 DNS 查詢本身的出站路徑,實際情況還取決於目前的 DNS 相關設定與紀錄。

五、解析異常時的檢查順序

Connectivity Test 用於查看所選連線的測試結果,不等於完整驗證特定網站的 DNS、TLS 與服務存取狀況。測試結果正常但網頁無法開啟時,應區分「沒有取得位址」和「取得位址後連線失敗」。以下步驟不依賴虛構的速度數據,每一步都要記錄可重現的現象。

  1. 固定網路與測試對象。記錄目前使用 Wi-Fi 或行動網路、目標網域、Config 和 Global Routing。優先選擇實際無法連線的網域,再以已知正常的網域作為對照。
  2. 確認設定已生效。儲存後重新連線,確認目前仍使用剛才修改的檔案。如果遠端更新可能覆蓋設定,請在副本中測試,並於更新後再次確認。
  3. 判斷錯誤發生階段。沒有取得位址、查詢逾時、回傳不存在,與取得位址後連線逾時,是不同問題。請參考可用的連線紀錄或目標 App 的錯誤訊息判斷,不要只憑「網頁無法開啟」就認定是 DNS 故障。
  4. 恢復系統 DNS 作為對照。如果恢復後立刻恢復正常,但指定解析器持續失敗,請優先確認該解析器在目前網路是否可連線,以及是否需要存取內部網域。
  5. 單獨測試 DoH 條件。檢查端點拼字、HTTPS 路徑、裝置時間與憑證錯誤。一般 HTTPS 網站可以開啟,只能證明部分 HTTPS 連線可用,不能保證特定 DoH 端點也能連線。
  6. 檢查 A 與 AAAA 記錄。若已取得位址但仍無法連線,請確認是否只有某一種位址類型異常。IPv6 路徑問題不能簡單歸咎於解析器錯誤,也不應先大量刪除 IPv6 相關設定。
  7. 最後再處理快取與自動連線。重新建立連線並重新開啟目標 App;同時檢查 Settings → On Demand,避免測試期間自動重新連線而改變連線狀態。不要把清除快取當成取代前述檢查的固定解法。

結論:取得位址後,改查連線與規則

如果同一目標穩定回傳 A 或 AAAA 記錄,但仍在連線階段逾時,應檢查規則命中情況、所選連線和目標服務連接埠。此時持續更換解析器,通常無法找出真正的問題環節。

六、常見問題:設定後仍異常怎麼辦

改用 DoH 後,為什麼第一次開啟網頁比較慢?

DoH 連線可能需要先解析端點、建立 TLS 連線,再進行查詢。請在相同網路上連續測試同一網域,分辨首次連線與後續沿用連線的差異;如果每次都要等很久,請改回系統 DNS 作為對照,並確認端點是否可連線,不要只依一次開啟速度下結論。

公共網站能開啟,但家中的內部網域無法開啟,怎麼辦?

先將 dns-server 改回 system,再透過原本的家庭 Wi-Fi 測試。如果恢復後可以使用,代表內部名稱可能依賴本機解析器。如果需要同時解析公共與內部網域,應依現有網路架構設定對應的網域解析策略,不要期待公共解析器能解析私人網路中的名稱。

設定多個 DNS,就會嚴格依序備援嗎?

不要只根據位址排列順序,就認定系統會嚴格依序切換主要與備用解析器;查詢選擇與回退方式會受實際實作及設定影響。排查時先只保留一個已知可連線的解析器,儲存後重新連線。完成單項測試後,再依目前設定支援的機制加入其他解析器。

Subscribe 更新成功,為什麼 DNS 設定沒有改變?

更新連線資訊的 Subscribe,與目前 Config 中的 DNS 項目是不同的檢查項目。請回到 Config 確認選用的檔案,再檢查 [General] 中的 dns-server。如果更新的是遠端設定檔,也要確認遠端內容是否覆蓋本機修改。

最後請保留一份可重現結果的紀錄:使用的網路、Config 名稱、Global Routing 模式、DNS 設定值、目標網域及故障階段。分享紀錄前,請刪除訂閱網址、驗證資訊和私人網域。一次只改一個選項,逐項測試並保留可還原的正常基準,更容易判斷問題所在。

下載 Shadowrocket