網路解析正常時,先保留系統 DNS;需要固定解析器時,再改用自訂 DNS;需要加密用戶端與解析器之間的查詢傳輸時,可考慮 DNS over HTTPS。本文以 iPhone / iPad 上的 Shadowrocket 為例,說明設定位置、連接埠、規則依賴與故障排查。Mac、Windows、Android、Linux 也可沿用相同判斷方式,但介面位置請以各平台實際顯示為準。
先分清 DNS 解析與代理連線
DNS 會將網域名稱轉換為 IP 位址,例如查詢 A 記錄取得 IPv4 位址,查詢 AAAA 記錄取得 IPv6 位址。解析成功只代表取得回應,不表示目標連接埠可連線,也不代表代理連線已建立。反過來說,Home 中的伺服器測試有回應,也不能證明所有網站的網域名稱都能正確解析。
這個流程用於理解各步驟的依賴關係,不代表所有請求都必須先在本機完成解析。DOMAIN-SUFFIX 可依網域名稱比對;IP-CIDR、GEOIP 等規則在需要位址資訊時,可能會觸發解析。網域名稱請求交由代理處理時,是否由遠端解析,還取決於協定、設定及實際連線路徑。
三種 DNS 方式的路徑與取捨
「自訂 DNS」是指手動指定解析器,不等同於某一種加密協定。本文將傳統 IP 位址形式的 DNS 與 DNS over HTTPS 分開比較,方便判斷應在哪裡填入位址,以及發生問題時要先檢查哪一段網路路徑。
| 方式 | 解析路徑 | 適用情況 | 優先檢查項目 |
|---|---|---|---|
| 系統 DNS | 沿用系統目前網路提供的解析設定 | 家庭或辦公室網路運作正常,或需要存取內部網域 | 切換 Wi-Fi 後解析器是否改變,以及內部網域是否可用 |
| 自訂 DNS | 指定傳統 DNS 解析器,通常使用 UDP 53,必要時使用 TCP 53 | 已有明確可連線且獲准使用的解析器 | 位址是否正確、53 連接埠是否受限,以及是否影響內部網域 |
| DNS over HTTPS | 透過 HTTPS 向解析端點發出請求,通常使用 443 連接埠 | 需要加密查詢傳輸,且端點與憑證均可正常存取 | 端點 URL、初始網域解析、TLS 與路由是否正常 |
系統 DNS 通常適合需要使用內部網域的網路。辦公室系統、印表機或家用儲存裝置可能依賴路由器提供的解析器;直接換成外部解析器後,公共網站仍可開啟,但內部名稱可能回覆不存在或錯誤位址。這不是代理協定失效,而是解析器沒有相應的內部記錄。
DNS over HTTPS 也不一定比較快。首次連線可能需要解析端點網域名稱、建立 TCP 連線及完成 TLS 交握;後續請求則可能重用連線與快取。應在相同網路、相同目標網域下觀察解析錯誤與存取結果,不要只因連接埠是 443 就認定連線穩定。
結論:先保留目前可用的解析路徑
公共網站與內部網域都能正常使用時,不必為了更換方式而修改 DNS;需要調整時,一次只更換一個解析器,並保留原設定以便還原。
Settings 與 Config:確認生效位置後再修改
在 iPhone / iPad 上,先到 Home 查看 Global Routing;測試規則時選擇 Config,再到 Config 確認目前啟用的設定檔。接著前往 Settings → DNS 檢查全域 DNS 設定,同時確認目前設定檔中的 DNS 項目。設定檔可能包含自己的解析設定,因此不能只看 Settings 裡的單一位址,就判定最終行為。
- 記錄目前基準。記下目前網路、Global Routing、啟用中的 Config、原有 DNS 設定,以及發生問題的網域名稱。先確認在原設定下能否重現問題。
- 備份目前設定。在 Config 中保留原設定檔的副本。檢查設定文字的
[General]區段是否已有dns-server,避免重複新增項目。 - 一次只修改一處。要測試系統 DNS,就還原相應的系統解析設定;要測試自訂方式,則填入自己已有的解析器位址或完整的 DNS over HTTPS 端點。
- 重新建立連線。儲存後確認仍選取正確的設定檔,再關閉並重新開啟 Home 的連線開關。重新請求目標網域名稱,搭配記錄與存取結果判斷設定是否生效。
- 最後再恢復自動連線。測試期間檢查 Settings → On Demand,避免自動連線改變測試狀態;確認結果後,再恢復原本的隨需連線設定。
以下兩張卡片僅用來說明欄位格式。192.0.2.53 是文件範例位址,resolver.example 是範例網域,兩者都不是可用的解析服務,不能直接用來連線。實際設定值應來自你已獲准使用的網路設定;本文不推薦任何解析服務或線路服務。
傳統 DNS 範例格式
- 設定區段
[General]- 設定鍵
dns-server- 位址格式
192.0.2.53,僅供示例- 常用連接埠
- UDP / TCP 53
一般 IP 位址形式的 DNS 不提供傳輸加密;請勿將文件範例位址當成可用服務。
DNS over HTTPS 範例格式
- 設定區段
[General]- 設定鍵
dns-server- 端點格式
https://resolver.example/dns-query- 常用連接埠
- HTTPS 443
需要填寫完整的服務端點;路徑依解析服務實際提供的值而定,並非所有服務都使用相同路徑。
若設定由自己使用的訂閱或遠端檔案維護,更新時可能會覆蓋本機修改。更新前先保留差異,更新後重新檢查目前選取的 Config 與 DNS 項目。伺服器訂閱更新與設定檔更新也不是同一回事:前者更新伺服器項目,不能據此判定 DNS 設定已變更。
DNS 如何搭配 Global Routing 與規則順序
Global Routing 中的 Proxy、Direct、Config、Scene 會決定不同的路由方式。排查規則時使用 Config;Proxy 與 Direct 可用來比對不同路徑,但切換後就不能再以相同現象證明原規則命中了哪一條。使用 Scene 時,也要確認場景中實際生效的設定。
[Rule]
DOMAIN-SUFFIX,example.com,PROXY
IP-CIDR,192.0.2.0/24,DIRECT,no-resolve
GEOIP,CN,DIRECT
FINAL,PROXY
這段規則用來說明語法,不是通用的分流設定。example.com 和 192.0.2.0/24 都是文件範例;在目前設定已正確套用相應策略的前提下,規則會依順序檢查。不要為了套用範例而覆蓋現有的完整規則。
- DOMAIN-SUFFIX:依網域名稱後綴比對,適用於明確知道目標網域的情況;若已符合前面的這條規則,就不必再依賴後面的 GEOIP 來決定策略。
- IP-CIDR:依 IP 位址網段比對。範例中的
no-resolve表示不會為比對這條規則而額外觸發網域解析,不代表整個連線永遠不會使用 DNS。 - GEOIP:依據目標 IP 的地理資料庫分類。解析結果的位址不同,後續分類結果也可能隨之改變;資料庫分類不等於實際網路延遲。
- FINAL:前面的規則都未命中時,選擇最終策略。它無法修復已失敗的 DNS 查詢,也無法修正無法連線的伺服器位址。
此外,若代理伺服器本身使用網域名稱,也需要一條可用的初始解析路徑。如果 DNS over HTTPS 端點設定為走代理,而該代理伺服器的網域名稱又依賴這個尚未連通的端點,就可能形成啟動依賴。請分別確認伺服器網域名稱與解析端點能否在建立連線前完成解析,不能只靠反覆切換協定來解決。
依網路與錯誤階段排查 DNS 故障
測試時先固定伺服器與 Config,只更改 DNS 方式。分別記錄 Wi-Fi 與行動網路下的結果,不要同時更換伺服器、規則及解析器。網頁無法開啟不一定是 DNS 階段出錯:取得位址後,仍可能在目標連線、TLS 或應用程式層發生問題。
| 觀察到的現象 | 優先排查 | 下一步 |
|---|---|---|
| 只有內部網域無法解析 | 自訂解析器是否缺少內部記錄 | 還原系統 DNS,在同一個 Wi-Fi 網路重試內部網域 |
| 傳統 DNS 逾時,但 HTTPS 網站仍可存取 | 所選解析器與 53 連接埠的連線路徑 | 先與系統 DNS 比較,再確認已有的 DNS over HTTPS 端點是否可連線 |
| DNS over HTTPS 出現 TLS 錯誤 | 系統時間、憑證名稱、端點網域名稱 | 確認完整 URL 與裝置時間,並保持憑證驗證開啟 |
| 已取得 A / AAAA 回應,但連線逾時 | 目標位址路由、IPv6 連線能力、伺服器連線 | 檢查實際的輸出策略,不要直接判定為 DNS 故障 |
| 修改設定後,結果暫時沒有變化 | 應用程式快取、系統快取、連線重用 | 重新建立連線並重新啟動目標應用程式,再比對新的查詢結果 |
NXDOMAIN 表示解析器回覆該名稱不存在;逾時則表示等待期限內未取得可用回應,兩者不能混為一談。若只在某個網路發生逾時,先檢查該網路到解析器的連線路徑;若公共網域正常、內部名稱持續回覆 NXDOMAIN,先確認是否選錯解析器。
也不要只用「在瀏覽器直接輸入 IP」作為唯一驗證方式。許多 HTTPS 網站需要透過網域名稱完成憑證驗證與虛擬主機選擇,直接連線 IP 失敗不能證明路由無法連線。請搭配請求記錄中的解析結果、目標位址與連線階段,區分 DNS 錯誤與 TLS 錯誤。
結論:依錯誤階段決定下一步
沒有取得解析結果時,檢查 DNS 路徑;已取得位址時,檢查規則、輸出路徑與目標連線。更換 DNS 後,只有在錯誤階段確實改變時,才繼續比較解析方式。
DNS 設定常見問題與還原方式
改用 DNS over HTTPS 後,為什麼連線反而變慢?
先還原原有 DNS,在相同網路下比較,再檢查端點網域名稱解析、HTTPS 443 是否可連線,以及端點請求是否繞遠路。首次 TLS 交握較慢,與每次查詢都逾時是不同問題;不要一次填入多個端點,掩蓋單一端點無法連線的原因。
在家可以使用,切換到公司 Wi-Fi 後內部系統無法開啟,怎麼辦?
先前往 Settings → DNS 還原系統解析,並檢查 Config 是否仍指定自訂解析器。在同一個 Wi-Fi 網路重試內部網域;若還原後恢復正常,表示需要保留內部解析路徑,而不是繼續更換代理伺服器。
已啟用 DNS over HTTPS,為什麼還會看到 DNS 流量?
先確認流量來自哪個應用程式、發生在哪個階段。端點網域名稱的初始解析、未進入目前通道的請求,以及應用程式本身的解析機制,都可能與所選 DNS 設定不同。啟用單一端點,不能證明裝置的所有查詢都經過該端點。
更新訂閱後 DNS 又變了,該如何還原?
前往 Config 檢查目前選取的檔案,並與備份中的 [General] 及 dns-server 對照。確認更新的是伺服器訂閱還是遠端設定檔;還原已驗證的 DNS 項目後,重新建立連線,並檢查 Settings → On Demand 是否回到預期狀態。
最後保留一份精簡的排障記錄即可:網路類型、Global Routing、目前的 Config、DNS 方式、目標網域名稱、錯誤階段及還原操作。需要提供記錄時,請移除自己使用的訂閱中的令牌、驗證資訊及內部網域名稱。本網站不提供、不銷售,也不推薦節點或訂閱;本文僅說明如何檢查自己已有的設定。
- 公共網站與內部網域都正常:保留目前設定,不必一律改用某一種 DNS。
- 需要固定解析器:先確認位址可連線、使用權限及內部網域需求,再進行修改。
- 需要加密查詢傳輸:確認完整的 DNS over HTTPS 端點、TLS 與初始解析路徑。
- 修改後發生問題:還原備份、重新連線,再逐項測試,不要疊加更多設定。
取得 Shadowrocket 與基本設定教學
iPhone / iPad 版在 App Store 售價 $2.99,為一次性付費;系統需求請以 App Store 頁面標示為準。Mac(Apple 晶片 / Intel)、Windows、Android、Linux 版免費。請在下載頁選擇對應平台;iPhone / iPad 產品頁可確認開發者 Shadow Launch Technology Limited 與 App ID 932747118。
應用程式買斷與線路方案是兩回事。Shadowrocket 是閉源商業應用,設定連線時使用者需使用自己已有的伺服器或訂閱;DNS 設定不會自動提供線路。