Shadowrocket DNS 解析失敗排查:延遲測試正常但網頁無法開啟怎麼辦

從 DNS 設定項目說明開始,逐步排查解析失敗、延遲正常卻無法開啟網頁的常見原因與處理方式。

本文摘要

延遲測試有結果,不代表目標網域已解析,也不代表網頁連線成功。本文適用於已安裝 Shadowrocket,且已有自己的服務商與訂閱的使用者。請分別檢查 DNS、規則與對外連線,再使用相同網址和網路逐項重測;每次只變更一項設定,並保留可供還原的設定副本。

一、先區分延遲、DNS 與網頁連線

Shadowrocket(小火箭)的延遲數值只表示本次測試所涵蓋的目標與方式有回應。伺服器位址可連線、網域解析成功、代理驗證通過、目標網站傳回內容,是不同的環節。不能只憑一個延遲數字,就判定整條連線路徑正常。

網域解析 規則判斷 對外連線 TLS 交握 網頁回應

這個流程用來區分排查層級,不表示所有請求都固定先在本機解析。網域規則可直接比對網域;部分代理路徑會將目標網域交由遠端處理。涉及 IP 的規則、伺服器本身使用的網域,以及直連請求,仍可能需要相應的解析結果。

在 Home 確認連線開關已開啟,並查看 Global Routing 目前的設定。接著開啟平時可正常瀏覽的 HTTPS 網頁,再開啟發生問題的網頁。記下完整網域、網路類型、測試時間與錯誤訊息。若只有單一網域無法連線,應優先檢查該網域及相關規則,不要立即更換所有 DNS 設定。

  • 網頁顯示找不到伺服器:先檢查網域拼字、DNS 回應及 Host 覆寫設定。
  • 網頁持續載入後逾時:可能是解析逾時,也可能是連線或對外路徑逾時,需搭配記錄判斷。
  • 網頁顯示憑證問題:表示請求已進入 TLS 檢查階段;還需確認裝置時間、憑證與目標位址,不能只歸因於 DNS。
  • 網頁回傳 HTTP 403 或 503:表示已有 HTTP 回應,應優先檢查存取限制或網站狀態,而不是持續更換 DNS。

二、DNS 設定項目與連接埠的意義

DNS 會將網域轉換為網路連線所需的位址。A 記錄對應 IPv4,AAAA 記錄對應 IPv6。收到 AAAA 記錄不代表目前網路具備可用的 IPv6 對外連線路徑;反之,網域只有 A 記錄,也不表示解析異常。

53
傳統 DNS:通常使用 UDP,也可使用 TCP
443
DoH:透過 HTTPS 查詢時常用的連接埠
853
DoT:透過 TLS 查詢時的預設連接埠

連接埠說明的是傳輸方式,不保證一定可連線。目前使用的網路可能無法存取特定解析器;含網域名稱的加密 DNS 位址,也涉及解析器本身的網域如何解析。不要將一般 DNS 的 IP 位址直接填成任意 HTTPS 位址,也不要把 DNS 查詢連接埠填入代理伺服器的連接埠欄位。

檢查項目用途排查方式
dns-server設定檔中的 DNS 伺服器設定。在 Config 中開啟目前使用的設定檔,檢查 General 是否有此項目;並一併確認 Settings → DNS 中的設定。
system使用系統提供的解析器。搭配目前的 Wi-Fi 或行動網路重測;切換網路後,解析條件也會改變。
Host可為指定網域設定固定位址對應。檢查發生問題的網域是否對應到舊位址,避免將固定對應誤認為即時 DNS 結果。
A / AAAA分別傳回 IPv4 / IPv6 位址。將「取得解析結果」與「可連線至該位址」分開驗證。

Settings 的全域選項與 Config 中的設定項目可能同時影響行為。排查時應以目前啟用的設定檔和實際記錄為準,不要只根據某個頁面曾儲存的值判斷設定是否生效。若介面分組有所調整,請依 DNS、Config、General 等英文名稱尋找。

