小火箭延遲正常卻無法開啟網頁:Shadowrocket DNS 設定與解析失敗排解

延遲測試正常,網頁卻無法開啟,問題多半出在 DNS 解析。本文說明 Shadowrocket 的 DNS 設定、解析失敗的常見狀況,以及逐步排查方法。

本文重點

本文適用於已在 Shadowrocket(小火箭)設定自己的服務,延遲測試有結果但瀏覽器仍無法連線的情況。請依序檢查基本網路、Global Routing、DNS、規則與快取,分辨是「查不到位址」還是「查到位址卻連不上」,避免一次變更多項設定,導致無法判斷原因。

延遲正常,不代表網頁連線正常

延遲測試只表示測試對象在特定測試方式下有回應。測試是否包含網域解析、代理驗證或目標網頁存取,取決於測試方式;測試成功一次,不代表所有網站都能開啟。瀏覽器載入 HTTPS 網頁還需要完成網域解析、連線至目標、TLS 交握及伺服器回應,其中任何一步失敗,都可能導致網頁無法載入。

網域請求 DNS 查詢 規則判斷 連線至目標 TLS 交握 網頁回應

上述流程可用來定位故障,但不代表內部實際處理只有一種順序:網域規則可能在取得目標 IP 前就比對,IP 規則則可能需要先取得解析結果。另外也要區分兩次解析:若代理伺服器位址填寫的是網域,必須先解析該伺服器;目標網站網域在哪個位置解析,則視協定、出站方式與設定而定。

先建立可重複的測試基準

測試前記下無法開啟的網址、使用的網路、Home 中選取的伺服器,以及 Global Routing 狀態。選兩個平時可正常瀏覽的網站和一個無法開啟的網站做比較,每次只變更一項設定,再瀏覽相同的網頁。以下步驟均以已備妥自己的伺服器或訂閱為前提;購買用戶端不包含連線服務。

  1. 記錄目前設定

    在 Config 確認目前使用的設定檔,並先保留備份。記下 Home → Global Routing 的目前選項、選取的伺服器及原有 DNS 值,避免將排查時的變更誤當成長期設定。

  2. 確認基本網路

    暫時中斷連線,開啟平時可直接瀏覽的網站。若仍無法開啟,請先完成 Wi-Fi 驗證或切換至可用網路。檢查 Settings → On Demand;排查期間暫時停用可能自動重新連線的條件,完成後再恢復。

  3. 固定出站方式

    回到 Home,選取自己的可用伺服器並啟用連線。在 Home → Global Routing 暫時選擇 Proxy,再試著開啟相同網址。Proxy 可用來排除規則影響,但不代表所有 DNS 請求都會透過該伺服器。

  4. 檢查 DNS 解析

    開啟 Settings → DNS,記下目前設定,並與 Config 中已啟用設定檔的 DNS 項目核對。先恢復為來源明確的一組設定,不要同時加入多個未經驗證的解析器。

  5. 還原設定並重新測試

    還原原本的 Global Routing 設定,再次瀏覽相同網頁。若 Proxy 正常但 Config 失敗,請檢查規則;若兩者都失敗,繼續確認是 DNS 查詢、目標連線還是 TLS 發生問題。

檢查 DNS 解析器、傳輸方式與適用範圍

DNS 會將網域轉換為位址。A 記錄提供 IPv4 位址,AAAA 記錄提供 IPv6 位址;取得記錄只代表查詢成功,不保證這些位址能透過目前的網路與出站路徑連線。設定 DNS 時,應分別確認三件事:向哪個解析器查詢、使用何種傳輸方式,以及設定適用於哪些請求。

檢查項目 實際意義 排查方式
Settings → DNS 檢查應用程式層級的 DNS 設定及現有覆寫選項,不能只看填入的位址就判定設定已生效。 記下原值,再與已啟用的設定檔核對;每次只變更一個設定來源。
dns-server 設定檔中的 DNS 伺服器項目;system 表示使用系統提供的解析器。 查看目前啟用設定檔中的 [General],不要編輯未啟用的副本後就直接下結論。
傳統 DNS 通常使用 UDP 53,也可能使用 TCP 53;若連接埠或傳輸方式受到限制,可能會逾時。 比較 Wi-Fi 與行動網路,不要直接將查詢逾時歸因於網站故障。
DoH / DoT DoH 通常使用 HTTPS 443,DoT 通常使用 TCP 853;加密不代表一定能連線。 確認解析服務支援的協定、位址與憑證條件,避免只修改連接埠或隨意拼接路徑。
A / AAAA 兩種記錄可能都存在,但其中一種網路路徑可能無法使用。 將解析結果與實際連線失敗的位址類型對照,再檢查 IPv6 路徑。

若需要在設定文字中檢查系統 DNS 基準,相關語法如下。這只是設定片段,並非完整設定,也不代表要覆寫現有檔案;請在備份副本中修改既有的對應項目,避免重複建立多個 [General] 區段。

[General]
dns-server = system

使用系統 DNS 有助於判斷問題是否來自原先自訂的解析器,但不保證所有網路都會回傳相同結果。若原設定為特定網域指定了個別解析方式,也要檢查相應設定。不要把增加解析器數量當成通用解法:不同來源的記錄可能不同,混用反而更難重現問題。

