本文適用於已在 Shadowrocket(小火箭)匯入自有設定檔,並需要調整網域解析的使用者。先釐清 DNS 解析與流量出站的差異,再比較系統 DNS、自訂 DNS 和 DoH 的適用情況;接著備份 Config、修改 dns-server,並在相同網路下每次只調整一項設定,確認是否保留變更。
DNS 解析與規則分流各自處理什麼?
DNS 用來將網域名稱解析為 IP 位址等記錄。開啟網站時,解析只是連線流程的一部分;取得位址後,還需要進行路由選擇、建立傳輸連線、完成 TLS 交握並載入網頁資源。因此,「更改 DNS 後可以開啟」可作為排查線索,但「網頁無法開啟」不一定代表 DNS 故障。
Shadowrocket 的 dns-server 用來指定解析上游;規則中的 DIRECT、PROXY 則用來指定符合條件的流量處理方式。兩者並非同一項設定。使用加密解析不代表網站流量一定經由代理,使用系統 DNS 也不代表網站流量一定直連。
上述流程呈現的是排查時需要區分的階段,不代表所有規則都必須等解析完成才會套用。DOMAIN-SUFFIX 可直接比對網域後綴;IP-CIDR 和 GEOIP 依 IP 位址比對,只有網域資訊時可能需要先解析。規則依序判斷,最後的 FINAL 會處理未符合其他規則的流量;修改 DNS 不會自動調整規則順序。
系統 DNS、自訂 DNS 與 DoH 的適用情況
「系統」與「自訂」描述解析器的來源;DoH 描述查詢的傳輸方式。這兩種分類並非完全平行:手動填入 DoH 位址,本質上也是自訂解析上游。選擇時應一併考量網路連線狀況、內部網域需求和查詢傳輸方式,而不只是比較名稱。
| 設定方式 | 適用情況 | 主要限制 |
|---|---|---|
| 系統 DNS | 目前的 Wi-Fi 或行動網路解析正常;需要存取由目前網路解析的內部網域。 | 解析來源會隨網路變動,實際行為也受系統設定與網路管理政策影響。 |
| 自訂一般 DNS | 需要固定使用某個解析器,而且其 IP 位址可從目前網路連線。 | 一般 DNS 通常使用 UDP 53,也可使用 TCP 53;查詢本身不具備傳輸加密。 |
| DNS over HTTPS | 已有可信且可連線的 DoH 端點,並需要加密用戶端至解析端點之間的查詢傳輸。 | 需要 HTTPS 連線正常、憑證有效,且端點網域可完成啟動解析;解析服務仍可處理查詢內容。 |
結論:先保留可正常運作的基準設定,再決定是否固定解析上游
目前網路解析正常且需要存取內部網域時,先沿用系統 DNS。只有明確需要固定解析器或加密查詢傳輸時,才分別測試自訂 DNS 或 DoH,並保留可還原的原始設定。
在 Config 修改前,先確認目前使用的設定檔
本文以編輯設定檔中的 [General] 區段為操作基準,不依賴特定版本介面上的按鈕位置。Home 用來查看連線狀態與 Global Routing,Config 用來管理設定檔,Settings 用來調整 App 設定。只編輯未啟用的檔案,通常不會改變目前連線使用的設定。
- 在 Home 記錄目前的連線項目與 Global Routing 設定值。若要依規則測試,請使用
Config模式,並確認目前啟用的設定檔。 - 進入 Config,備份或複製目前的設定檔。保留原有 DNS 設定行和其他 General 參數,避免同時變更多個項目。
- 開啟該檔案的編輯功能,找到
[General]。若已有dns-server,請修改原有設定行,不要新增多個同名設定來嘗試切換。 - 儲存後確認測試檔案已啟用,再中斷並重新連線,讓後續測試套用新設定。
- 記錄目前使用 Wi-Fi 或行動網路、測試網域、遇到的狀況及還原方式,再開始比較。
[General] 區段中 dns-server 的三種寫法
以下是三個互斥的最小範例:每次只選用一個,取代目前設定檔中的對應設定。請勿用這些短範例覆寫整份設定檔,否則會遺失原有規則和其他參數。若現有設定檔包含專用網域對應或其他 DNS 選項,也需要一併確認其作用。
沿用系統 DNS
[General]
dns-server = system
system 表示使用系統提供的 DNS,適合作為比較基準,尤其是目前網路需要解析內部網域時。此處的「系統」不代表固定使用某個解析器位址;切換 Wi-Fi、行動網路或系統網路設定後,解析來源可能隨之改變。
設定自訂一般 DNS
[General]
dns-server = 1.1.1.1
1.1.1.1 是一般 DNS 位址的寫法範例,不代表推薦在所有網路中使用。請選用自己確認可信且可連線的解析器位址。只填入 IP 位址不會讓一般 DNS 自動變成 DoH,也無法據此判斷查詢是否經由代理傳輸。
設定 DNS over HTTPS 端點
[General]
dns-server = https://dns.example.com/dns-query
dns.example.com 是保留作為範例的網域,上述位址僅用來展示語法,不能直接用於解析。實際使用時,請替換為 DNS 服務提供的完整 DoH 端點,包含 https://、主機名稱和路徑。/dns-query 是常見路徑,但仍須依端點的實際要求設定,不要只填入服務首頁。
一般 DNS 檢查項目
- 設定區段
- [General]
- 設定鍵
- dns-server
- 位址格式
- 解析器 IP 位址
- 常用連接埠
- UDP / TCP 53
先確認目前網路能連線至該位址,再比較解析結果。
DoH 檢查項目
- 設定區段
- [General]
- 設定鍵
- dns-server
- 位址格式
- 完整 HTTPS 端點
- 憑證要求
- 憑證有效且主機名稱相符
端點主機名稱本身也需要完成啟動解析,不能只檢查 URL 拼寫。
DoH 處理查詢傳輸,不取代出站連線檢查
DoH 透過 HTTPS 保護用戶端與解析端點之間的 DNS 查詢傳輸,但不會隱藏解析服務本身需要處理的查詢,也無法取代網站連線所需的 TLS。解析器回傳的位址可能因地理位置、快取和服務政策而異,結果不同本身不能證明設定錯誤或速度更快。
DoH 端點使用網域名稱時,用戶端必須先取得該端點的位址,這個步驟通常稱為啟動解析。如果端點網域無法解析、憑證驗證失敗,或無法透過 HTTPS 連線至端點,即使設定內容符合語法,也可能無法正常解析。
- 檢查解析結果:目標網域是否回傳位址、明確表示網域不存在,還是一直逾時;這三種情況不能混為一談。
- 檢查解析通道:是否能連線至一般 DNS 的 53 連接埠,或 DoH 端點的 HTTPS 服務。
- 檢查目標連線:取得位址後,目標網站的連線、TLS 交握或資源請求是否失敗。
- 檢查規則比對結果:Global Routing 設為
Config時,確認符合的網域規則、IP 規則和最終策略。
不要將 Global Routing 的 Proxy、Direct、Config 分別對應到不同 DNS 類型。這些是流量處理模式;Scene 用來切換場景相關設定,並不是第四種 DNS 協定。為了取得可比較的結果,測試 DNS 時請維持相同模式、連線項目和規則檔案。
按照相同步驟驗證,避免快取造成誤判
瀏覽器、系統和 App 都可能保留連線或解析快取。修改設定後,已開啟的頁面仍可繼續載入,不代表新的解析器已生效;第一次開啟速度較慢,也可能是因為新連線需要額外交握。請針對同一組目標重複觀察,不要只依一次頁面載入結果下結論。
- 建立基準:維持目前網路,使用原設定造訪一個常用網站和一個目前無法正常使用的網站,分別記錄「解析逾時」、「連線逾時」或「部分頁面資源載入失敗」等具體狀況。
- 只修改 DNS:保持連線項目、Global Routing 和規則不變,只替換
dns-server,儲存後重新連線。 - 送出新請求:關閉原有頁面後重新造訪,並參考連線記錄或日誌中實際可見的資訊進行檢查。無痕視窗也不保證系統 DNS 快取已清除。
- 還原後再比較:還原原本的 DNS 設定後再測試一次。如果兩種設定都無法連線,應繼續檢查目標服務、出站連線和規則,不要反覆更換解析器。
- 另外測試網路變更:最後再切換 Wi-Fi 與行動網路重複測試,不要在修改 DNS 的同一輪測試中同時切換網路。
DNS 設定常見問題
改用 DoH 後,所有網站都無法開啟,該怎麼辦?
先還原備份中的 dns-server,重新連線並確認原本的狀況已恢復。接著檢查 DoH 端點是否為完整 URL、端點網域能否完成啟動解析,以及 HTTPS 憑證是否有效。本文的 example.com 位址僅為語法範例,不能作為實際服務使用。
公司內部網域只有使用系統 DNS 才能開啟,該怎麼設定?
先還原 dns-server = system,並在原本的公司網路中確認。一般公開解析器通常無法解析內部 DNS 區域,不能因為它能解析公開網站,就直接取代內部解析器。若需要混合解析,請先向網路管理員確認網域範圍與解析要求,再調整現有設定。
DNS 已回傳位址,網頁卻一直轉圈,怎麼辦?
返回 Home 檢查連線狀態與 Global Routing。在 Config 模式下確認目標是否符合預期規則,再檢查出站連線和 TLS 錯誤。此時問題可能已發生在解析之後,繼續更換 DNS 未必有幫助。
更新訂閱後,之前修改的 DNS 設定不見了?
進入 Config 檢查目前啟用的檔案和 [General] 內容,確認更新的是連線清單還是完整遠端設定。完整設定重新整理時可能會取代本機編輯內容;請先保留個人副本並比較差異,再決定在哪個檔案中維護 DNS 設定。