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

了解系統 DNS、自訂 DNS 與 DNS over HTTPS 的運作方式及適用情境,並參考設定範例與修改後的驗證方法。

本文重點

設定 Shadowrocket(小火箭)的 DNS,應先考量目前網路是否可用:網路正常時,先沿用系統 DNS;需要指定解析入口時,再使用已有的自訂 DNS;需要保護查詢傳輸時,則確認 DNS over HTTPS。本文適合已備妥服務商、訂閱與可用連線的使用者,說明解析、路由與連線的差異,並介紹單項修改、檢查記錄及還原原設定的方法。

先分清 DNS 解析與 Global Routing 的流量去向

DNS(網域名稱系統)負責將網域名稱轉換為可連線的位址。開啟網頁時,解析成功只是前提,後續還包括規則比對、建立連線、TLS 交握與傳輸回應。網頁無法開啟,不代表問題一定出在 DNS;更換解析器也無法修復所有連線逾時。

網域名稱解析 取得位址 選擇流量出口 建立連線 接收回應

這個流程是用來區分排查階段,並不表示所有請求都嚴格依照相同順序處理。快取、提前比對網域規則、遠端解析,以及應用程式內建的解析機制,都可能改變實際流程。尤其是網域規則可能在本機取得 IP 位址前就完成比對。

如果已有訂閱,更新訂閱通常是更新其中的連線項目,不代表目前 Config 中的 DNS 設定也已更新。排查前請分別記錄所選連線、目前啟用的設定檔與 Global Routing 模式,避免混淆這三種不同狀態。

如何選擇系統 DNS、自訂 DNS 與 DoH

系統 DNS 使用目前系統網路環境提供的解析設定,Wi-Fi 與行動網路可能不同。自訂 DNS 則指定解析入口;若填入一般 DNS 伺服器位址,通常會使用傳統 DNS 傳輸。DNS over HTTPS(透過 HTTPS 傳輸 DNS,簡稱 DoH)改變的是查詢的傳輸方式,不保證回傳的位址速度更快或更適合目前網路。

設定方式 必要條件 適合檢查的情境 主要限制
系統 DNS 目前網路已提供可用的解析服務 建立基準、存取區域網路名稱、完成網路登入 切換網路後,解析入口可能改變
自訂一般 DNS 已有伺服器位址,且目前網路可以連線 固定解析入口、比較不同網路的解析差異 一般查詢本身不提供傳輸加密
DNS over HTTPS 已有完整端點、有效憑證及可用的 HTTPS 路徑 需要保護到解析端點之間的查詢傳輸 取決於端點連線能力、網域引導解析及 TLS 交握
53
一般 DNS 使用的連接埠,涉及 UDP 與 TCP
443
HTTPS 預設連接埠,DoH 通常透過此連接埠傳輸
2 種
常見位址記錄:A 對應 IPv4,AAAA 對應 IPv6

DoH 端點可能使用明確指定的其他連接埠;「可以瀏覽某個 HTTPS 網站」也無法證明某個 DoH 端點可連線。伺服器網域、連接埠、請求路徑與憑證都必須相符。查詢傳輸加密後,解析端點仍可處理並看到查詢,不能因此推論所有流量都已隱藏。

結論:先保留可用的基準設定,再更換解析入口

如果系統 DNS 已能穩定存取目標,先記錄結果;不要為了追求單次較短的耗時,同時更換解析器與流量出口。確實遇到解析失敗時,每次只修改一項 DNS 設定,再用相同網域重新測試。

先從目前的 Config 檢查 DNS,再逐項修改

先前往 Config(設定檔),確認目前啟用的檔案,再查看其中的 [General](一般設定)與 dns-server(DNS 伺服器)項目。也可以從應用程式內的 Settings → DNS(DNS 設定)檢查相關選項;不要只修改未啟用的設定檔,之後卻誤以為解析器沒有生效。

  1. 保留原始值。複製目前的設定檔作為還原副本,並記錄 DNS 欄位、Global Routing 模式及目前網路。若設定檔包含憑證,請妥善保管副本。
  2. 確認測試目標。選擇一個已知可正常存取的公開網域,以及一個確實有問題的網域。區域網路名稱應另外測試,不要與公開網域混在一起。
  3. 只修改解析設定。在啟用中的設定檔檢查 dns-server,或到相應的 DNS 設定頁面查看既有值。不要同時修改流量出口、規則、IPv6 與 On Demand。
  4. 儲存後重新連線。結束目前連線再重新啟用,接著送出新的請求。已開啟的頁面、既有連線與快取命中都不適合作為唯一的驗證依據。
  5. 比對失敗階段。確認問題是解析逾時、連線逾時還是憑證錯誤;若結果變差,請還原原設定並重新連線。

以下兩段只示範同一欄位的兩種寫法,不能將兩段重複加到同一個設定檔中。保留實際檔案中的其他必要設定;不要為了套用範例,就用幾行文字覆蓋整份設定檔。

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

若現有設定由遠端更新管理,請先確認更新是否會覆蓋本機修改。測試時應保留副本;更新後重新檢查啟用檔案中的實際值,不要依照上次輸入的內容判斷目前狀態。

如何填寫與核對 DoH 位址及一般 DNS 位址

一般 DNS 位址與 DoH URL 的格式不能任意互換。前者表示伺服器位址,後者還包含協定、主機名稱與請求路徑。在一般 DNS 位址前加上 https://,不會讓該伺服器自動支援 DoH。