三、依固定順序重測,避免同時變更多個變數

先儲存目前設定檔的副本,並記下原本的 Global Routing、DNS 與伺服器選擇。以下每個步驟都使用相同的故障網址。若網頁恢復正常,再重複瀏覽一次並查看記錄,之後再決定是否保留變更。

  1. 檢查基本網路。暫時關閉 Shadowrocket 連線,瀏覽平時可正常開啟的網頁。若 Wi-Fi 需要登入,請先完成網路登入,再重新啟用連線;基本網路本身無法使用時,修改設定無法解決上游網路中斷問題。
  2. 確認目前使用的伺服器。返回 Home,確認所選伺服器屬於自己的有效訂閱。若延遲正常,但驗證、傳輸或遠端對外連線失敗,請向自己的服務商確認連線參數與服務狀態。
  3. 確認路由模式。在 Home → Global Routing 記下目前使用的是 Config、Proxy、Direct 還是 Scene。若使用 Scene,先確認該場景實際採用的設定,避免將切換場景誤認為 DNS 變更。
  4. 檢查實際生效的 DNS。查看 Settings → DNS,並開啟目前使用的 Config,確認 General 中的 DNS 設定與 Host 對應。每次只調整一處,修改後重新連線再測試。
  5. 比對不同網路。在允許使用行動數據的情況下,從 Wi-Fi 切換至行動網路,保持設定與網址不變。若只有其中一種網路無法連線,優先檢查該網路的解析器可達性、網路登入狀態與對外連線限制。
  6. 檢查自動連線。若關閉連線後又自動啟用,請檢查 Settings → On Demand。排查期間記錄並暫時調整相關條件,完成後還原原本的隨選連線設定。

四、使用 Global Routing 比對規則與 DNS 問題

Config 會依目前設定檔中的規則分流;Proxy 與 Direct 可用來比對整體路由模式;Scene 則依已設定的場景運作。暫時切換模式不是最終修復方式,只是用來縮小問題範圍;完成測試後應還原日常設定。

比對結果可能的判斷下一步
Config 失敗,Proxy 成功值得檢查規則指定的路徑或相關 DNS 行為,但不能直接判定是解析器故障。檢查故障網域符合的規則與策略,確認流量是否走 Direct 或其他指定路徑。
Direct 成功,Proxy 失敗代理路徑可能有驗證、連線或遠端解析問題。確認目前使用的伺服器參數,並查看失敗發生在解析階段還是連線階段。
三種模式都失敗共同因素可能是基本網路、網域本身,或各模式共用的解析設定。切換網路進行比對,同時檢查網域與 Host 對應。
只有特定網域無法連線問題範圍較小,不能據此認定所有 DNS 請求都失敗。檢查該網域的規則、解析回應與網站狀態。

DOMAIN-SUFFIX 依網域後綴比對;IP-CIDR 依位址網段比對;GEOIP 依 IP 地理分類比對;FINAL 是預設兜底規則。規則會依排列順序判斷,符合後套用對應策略。以下僅展示語法,並非可直接取代日常設定的規則方案。

[Rule]
DOMAIN-SUFFIX,example.com,DIRECT
IP-CIDR,192.0.2.0/24,DIRECT,no-resolve
GEOIP,CN,DIRECT
FINAL,PROXY

example.com 與 192.0.2.0/24 僅用於說明語法。範例中的 no-resolve 表示不為了比對該 IP 規則而主動觸發網域解析,不代表後續連線永遠不需要解析。刪除 IP 規則或改用全域 Proxy,可能會改變連線路徑,但不會自動修復錯誤的網域記錄。

結論:先找出符合的路徑,再決定是否調整 DNS

若相同網域在 Proxy 下可正常連線、在 Config 下失敗,請先檢查 Config 中的規則與策略。只有確認出現解析逾時、沒有有效位址或對應錯誤後,再調整相關 DNS 設定,避免用路由變更掩蓋原本的問題。

