延遲有數值,不代表網頁連線路徑完整。若你已有自己的服務商與訂閱,也能連線至 Shadowrocket,卻無法開啟網頁,請先記下失敗的網域名稱與目前使用的網路,再依序檢查解析結果、DNS 請求路徑及 Global Routing。本文提供一次只變更一個變數的比對步驟,協助判斷問題是網域不存在、解析逾時、規則分流錯誤,還是網站連線故障。
延遲正常,只能代表測試目標有回應
Shadowrocket 的延遲測試與瀏覽器開啟網頁並非同一項操作。兩者的測試方式與檢查範圍不同:連接埠有回應,不代表代理認證、目標網域解析、TLS 交握及網頁資源載入都成功。即使測試包含 HTTP 請求,也只能證明測試目標當時可連線,不能取代對實際故障網站的檢查。
這個流程列出一次連線所需的主要環節,不代表所有協定都嚴格依照此順序執行。若代理伺服器地址使用網域名稱,也需要先解析;目標網站的網域名稱則可能交由遠端解析。因此,請先分辨出問題的是「伺服器地址」還是「網頁地址」,再決定要檢查哪個設定。
- 所有網站都無法開啟:先確認連線是否建立、代理伺服器地址能否解析,以及目前的網路是否需要登入網頁進行認證。
- 只有一個網域無法開啟:記下完整主機名稱,檢查拼字、DNS 回應狀態,以及該網域命中的規則。
- 網頁文字正常顯示,但圖片沒有載入:檢查圖片等資源使用的其他網域,不要只檢查網址列中的網域。
先記錄當下狀況,再進行最小幅度比對
排查時保留原有設定,不要同時更換伺服器、DNS 和規則。以下以 iPhone 為例,iPad 的操作邏輯相同。測試請使用你已有的伺服器與訂閱;訂閱更新成功只表示訂閱網址可讀取,不代表其中每台伺服器或所有目標網站都能連線。
- 在 Home 記下目前選取的伺服器、連線開關狀態,以及 Global Routing 的選項;在 Config 記下目前啟用的設定檔。
- 記下無法開啟的網址主機名稱、發生時間、使用 Wi-Fi 或行動網路,以及瀏覽器顯示的實際提示。分享記錄前,請遮蔽訂閱網址、密碼和權杖。
- 關閉連線,測試一個在目前本地網路通常可直接開啟的網站。若仍無法開啟,請先檢查本地網路或網頁登入認證。
- 重新連線,使用相同伺服器和網站再次測試。每次變更後先關閉舊的網頁分頁,再開新分頁測試,以減少舊連線造成的影響。
- 必要時,可切換 Wi-Fi 與行動網路進行比對,但不要同時變更 DNS。切換網路後的差異有助於判斷問題是否與本地路由器或電信網路有關。
各項 DNS 設定的作用
前往 Settings → DNS 檢查 App 提供的 DNS 設定,再到 Config 查看目前設定檔中的 [General]。不同設定檔可能同時包含 DNS 伺服器、解析策略及依網域指定的結果。排查時請確認目前實際啟用的設定檔,不能只因某個欄位已有地址,就認定所有請求都會經由該地址處理。
| 項目 | 作用 | 檢查重點 |
|---|---|---|
| System DNS | 使用目前系統或網路提供的解析服務。 | 切換 Wi-Fi 後,解析環境可能跟著改變;這並非固定的公共 DNS 地址。 |
dns-server | 設定檔中的 DNS 伺服器設定。 | 確認地址拼字、格式及請求是否能送達,不要只確認欄位是否已填入地址。 |
| DNS over HTTPS | 透過 HTTPS 傳送 DNS 查詢,通常使用 TCP 443。 | 不僅要能連線至服務端點,也必須通過憑證驗證;若端點使用網域名稱,也涉及初始解析。 |
| 一般 DNS | 通常使用 UDP 53,部分情況會使用 TCP 53。 | 檢查目前網路是否限制相關流量,以及回應是否逾時;網站使用的 443 連接埠是另一條連線。 |
[Host] | 為指定主機名稱設定靜態對應。 | 舊地址可能會略過正常解析,造成網域查得到、網站卻無法連線。 |
例如,設定檔中的以下一行表示使用系統 DNS。這只是語法示意,並非建議用來覆蓋現有設定的完整檔案。修改前請先保存原值;若設定來自你使用的服務商,請先確認其 DNS 約定,再進行局部測試。
[General]
dns-server = system
結論:一次只更換一個解析變數
保持伺服器、Global Routing 和目標網域不變,只比對原有 DNS 設定與系統 DNS;若故障會隨設定變更而穩定重現,再進一步檢查解析服務及請求路徑。
依回應狀態區分三種解析故障
瀏覽器顯示「找不到伺服器」通常不足以判斷原因。查看可用的連線記錄或診斷輸出時,請留意是否包含 DNS 回應狀態、查詢網域及逾時資訊。以下是通用 DNS 狀態或診斷用語,不代表 Shadowrocket 的每個介面都會逐字顯示這些文字。
錯誤:NXDOMAIN
原因與處理方式:解析器回覆查詢的網域不存在。先確認完整主機名稱和拼字,再改用另一條解析路徑比對,判斷是網域確實不存在,還是特定解析器回傳異常結果。
錯誤:SERVFAIL
原因與處理方式:解析器無法完成查詢,可能與上游服務故障或驗證失敗有關。記下網域名稱與時間,改用其他可連線的解析路徑重新測試;若問題持續,將記錄提供給你使用的服務商。
錯誤:timeout
原因與處理方式:查詢在等待期間未收到回應。檢查 DNS 服務地址及傳輸路徑,維持相同設定並切換 Wi-Fi 或行動網路測試,確認是否只有特定網路會逾時。
也要區分「沒有 AAAA 記錄」和「網域不存在」。AAAA 對應 IPv6 地址,A 對應 IPv4 地址;網域只有 A 記錄不一定代表故障。若已取得地址,後續連線仍卡住,應繼續檢查位址類型的可達性、路由和 TLS,而不是一再更換 DNS。
- 記下查詢類型是 A、AAAA 或其他類型,避免直接比較不同類型的查詢結果。
- 若回傳私有地址或與預期不符的地址,先確認本地網路用途及靜態對應,不要只憑地址外觀下結論。
- 不要只用「將 HTTPS 網址換成 IP 地址」作為驗證方式:憑證、SNI 和虛擬主機可能需要原始網域名稱。
透過 Global Routing 區分 DNS 與規則問題
在 Home → Global Routing 中,Config 依目前設定檔處理流量;Proxy 會讓適用的流量經由代理連線;Direct 則讓適用的流量直接連線。切換模式有助於定位問題,但它不只是 DNS 開關:目標連線路徑、遠端解析的可能性等因素也可能隨之改變。
- 先在 Config 模式下重現故障,記下網域及命中的規則或策略。
- 維持相同伺服器,短暫切換至 Proxy,再次開啟相同網域。若問題排除,請優先檢查 Config 中的分流規則與所選策略,但不能因此斷定 DNS 一定正常。
- 對於目前本地網路通常可直接連線的目標,可短暫切換至 Direct 進行比對。若目標本來就無法透過本地網路連線,Direct 失敗不能證明 DNS 設定有誤。
- 比對完成後,恢復原本的模式;若使用 Scene,請先確認目前場景實際選用了哪種連線方式,以免場景變更影響比對結果。
以下是規則語法示意,example.com 是範例網域,並非診斷服務。DOMAIN-SUFFIX 比對網域後綴,IP-CIDR 比對地址網段,GEOIP 依 IP 地理位置比對,FINAL 處理前面規則都未命中的請求。規則會依序檢查;地址類規則也可能涉及解析結果,不要只看最後一行。
[Rule]
DOMAIN-SUFFIX,example.com,DIRECT
IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
GEOIP,CN,DIRECT
FINAL,PROXY
no-resolve 用於避免為了比對相關地址規則而額外觸發網域解析,並非「修復所有 DNS」的選項。若網域被前面的規則導向無法使用的路徑,單純更換 DNS 可能不會改變結果。請先確認命中的規則,再調整該規則的策略或順序。
常見問題:快取、訂閱與連線恢復
更換 DNS 後,為什麼還是無法開啟網頁?
先確認變更的是目前生效的設定檔,再重新建立連線並開啟新的網頁分頁。App 和系統可能保留快取或舊連線;若已取得地址但仍無法連線,請改查規則、對外連線和 TLS,不要繼續添加 DNS 地址。
訂閱可以更新,是否代表 DNS 沒問題?
不代表。訂閱網址、代理伺服器和目標網站可能使用不同的網域與連線路徑。在 Home 分別確認訂閱更新結果和伺服器狀態,再針對無法開啟的主機名稱單獨檢查。請先保留現有設定,避免更新時同時引入新的測試變數。
只有 Wi-Fi 連線失敗,需要更換伺服器嗎?
先維持相同伺服器與 DNS,切換至行動網路重新測試。若只有該 Wi-Fi 連線失敗,請檢查網頁登入認證、路由器提供的 DNS 和網路限制;確認原因前,不必同時調整協定與伺服器。
出現憑證錯誤,也算是 DNS 故障嗎?
不一定。憑證錯誤通常表示已進入 TLS 檢查階段,應確認裝置日期和時間、目標網域與憑證是否相符。解析到錯誤地址也可能導致憑證錯誤,但不要藉由忽略憑證驗證來掩蓋問題。
恢復後依相同條件重新測試
只成功開啟一次網頁,只能代表當下測試成功。問題排除後,請在最初發生故障的網路、原目標網域及日常使用模式下再次測試,並確認頁面附屬資源是否完整載入。排查記錄應著重於「變更哪個變數後問題排除」,而不是累計調整了多少設定。
- 恢復連線設定:還原暫時切換的 Global Routing,並依原本需求恢復 Settings → On Demand。
- 確認設定檔:確認 Config 中啟用的檔案正確,並刪除僅為測試新增且已不需要的靜態對應或臨時規則。
- 保留記錄:記下網路類型、故障網域、DNS 回應狀態、變更項目及重新測試結果;提供給你使用的服務商前,請遮蔽憑證資料。
- 確認下一個故障環節:若已取得正確地址且 DNS 回應正常,但仍無法建立連線,請繼續檢查伺服器是否可用、目標連接埠及 TLS,不要再將所有故障歸因於解析。
結論:依故障環節決定下一步
沒有回應就檢查 DNS 請求路徑;明確回覆網域不存在,就核對網域名稱;已取得地址,就檢查連線與規則。每一步都保留比對結果,才能避免反覆覆蓋設定。