目前網路解析正常時,先保留系統 DNS;需要固定解析伺服器時,再測試自訂 DNS;需要加密用戶端與解析器之間的查詢傳輸時,可考慮 DNS over HTTPS。本文適合已在 Shadowrocket(小火箭)載入既有設定的使用者,說明 dns-server 的修改位置、三種方式的適用範圍,以及如何區分解析失敗、規則誤判與連線失敗。
1. 先分清 DNS 解析與連線分流
DNS 的工作是將網域名稱解析為 IP 位址。例如造訪 www.example.com 時,解析器可能會回傳 IPv4 的 A 記錄或 IPv6 的 AAAA 記錄。取得位址後,用戶端還需要依照目前的路由模式與規則決定如何建立連線。因此,「解析成功」和「網頁可以開啟」是兩個不同的檢查階段。
這個流程說明常見的網域解析檢查順序,不代表每個請求都會重新查詢 DNS。應用程式快取、用戶端快取,以及由遠端處理網域名稱的連線方式,都可能改變實際查詢位置。網域規則也可能在本機解析前就完成比對,因此 DNS 並非所有規則執行前必經的獨立步驟。
在 Home 查看 Global Routing 時,請將模式與解析設定分開理解:Config 使用目前設定中的規則,Proxy 與 Direct 會改變整體連線策略,Scene 則依情境設定運作。切換模式無法取代修正錯誤的解析器位址;設定 DoH,也不代表所有網路連線都會經過代理。
DOMAIN-SUFFIX,example.com,DIRECT:依網域後綴比對,不以特定 IP 位址作為判斷依據。IP-CIDR,192.168.0.0/16,DIRECT:依目標位址網段比對;是否需要解析,還要視請求形式與規則參數而定。GEOIP,CN,DIRECT:依目標 IP 在地理資料庫中的歸屬比對,不能只憑網域名稱判斷。FINAL,PROXY:前面的規則都未比對時使用的最終策略,並非 DNS 伺服器設定。
2. 如何選擇三種 DNS 方式
「系統 DNS」和「自訂 DNS」主要決定使用哪個解析器;「DNS over HTTPS」則還規定查詢的傳輸方式。三者並非完全屬於同一層面的分類:手動指定 DoH 端點,本身也屬於自訂解析設定。選擇時,先確認解析目標與網路連線能力,再考慮傳輸加密。
| 方式 | 解析流程 | 適用情況 | 主要檢查項目 |
|---|---|---|---|
| 系統 DNS | 使用系統目前網路提供的解析器資訊。 | 網路解析正常,或需要解析區域網路內部名稱。 | 更換 Wi-Fi 或行動網路後,解析器可能會改變。 |
| 自訂傳統 DNS | 向手動指定的 DNS 位址發出查詢。 | 已有可用的解析器,且需要固定查詢目標。 | 位址是否可連線、是否支援目標網域,以及查詢傳輸是否受限。 |
| DNS over HTTPS | 透過 HTTPS 向指定端點送出 DNS 查詢。 | 需要加密查詢傳輸,且端點與憑證都能正常驗證。 | 端點路徑、TLS、端點網域的初始解析,以及實際連線路徑。 |
DoH 加密的是用戶端與 DoH 解析器之間的查詢傳輸,解析器仍須處理網域查詢。它不會改變網站本身的 HTTPS 行為,也不保證瀏覽速度更快。新增 TLS 連線可能讓首次查詢耗時增加;連線重複使用與快取則會影響後續結果,不能只憑一次網頁載入判斷優劣。
結論:先保留可用的基準,再更換解析器
如果使用系統 DNS 時,相同網域能穩定解析,請先保留這組設定作為復原基準。之後每次只修改 dns-server,不要同時更換規則、連線策略與伺服器參數,才能判斷變化的原因。
3. 在 Config 中修改 dns-server
修改前,先在 Config 找到目前使用的設定並保留副本,再進入該設定的文字編輯畫面。目標是 [General] 區段中的 dns-server 欄位,而不是 Home 中某個連線項目的 Address。請依目前介面提供的選單操作,避免將伺服器位址誤認為 DNS 位址而修改。
- 在 Config 確認目前選用的設定名稱,記下原本的
dns-server值;若原本沒有這個欄位,也請記錄下來。 - 開啟設定文字,找到現有的
[General]區段;若同一份設定已有此區段,請直接修改原有內容,不要重複新增整個區段。 - 只保留一個本次測試需要的
dns-server設定,儲存後重新選用這份設定。 - 回到 Home,將 Global Routing 設為 Config 以測試設定規則;若可接受短暫中斷網路,請先中斷再重新連線,讓修改後的設定重新載入。
- 重新造訪固定的測試網域,記錄解析與連線狀況;若失敗,請先還原原值,不要連續加入多個解析器。
系統 DNS:作為第一輪測試基準
[General]
dns-server = system
system 表示使用系統 DNS 資訊,但不保證一定由路由器直接回覆,也不代表其他 App 的解析路徑完全相同。切換網路後應重新驗證,尤其是需要先完成網路登入的 Wi-Fi。
自訂傳統 DNS:使用已確認可連線的位址
[General]
dns-server = 192.168.1.1
192.168.1.1 是區域網路範例位址,只有在該裝置確實提供 DNS 服務且目前網路可連線時才有效。閘道位址不一定就是 DNS 位址;也不能將家用網路中的私有位址直接沿用到行動網路。實際填入的值應參考既有網路或解析服務的設定說明。
DoH:填入完整端點,而非網站首頁
[General]
dns-server = https://dns.example.com/dns-query
上方的 dns.example.com 是用來說明格式的虛構值,不能直接用於連線。請替換為已確認可用的完整 DoH 端點;路徑不一定是 /dns-query,應以該解析服務的說明為準。一般 HTTPS 網頁即使可以開啟,也不代表它能處理 DNS 查詢。
4. 同時檢查端點、網路與連線條件
DoH 端點通常以網域名稱表示,建立 HTTPS 連線前可能需要先解析端點本身的位址。如果無法完成初始解析,查詢甚至還沒送達 DoH 服務就會失敗。這類問題不能只靠在清單中加入更多網域形式的端點來解決,還要檢查端點的初始解析、路由與目前網路的連線能力。
傳統 DNS 檢查項目
- 設定欄位
- dns-server
- 範例位址
- 192.168.1.1,僅適用於對應的區域網路
- 常用連接埠
- UDP 53 / TCP 53
- 網路條件
- 目前網路介面可連線,且目標確實提供 DNS 服務
先確認伺服器用途,再檢查是否能取得網域的回覆。
DoH 檢查項目
- 位址格式
- 完整 HTTPS 端點,包含服務要求的路徑
- 預設連接埠
- TCP 443
- TLS 條件
- 憑證與端點網域相符,且裝置日期與時間正確
- 初始解析
- 端點網域能在建立連線前解析出位址
HTTPS 代表傳輸已加密,不表示查詢一定經過代理。
不要透過關閉憑證驗證來處理 DoH 失敗。請先檢查完整位址、裝置日期與時間,以及網路是否需要登入。若「只有開啟 Shadowrocket 時才會失敗」,也應一併檢查 Config 中的規則與端點連線條件,避免端點被導向無法連線的路徑。
- 若區域網路內部名稱依賴內部解析器,直接改用外部解析器可能會得到查無此記錄的回覆。
- AAAA 記錄有回覆,不代表目前的 IPv6 連線路徑一定可用;解析結果與連線能力必須分開驗證。
- 如果 App 使用自己的 DoH 或長時間快取,修改用戶端 DNS 後,可能看不到相應的新查詢。
- 部分請求會由遠端處理網域名稱,不能只因本機記錄中沒有查詢紀錄,就判定設定失效。
5. 依固定順序驗證 DNS 是否生效
驗證時請維持相同的網路、規則與連線項目。先使用系統 DNS 建立基準紀錄,再改用一個自訂解析器;每一輪都使用相同的目標網域。不要同時更新現有訂閱、切換網路並修改 DNS,否則即使恢復連線,也無法找出真正生效的變更。
- 記錄基準:記下網路類型、啟用的設定、Global Routing 模式、測試網域,以及修改前是解析逾時還是連線逾時。
- 確認重新載入:儲存後重新選用設定並重新連線;若 App 仍沿用舊連線,請完全關閉 App 後再開啟測試。
- 檢查解析階段:查看可用的診斷或記錄資訊,尋找相同網域的查詢、回覆或逾時紀錄。若已有快取,不一定會產生新查詢,請勿因此直接判定失敗。
- 檢查連線階段:若已取得目標 IP,之後建立連線卻逾時,請繼續檢查比對策略、目標連接埠與現有連線項目是否可用。
- 重複比較:在相同條件下重複造訪數次,區分首次查詢與快取命中。偶然成功一次,不應作為長期穩定的依據。
| 觀察到的現象 | 優先檢查 | 下一步 |
|---|---|---|
| 查詢逾時,未收到回覆 | 解析器位址、網路連線能力、DoH 端點路徑 | 恢復 system 作為對照,再單獨測試一個已知可用的端點。 |
| 回傳 NXDOMAIN | 拼字、網域是否存在、是否依賴內部 DNS | 確認完整網域名稱,並在相同網路下使用基準設定重新檢查。 |
| 已取得 IP,但連線逾時 | 規則策略、目標服務與實際連線路徑 | 查看該連線的策略紀錄,不要繼續盲目更換 DNS。 |
| Wi-Fi 正常,行動網路失敗 | 是否填入私有解析位址,以及端點能否在不同網路下連線 | 先排除區域網路專用位址,再透過行動網路重新建立基準。 |
結論:依各階段的證據決定下一步
收到解析回覆後,應將排查重點轉向連線策略與目標服務;只有查詢本身失敗時,才繼續調整解析器、端點或其連線條件。不要把所有「無法開啟」的情況都歸因於 DNS。
6. DNS 設定常見問題
修改 dns-server 後,為什麼看起來沒有變化?
先在 Config 確認修改的是目前啟用的設定,再儲存、重新選用並重新連線。接著關閉測試中的 App,再重新開啟並造訪。若 App 沿用位址快取或自行處理解析,只看網頁結果不足以證明用戶端設定沒有生效,應搭配查詢記錄判斷。
填入 DoH 後,DNS 查詢就一定會經過代理嗎?
不一定。DoH 決定查詢透過 HTTPS 傳輸,實際連線路徑仍會受到用戶端 DNS 處理方式、目前模式及相關設定影響。請檢查端點實際使用的連線路徑,不要只因位址以 https 開頭就下結論。
為什麼更換 DNS 後,家中的內部網域無法開啟?
外部解析器通常不會知道家用路由器或公司網路中的內部記錄。請先恢復 system,並在原本的 Wi-Fi 下測試相同的完整名稱;若恢復正常,再依內部網路需求設定解析方式,不要將外部解析器當成所有網域名稱的替代方案。
更新既有訂閱後,為什麼 DNS 問題仍未解決?
連線項目訂閱與 Config 中的 dns-server 是不同的設定項目。請回到 Config 檢查實際啟用檔案中的欄位;若更新的是遠端設定檔,也要確認本機修改是否已被覆蓋。不要以反覆更新連線清單取代 DNS 檢查。
測試時剛中斷連線就自動重新連線,該如何對照?
先查看 Settings → On Demand 並記錄目前條件;必要時暫時停用自動連線後再測試,完成後恢復原設定。On Demand 負責觸發連線,不負責選擇解析器;進行對照時,應避免連線狀態自行改變。