核對一般 DNS 位址

位址範例
192.0.2.53
常用連接埠
53,檢查 UDP 與 TCP 路徑
填寫位置
目前設定檔中的 dns-server 項目
必要條件
已有可用伺服器,且具備網路存取權限

192.0.2.53 是文件示例位址,不能直接用於測試。

核對 DoH 端點

協定
https://
主機名稱範例
resolver.example.com
路徑範例
/dns-query,實際路徑以端點文件為準
憑證要求
憑證有效,且與端點主機名稱相符

DoH 必須使用完整 URL;範例僅說明格式,不提供解析服務。

以網域名稱表示的 DoH 端點需要引導解析:建立 HTTPS 連線前,必須先取得端點本身的位址。如果無法進行引導解析,就可能遇到「要查詢 DNS,卻得先解析 DNS 伺服器網域」的依賴問題。此時應檢查目前網路的基礎解析與端點連線路徑,不要繼續加入同樣無法建立連線的其他端點。

規則、IPv6 與區域網路解析如何影響結果

DNS 回傳位址後,流量仍須經過相應的路由判斷。DOMAIN-SUFFIX(網域後綴比對)依據網域名稱;IP-CIDR(IPv4 位址範圍比對)與 GEOIP(IP 地理位置比對)則依據位址資訊。更換解析器後,回傳的位址可能改變,命中的位址規則也可能因此不同。

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

上例只說明語法與比對關係,不是完整設定檔。DIRECT 表示直連,PROXY 表示代理流量出口;實際使用時,請確認策略名稱符合目前設定檔。規則依序由上往下比對,FINAL(最終規則)則處理前面未比對到的流量。位址範圍為文件示例,不應直接套用為日常分流設定。

連線到需要網頁登入的 Wi-Fi 時,應先完成網路驗證,再評估是否使用自訂解析。若尚未完成驗證,HTTPS 端點無法連線、憑證異常或所有外部請求逾時,通常是網路存取權限問題,而非 DNS 欄位格式錯誤。

修改後如何驗證:記錄失敗階段,不只確認能否開啟

請在相同網路、相同流量出口及相同路由模式下進行驗證。先用原設定建立基準,再換成候選設定。每次記錄請求時間、目標網域、是否取得位址,以及後續連線結果;不要直接比較快取命中的即時回應與首次建立 DoH 連線所需的時間。

觀察到的狀況 優先檢查項目 下一步
記錄中未取得位址,接著發生逾時 解析器是否可連線、端點格式及引導解析 還原為系統 DNS,其他設定保持不變後重新測試
已取得位址,但建立連線時逾時 命中的規則、流量出口路徑與目標連接埠 確認實際套用的策略,不要先反覆更換 DNS
公開網域正常,內部名稱無法使用 是否需要依賴本機網路解析 還原原本的網路與解析設定進行比對測試
Wi-Fi 正常,行動網路失敗 兩種網路下的端點連線能力與連線狀態 分別重新連線並記錄,檢查 On Demand 條件
重新連線後仍顯示先前的位址 DNS 快取、應用程式快取與既有連線 重新送出請求,區分快取結果與新查詢

應用程式內的記錄有助於定位問題,但不同請求顯示的欄位不一定相同。記錄中沒有新的 DNS 項目,可能是命中快取,也可能是解析發生在其他位置。應搭配實際請求時間與路由記錄判斷,不能只因為缺少一行記錄就下結論。

  1. 針對可重現問題的網域,分別記錄原設定與新設定的結果。
  2. 檢查是否取得 A 或 AAAA 記錄,再查看連線最後採用的位址及策略。
  3. 若要驗證隱私,請使用自己管理的測試網域與伺服器記錄;不同的解析出口位址不一定代表異常。
  4. 完成比對後,只保留已驗證的修改,移除測試值並保留還原副本。

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

如果記錄顯示已回傳位址,而問題發生在後續連線階段,應先檢查命中的策略與目標路徑。繼續更換 DNS 會增加新的位址變數,讓原本的故障更難定位。

常見問題:設定儲存後仍未生效,該怎麼辦?

修改 DNS 後,為什麼結果還是沒變?

先在 Config 確認修改的是目前啟用中的檔案,再儲存並重新連線。接著關閉舊頁面並送出新請求,再比對記錄時間。也請確認設定更新是否覆蓋了修改,以及目標應用程式是否保留快取或使用自己的解析機制。

使用 DoH 後,所有請求都一定會經過代理嗎?

不會。DoH 描述的是查詢透過 HTTPS 傳輸的方式,與代理策略不同。先確認 Home → Global Routing,再檢查目前設定檔如何處理端點連線與目標流量;解析請求與網頁請求的路徑應分開驗證。

節點延遲正常,但網域一直無法開啟,要先更換 DNS 嗎?

先確認記錄中是否已回傳位址。延遲測試只能反映該次測試過程,不能證明目標網域解析與網頁連線都正常。確認問題發生在解析階段後,再維持流量出口不變,與系統 DNS 進行比對。

設定後完全無法連線,如何還原?

切換回修改前保留的設定檔,確認 dns-server 原值並重新連線。如果目前網路需要登入,請先完成網路驗證;若每次切換網路都會重新啟動連線,再檢查 Settings → On Demand 的現有條件。

透過 App Store 取得正版先核對應用程式資訊 →