五、依錯誤原文區分解析失敗與連線失敗

瀏覽器提示、應用程式記錄與系統錯誤可能使用不同文字。以下列出可能出現在瀏覽器或 Apple 網路錯誤記錄中的原文與代碼,並非 Shadowrocket 固定的輸出格式。請記下錯誤出現的位置,並查看同一時間附近是否已有解析位址。

錯誤:ERR_NAME_NOT_RESOLVED

原因:瀏覽器未取得目標網域的有效解析結果。

解決方式:先確認網域拼字,再檢查目前的 DNS 與 Host 對應;保持路由設定不變,切換網路後重測相同網域。

錯誤:NSURLErrorDomain Code=-1003

原因:Apple URL 載入錯誤中的 cannot find host,表示找不到指定的主機。

解決方式:確認失敗的是目標網站網域還是伺服器網域,並檢查相應的解析設定;若多次明確出現 NXDOMAIN,請確認網域是否有效,而不是單純延長等待時間。

錯誤:NSURLErrorDomain Code=-1001

原因:請求逾時,單靠此代碼無法判定逾時發生於 DNS 階段。

解決方式:查看逾時前是否已有位址與連線記錄;若已有位址,優先檢查對外連線是否可達;若沒有解析結果,再檢查解析器路徑。

NXDOMAIN 表示解析器回覆「此名稱不存在」;沒有回應則是另一種情況,可能與封包遺失、解析器無法連線或等待逾時有關。不要將兩者一概稱為「DNS 被封鎖」。若已有位址但連線失敗,還應檢查 IPv6 路徑、代理參數與目標連接埠。HTTPS 常用連接埠為 443,但伺服器本身的連接埠應以使用者現有服務的參數為準。

六、常見問題與修復後的驗證

延遲一直正常,為什麼網頁還是打不開?

延遲測試與網頁請求涵蓋的環節不同。在 Home 記下所選伺服器與 Global Routing,再用瀏覽器連線至實際發生問題的網域。分別檢查解析結果、符合的策略與連線錯誤,不要只反覆測試延遲。

更換 DNS 後仍然失敗,還要繼續換嗎?

先確認變更的是目前生效的設定。檢查 Config → 目前使用的設定檔 → General,並確認 Settings → DNS;重新連線後再測試。若記錄已顯示位址,但在連線階段失敗,就不要再盲目更換解析器,應改查對外連線路徑。

只有 Wi-Fi 連線失敗,行動網路正常,該怎麼辦?

保持相同設定與伺服器,確認 Wi-Fi 是否已完成網路登入,以及目前使用的解析器能否在該網路連線。若使用 system,系統 DNS 會隨網路改變,因此兩種網路的解析條件並不相同。

更新訂閱可以修復 DNS 嗎?

更新訂閱通常是用來更新伺服器項目,不能因此認定本機 DNS 設定已修復。只有在自己的服務商確認伺服器位址或連線參數已變更時,才依照其說明更新現有訂閱,並重新確認目前選取的項目。

網頁恢復正常後,請切回原本的 Global Routing 模式,還原所需的 On Demand 條件,再測試故障網頁與常用網頁。比對修改前後的記錄,確認恢復正常不是因為暫時切換網路或規則。若要重新發出瀏覽器請求,可關閉故障分頁後重新開啟;這不代表已清除所有系統 DNS 快取。

  • 記錄最後保留的變更:設定項目、舊值、新值與驗證網址。
  • 確認目前的 Config 是預期設定,且 Host 中沒有測試後遺留的固定對應。
  • 確認日常規則仍依預期分流,而非長期停留在暫時比對模式。
  • 仍未解決時,請攜帶已去識別化的記錄與網路比對結果向自己的服務商確認;更多排查步驟請參閱疑難排解。
App Store 正版查驗 →