本文適合已在 Home 選好伺服器,並希望調整網域解析方式的使用者。先以系統 DNS 建立可用基準,再到 Config 的目前設定檔確認 dns-server。需要使用 DNS over HTTPS 時,請填入已確認可用的完整端點,並分別檢查解析、規則與連線結果。涉及代理連線的操作,均以使用者已有自己的服務商與訂閱為前提。
DNS 設定會影響解析,不等於變更連線策略
Shadowrocket(小火箭)中的 DNS 設定用來決定如何取得網域名稱的 IP 位址。瀏覽器瀏覽網頁時,取得位址與建立連線是兩個階段。解析成功只表示取得了解析結果,無法證明該位址上的服務可連線,也無法證明目前的伺服器能完成後續連線。
Home 用來選擇伺服器及控制連線,Config 用來管理設定檔,Settings 用來調整 App 設定。本文以 Config 中的文字設定檔路徑說明 DNS,方便明確記錄修改項目。開始前,請先確認目前選取的設定檔,避免只修改到未啟用的副本。
Global Routing 設為 Config 時,會依設定檔規則處理連線;Proxy 與 Direct 用來選擇相應的全域路由模式;Scene 則會套用所選情境的設定。這些項目不能與 DNS 傳輸方式畫上等號。選取 Proxy 不代表所有解析都會自動改用 DoH,選取 Direct 也不能單憑此點證明解析一定使用系統 DNS。
系統 DNS、自訂 DNS 與 DoH 的選擇時機
本文所說的「自訂 DNS」專指手動輸入傳統 DNS 解析伺服器位址。廣義來說,手動輸入 DoH 端點也屬於自訂設定。比較時,請區分「解析請求交給誰處理」與「請求透過什麼方式傳輸」,否則容易把更換位址誤認為傳輸已加密。
系統 DNS
建議優先使用使用系統目前提供的解析環境。作為初次設定與故障排除的基準,可減少額外端點無法連線、憑證錯誤等變數。此處建議的是起始順序,並非所有網路環境下的最終選擇。
適用情境:初次連線、恢復基準、存取依賴本機解析的網路資源
自訂傳統 DNS
指定已知解析伺服器的 IP 位址。傳統 DNS 本身不提供傳輸加密;實際能否連線取決於目前的網路與路由。單純更換 IP 位址,無法解決所有網域的存取問題。
適用情境:網路管理員指定了解析伺服器,或需要比對解析結果
DNS over HTTPS
透過 HTTPS 將 DNS 查詢傳送至支援 DoH 的端點。請使用解析服務明確提供的完整 URL,不要把一般網站首頁當成解析介面。此方式保護的是傳輸至該端點的連線,解析服務仍可處理查詢內容。
適用情境:已有可信且可連線的 DoH 端點,需要加密 DNS 傳輸
結論:先建立一個可用的基準
若系統 DNS 能正常解析目標網域,請先儲存這份設定,再單獨切換至 DoH。若切換後才發生問題,優先檢查端點及至端點的連線;不要同時更換伺服器與路由規則。
在 Config 設定 DNS:先備份,再逐項修改
文字設定檔中,常見的設定位置是 [General] 區段下的 dns-server。以下操作只會修改目前設定檔的解析設定,不需要重新匯入現有訂閱。若設定檔來自遠端更新,請先保留本機副本,因為後續更新可能會覆寫本機修改。
-
記錄目前基準
在 Home 記下目前選取的伺服器與 Global Routing 值。在 Config 確認選取的設定檔,並透過該設定檔的操作選單保留一份副本。
-
開啟文字編輯
前往 Config → 目前設定檔右側的 ⓘ → Edit Plain Text。找到現有的
[General]區段與dns-server,直接修改原有鍵值,不要重複新增同名鍵。 -
設定解析方式
若要恢復系統解析,請填入
dns-server = system。使用傳統 DNS 時,請填入已確認可用的 DNS 解析伺服器 IP;使用 DoH 時,請填入服務說明提供的完整 HTTPS 端點。 -
儲存並重新連線
儲存後回到 Config,確認啟用的仍是剛才修改的設定檔。接著回到 Home 中斷連線並重新連線,讓測試使用重新載入後的設定。
-
重新測試網域
在相同網路、相同伺服器及相同路由模式下,再次瀏覽目標網域。記錄是否取得解析結果,以及後續連線是否成功,再決定要保留或還原設定。
恢復系統 DNS 的最小設定片段如下。這只是設定內容範例,不需要用來取代整份檔案。若已有 [General],只需修改其中對應的一行,並保留其他參數與後續規則。
[General]
dns-server = system
DoH 位址怎麼填:完整 URL、憑證與初始解析
DoH 位址包含通訊協定、主機名稱與服務路徑。常見路徑為 /dns-query,但並非所有服務都使用這個路徑。請複製解析服務提供的端點,不要自行拼湊。若端點指定非預設連接埠,也必須保留。
[General]
dns-server = https://resolver.example.com/dns-query
上方的 resolver.example.com 是保留用的示範網域,僅用來說明格式,不能當成可用的解析服務貼上測試。實際設定時,請使用自己確認有效的端點。URL 必須保留服務要求的大小寫、路徑與必要參數,不要把一般網頁位址或訂閱連結填入 DNS 欄位。
- HTTPS 交握:裝置時間明顯錯誤、憑證不受信任,或端點網域名稱與憑證不符,都可能導致查詢尚未送出就失敗。請先確認時間與服務端憑證,不要透過略過憑證驗證來處理。
- 初始解析:端點使用主機名稱時,連線前仍須先取得該名稱的 IP 位址。若初始解析無法使用,改用 DoH 後仍可能逾時,不能直接歸因於服務網域。
- 端點路由:存取 DoH 服務本身也需要建立連線。其路由及相依條件必須可行,避免形成「連線至解析服務,卻又依賴該解析服務」的循環。
- 回應內容:一般網頁能開啟,不代表相同主機名稱下的 DoH 介面有效。介面路徑錯誤、驗證失效或回傳網頁,都不等於 DNS 回應。
不要將網域名稱直接換成任意查到的 IP 位址來修復 HTTPS。這可能破壞憑證名稱驗證,也可能遺失服務所需的主機名稱資訊。若需要固定位址,請依解析服務與 App 支援的設定方式處理。
DNS 解析異常排查:區分無結果、錯誤結果與連線失敗
排查時先保留故障現況:目前網路類型、目標網域、啟用的設定檔、Global Routing 值,以及大致錯誤訊息。每次只變更一個條件。若同時更新訂閱、更換伺服器又修改 DNS,即使恢復存取,也難以判斷真正有效的修改是哪一項。
| 觀察到的現象 | 優先檢查 | 下一步處理 |
|---|---|---|
| 切換至 DoH 後,多個網域都逾時 | 端點完整 URL、憑證、端點連線狀況 | 切回 system 重新測試;確認基準恢復後,再檢查 DoH |
| 已取得解析結果,但網頁連線逾時 | 實際套用的策略與伺服器連線狀況 | 確認 Global Routing 與設定檔規則,不要先反覆更換 DNS |
| 一般網域正常,內部網域失敗 | 是否依賴區域網路提供的解析結果 | 恢復目前網路的系統解析並驗證,再確認是否需要保留本機解析 |
| Wi-Fi 正常,行動網路失敗 | 兩種網路是否都能連線至解析端點 | 固定伺服器與設定檔,只切換網路並分別記錄結果 |
| 修改後狀況沒有改變 | 修改的設定檔是否已啟用,舊連線是否仍在重複使用 | 確認 Config 中選取的項目,重新連線並再次發出服務請求 |
排查規則時,需要同時理解網域條件與位址條件。DOMAIN-SUFFIX 會比對網域後綴;IP-CIDR 與 GEOIP 會依 IP 條件比對;FINAL 則處理前面規則都未命中的連線。更換解析結果可能影響位址類規則的比對結果,但不會自動修正規則順序。
比對 Global Routing 的 Config 與 Proxy,有助於判斷規則的影響,但不要將暫時測試用的模式當成長期解決方案。若只有在 Config 下失敗,請檢查實際命中的策略。涉及位址類規則時,也要確認是否有 no-resolve 等會影響解析行為的選項。
結論:取得位址後,改查連線流程
若同一網域已穩定取得位址,而問題發生在後續連線,請將排查重點轉向策略、伺服器與目標服務。持續更換 DNS 只會引入新變數,讓問題範圍更難確認。
儲存設定前的檢查與還原順序
解析設定應在實際使用的網路環境中驗證。公共解析服務不一定能解析家庭或辦公室網路中的內部名稱;加密傳輸也不代表解析結果更適合目前網路。若裝置需要同時存取內部網路與公共服務,請先確認本機解析需求,再規劃更細緻的設定。
- 檢查設定來源:遠端設定更新後,請再次確認
dns-server。訂閱更新主要用來同步服務商提供的伺服器資訊,不應當成固定的 DNS 故障排除步驟。 - 檢查自動連線:前往 Settings → On Demand,確認是否已啟用隨選連線。手動中斷後若立即再次連線,請先確認自動連線條件,避免誤以為修改沒有儲存。
- 檢查 IPv6:取得 AAAA 記錄與具備可用的 IPv6 連線能力是兩回事。若已取得位址但連線失敗,請依目前網路的 IPv6 連線狀況判斷,不要只憑記錄類型下結論。
- 恢復最小基準:先還原備份設定檔,或改回
dns-server = system,再重新連線並測試。確認基準恢復後,再逐項加入需要保留的設定。
Shadowrocket 是 Apple 平台上的閉源商業 App,主要供 iPhone、iPad 使用,唯一取得管道為 App Store。系統需求請以 App Store 頁面標示為準。App 一次性買斷與連線服務方案是兩件不同的事;DNS 設定也不會增加或取代使用者現有的連線服務。