結論:切換網路以定位傳輸問題

保持伺服器、設定檔與測試網域不變,只切換 Wi-Fi 和行動網路;若故障隨網路改變,再檢查該網路下的 DNS 連線狀況及位址類型路徑,不要同時更換協定與整套規則。

依故障階段分類錯誤

以下列出 Apple 網路請求中可能出現的實際錯誤識別碼,但不保證瀏覽器或 Shadowrocket 會逐字顯示這些字串。請記錄實際看到的錯誤文字、時間與請求網域,再依故障階段分類;「逾時」本身不足以證明是 DNS 問題。

錯誤:NSURLErrorCannotFindHost (-1003)

原因與解法:請求找不到主機,常見原因是網域拼字錯誤,或 DNS 查詢沒有取得可用結果。先核對完整網域,再檢查 DNS 查詢是否有回應;若只有一個網域發生問題,也要確認該網域是否仍有效。

錯誤:NSURLErrorTimedOut (-1001)

原因與解法:請求未能在指定時間內完成,可能發生在解析、連線或等待回應階段。先確認是否已取得目標 IP,再檢查後續連線,不要把所有逾時都當成解析失敗。

錯誤:NSURLErrorCannotConnectToHost (-1004)

原因與解法:無法連線至主機,不等於找不到主機。若已取得位址,請檢查出站方式、目標連接埠及 IPv4/IPv6 路徑,不要一再更換 DNS。

錯誤:NSURLErrorSecureConnectionFailed (-1200)

原因與解法:無法建立 TLS 安全連線。先確認裝置的日期與時間,再檢查目標憑證及相關 TLS 設定;不要關閉憑證驗證來掩蓋問題。

DNS 查詢結果也要分別判讀:NXDOMAIN 表示解析器回報該名稱不存在;SERVFAIL 表示伺服器無法完成查詢;查詢逾時則表示等待期間沒有收到回應。這三者並非同一種故障。對已確認有效的同一網域,使用固定的解析設定重複測試,比只看瀏覽器顯示「無法開啟網頁」更有助於判斷問題。

排除 Global Routing 與規則的影響

DNS 解析成功後,仍可能因出站方式不合適而無法開啟網頁。在 Global Routing 中,Proxy 用於代理出站,Direct 用於直接連線,Config 依已啟用的設定檔處理,Scene 則依所選場景處理。排查時別只確認已選取伺服器,也要確認目前模式確實會使用它。

若 Proxy 能開啟相同網頁,但 Config 不行,請檢查是否有網域或 IP 規則提前命中。規則會依順序比對;DOMAIN-SUFFIX 檢查網域後綴,GEOIP 與 IP-CIDR 涉及 IP 條件,FINAL 則作為最終規則。以下僅供參考語法,不應整段取代現有設定。

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

不要只靠「在瀏覽器直接開啟目標 IP」來驗證 HTTPS。HTTPS 也仰賴網域對應的憑證、SNI 與網站路由,直接輸入 IP 可能會造成其他錯誤。更可靠的判斷依據是:相同網域是否取得位址、命中哪項動作,以及接下來在哪個連線階段失敗。

快取、IPv6 與常見的重新測試問題

變更 DNS 後,應用程式、系統或解析服務可能仍保留快取。儲存設定並確認生效後,可先中斷連線再重新連線,接著重新送出瀏覽器請求;但這不保證能清除所有層級的快取。不要只依一次重新整理就認定問題已解決,請重複測試相同網頁,並記錄網路是否有變更。

換了 DNS,網頁為什麼還是無法開啟?

先確認修改的是 Config 中目前啟用的檔案,或 Settings → DNS 中實際使用的設定,再確認查詢是否已回傳位址。若已取得位址但連線失敗,應改查規則、目標連接埠與 TLS,不要繼續加入解析器。

只有 Wi-Fi 無法使用,需要重新填寫訂閱嗎?

先不要變更訂閱或選取的伺服器,改用行動網路重新測試。若行動網路正常,請回到 Wi-Fi 檢查驗證頁面、系統 DNS,以及目前的解析傳輸方式是否可連線;沒有證據顯示訂閱已失效時,不要先刪除訂閱。

關閉 IPv6 後恢復正常,可以一直關閉嗎?

這表示需要檢查 IPv6 路徑,但還不能確定根本原因。記下故障時是否使用 AAAA 位址,再比較同一網路上的 IPv4 連線。暫時關閉相關選項可作為對照;長期設定應依網路環境及自己的服務支援情況決定。

重新連線後變成另一個設定檔,該怎麼辦?

檢查 Config 目前啟用的項目、Home → Global Routing 是否選了 Scene,以及 Settings → On Demand 是否會在切換網路後觸發連線。固定設定檔與網路條件後再測試,避免將自動切換造成的差異誤判為 DNS 隨機故障。

向自己的服務提供者回報時,請保留故障時間、網路類型、Global Routing 選項、無法連線的網域、實際錯誤文字,以及是否取得 A/AAAA 結果。請隱藏訂閱權杖、驗證資訊與私鑰,不要公開整份設定檔。說明「解析成功但連線失敗」或「只有特定網路下 DNS 逾時」,比只附上一張延遲截圖更有助於定位問題。

App Store 正版核對