本文適合已完成 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 查詢,且端點必須可連線 |
結論:先建立基準,再決定是否改用 DoH
先用系統 DNS 確認目標網域能否解析,再單獨切換一種解析方式重測。如果一般 DNS 可用,但 DoH 逾時,應先檢查 DoH 端點是否能透過 HTTPS 連線,不要同時變更規則和連線設定。
DoH 加密的是裝置與所選解析器之間的查詢傳輸,解析器仍須處理查詢內容。它不保證回傳的位址速度更快,也不保證能解析內部網域。解析器回傳的位址、目標服務的地區調度和網路路徑,都可能影響實際連線體驗。
三、在 Config 設定 DNS:先備份,再逐項修改
操作前,請確認已選用自己的服務供應商與訂閱,並完成基本連線測試。Subscribe 匯入或更新的是既有連線資訊,不代表 DNS 設定也已完成。本文只調整目前 Config 的解析設定,不涉及服務來源的選擇。
- 進入 Config,確認目前實際使用的設定檔,並先儲存一份副本。不要只修改未啟用的檔案。
- 開啟該設定檔的編輯功能,找到
[General]區段中的dns-server項目。編輯入口的文字或圖示可能因介面變動,請以目前畫面顯示為準。 - 如果已經有
dns-server,請修改原有項目,不要在檔案末尾重複新增多個同名設定。 - 儲存並確認仍選用該設定檔,返回 Home,在可中斷連線時重新連線,再測試相同網域。
- 保留修改前後的解析結果與錯誤訊息。若問題沒有改善,先還原副本,再進行下一項測試。
以下三段是互斥的最小範例,每次只選一段替換目前設定中的對應項目。這些範例不是完整設定檔,不應覆蓋原有規則與連線資訊。範例中的公共解析器僅用來說明語法,是否採用應視其連線狀況與服務政策而定。
方案 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 與服務存取狀況。測試結果正常但網頁無法開啟時,應區分「沒有取得位址」和「取得位址後連線失敗」。以下步驟不依賴虛構的速度數據,每一步都要記錄可重現的現象。
- 固定網路與測試對象。記錄目前使用 Wi-Fi 或行動網路、目標網域、Config 和 Global Routing。優先選擇實際無法連線的網域,再以已知正常的網域作為對照。
- 確認設定已生效。儲存後重新連線,確認目前仍使用剛才修改的檔案。如果遠端更新可能覆蓋設定,請在副本中測試,並於更新後再次確認。
- 判斷錯誤發生階段。沒有取得位址、查詢逾時、回傳不存在,與取得位址後連線逾時,是不同問題。請參考可用的連線紀錄或目標 App 的錯誤訊息判斷,不要只憑「網頁無法開啟」就認定是 DNS 故障。
- 恢復系統 DNS 作為對照。如果恢復後立刻恢復正常,但指定解析器持續失敗,請優先確認該解析器在目前網路是否可連線,以及是否需要存取內部網域。
- 單獨測試 DoH 條件。檢查端點拼字、HTTPS 路徑、裝置時間與憑證錯誤。一般 HTTPS 網站可以開啟,只能證明部分 HTTPS 連線可用,不能保證特定 DoH 端點也能連線。
- 檢查 A 與 AAAA 記錄。若已取得位址但仍無法連線,請確認是否只有某一種位址類型異常。IPv6 路徑問題不能簡單歸咎於解析器錯誤,也不應先大量刪除 IPv6 相關設定。
- 最後再處理快取與自動連線。重新建立連線並重新開啟目標 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 設定值、目標網域及故障階段。分享紀錄前,請刪除訂閱網址、驗證資訊和私人網域。一次只改一個選項,逐項測試並保留可還原的正常基準,更容易判斷問題所在。