Shadowrocket(小火箭)的延遲數值只反映特定測試路徑,無法證明網頁網域已成功解析。若已有自己的服務商與訂閱,連線後仍無法開啟網頁,可依序檢查本地網路、目前 Config 的 DNS、Global Routing 與請求記錄;每次只修改一項,並根據解析結果與連線階段判斷問題所在。
一、延遲正常不代表網頁請求成功
先分清兩件事:連上所選伺服器,以及瀏覽目標網站。延遲測試可能只測試伺服器連線或指定的測試位址;Safari 開啟網頁則還需要解析目標網域、選擇出站策略、建立連線並完成 TLS 交握。前一個步驟有回應,後續任何一步仍可能失敗。因此,延遲有數值時,應優先檢查 DNS,而不是直接認定伺服器或整個網路正常。
這個流程用於區分排查階段,並非所有連線都固定依照此內部順序執行:網域規則可能先參與比對,部分 IP 規則則需要先取得位址。實際檢查時,應分別記錄「是否取得 IP 位址」、「最後採用哪項策略」以及「在哪個步驟發生連線失敗」。若網站出現憑證錯誤或 HTTP 狀態碼,通常表示問題不只是 DNS 沒有回應。
連接埠說明的是服務常用的連線方式,不代表需要在路由器開放入站連接埠。取得 A 或 AAAA 記錄只表示解析已回傳位址;若回傳錯誤位址、IPv6 路徑無法連線,或後續連接埠受到限制,網頁一樣可能無法開啟。
二、先確認本地網路與目前設定
開始修改前,先備份目前設定,並記下出問題的完整網域、使用的 Wi-Fi 或行動網路、Global Routing 目前選項及錯誤發生時間。測試時使用同一個網頁,並另外準備一個目前網路原本可以開啟的網頁作為對照。只觀察單一網站,容易把目標網站本身的故障誤認為所有 DNS 請求都失敗。
-
暫停自動連線
前往 Settings → On Demand,記錄目前啟用狀態與條件,排查期間先暫時停用。接著在 Home 中斷連線,避免中斷後立即因按需條件重新連線。
-
檢查原始網路
中斷連線後,使用 Safari 開啟對照網頁。若公共 Wi-Fi 需要驗證,請先完成網路登入;若原始網路也無法連線,先處理 Wi-Fi、行動數據或網路驗證問題。
-
確認目前使用的設定
前往 Config,確認實際選取的設定檔,再開啟該檔案檢查內容。只編輯另一個未啟用的檔案,不會改變目前請求的處理方式。
-
連線後再次測試
返回 Home,連線至自己已有的伺服器,再用 Safari 重試相同網頁。記錄中斷與連線兩種狀態的差異,不要同時切換伺服器、DNS 與規則。
-
切換網路確認
保持設定與伺服器不變,在 Wi-Fi 與行動網路之間切換後重試。若只有其中一種網路失敗,優先檢查該網路的 DNS 是否可連線、是否需要驗證,以及是否有存取限制。
若自己使用的伺服器位址是網域名稱,建立連線前也可能需要先解析。因此,「目標網頁的 DNS」與「伺服器網域的初始解析」是兩個不同的檢查項目。前者出錯時,連線可能仍維持;後者出錯時,連線本身可能無法建立。不要只根據狀態列的連線標示,就認定這兩項都已完成。
三、檢查 [General] 中的 dns-server
在 Config 中檢查目前檔案的 [General] 區段,找到 dns-server。先確認使用的是系統解析、指定 DNS 位址或 DNS over HTTPS,再檢查拼寫,以及目前網路是否能連上所填的服務。不要直接拼接不同來源的設定,也不要把服務商提供的其他欄位誤填為 DNS 位址。
[General]
dns-server = system
以上是使用系統 DNS 的最小片段,用來說明欄位語法,並非完整設定。若要進行對照測試,請先備份,再取代原有的同名設定項目,不要重複新增 [General] 或堆疊多個 dns-server。儲存後重新連線並送出新請求;恢復正常只能說明解析路徑變更有效,仍需比對原設定找出原因。
- 系統 DNS:
system使用系統提供的解析設定。切換 Wi-Fi 或行動網路後,實際使用的解析環境可能隨之改變,適合用來建立目前網路的對照基準。 - 指定 DNS 位址:確認位址正確,並檢查目前網路是否允許連線至該解析器。設定位址不代表請求一定能送達,光看伺服器延遲也無法驗證這一點。
- DNS over HTTPS:檢查完整 HTTPS 端點路徑、主機名稱及 TLS 連線條件。解析器主機名稱的初始解析也可能影響連線;使用 HTTPS 不代表服務一定可用。
- 區域網路網域:公司或家用內部名稱可能只有本地 DNS 能解析。改用外部解析器後,公開網頁可能恢復正常,內部名稱反而無法解析。
四、使用 Global Routing 區分規則與解析問題
前往 Home → Global Routing,先記錄目前選項。Config 會依目前設定中的規則處理請求;Proxy 與 Direct 可用來比對不同出站路徑。切換至 Proxy 後網頁恢復正常,不代表「DNS 已修復」:目標網域可能一直都能解析,只是原有規則將連線交給不合適的出站策略。
| 測試狀態 | 觀察結果 | 下一步檢查 |
|---|---|---|
| Config 失敗,Proxy 正常 | 所選出站路徑可完成該網頁請求 | 檢查規則比對結果、策略指向與 DNS 相關設定 |
| Direct 正常,Proxy 失敗 | 直接連線可存取,代理路徑則有差異 | 檢查所選伺服器、出站連線與解析路徑 |
| 多種狀態都失敗 | 問題不只與某一條分流規則有關 | 檢查本地網路、解析器連線狀態與目標網站 |
| 只有一個網域失敗 | 問題集中在特定目標 | 檢查該網域的解析結果、專用規則與網站狀態 |
規則會依序比對,命中後採用對應策略。檢查 DOMAIN-SUFFIX 是否涵蓋目標網域、GEOIP 或 IP-CIDR 是否將解析取得的位址導向其他路徑,以及 FINAL 是否位於規則區段末尾。以下片段僅展示語法與順序;example.com 是文件中的示例網域,不是網頁連線測試目標。
[Rule]
DOMAIN-SUFFIX,example.com,PROXY
IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
GEOIP,CN,DIRECT
FINAL,PROXY
no-resolve 表示該 IP 規則不會為了比對而主動觸發網域解析,並非關閉所有 DNS。是否已取得目標 IP,以及前面是否已命中網域規則,都會影響後續比對。若目前設定使用具名策略,也應檢查策略最後指向的位置;不能只看到規則列中的名稱,就認定使用的是預期伺服器。
結論:先保留能重現差異的對照
若 Config 與 Proxy 的結果不同,先記錄同一網域命中的規則與最後使用的出站路徑,再修改對應項目;不要同時更換 DNS 與伺服器,否則無法判斷是哪項修改生效。
五、依錯誤階段辨別 DNS、連線與 TLS 問題
Safari 顯示的提示可能依系統語言而異。若錯誤詳細資訊或診斷記錄提供系統錯誤代碼,可用下列原文辨別問題階段;這些是 Apple URL Loading System 的錯誤名稱,不代表 Shadowrocket 一定會逐字顯示。查看與本次瀏覽時間相符的請求記錄,優先找出解析是否失敗、目標 IP、命中策略及後續連線結果。
錯誤:NSURLErrorCannotFindHost(-1003)
原因:請求找不到指定主機,可能與網域拼寫或名稱解析有關。處理方式:先確認完整主機名稱,再比對系統 DNS 與目前 DNS 設定能否取得位址。
錯誤:NSURLErrorDNSLookupFailed(-1006)
原因:DNS 查詢失敗,解析器無法連線或解析過程異常都可能造成此結果。處理方式:檢查目前的解析器與網路路徑,其他條件保持不變,再切換網路或改用系統 DNS 進行比對。
錯誤:NSURLErrorTimedOut(-1001)
原因:請求逾時,可能發生在解析、連線或等待回應的階段。處理方式:先確認記錄中是否已有目標 IP,再檢查對應的出站路徑與連線結果,不要只憑逾時訊息就判定是 DNS 問題。
錯誤:NSURLErrorSecureConnectionFailed(-1200)
原因:安全連線建立失敗,可能與 TLS、憑證或網路中的連線干預有關。處理方式:確認裝置日期與時間及目標主機名稱,查看 TLS 相關記錄;不要以關閉憑證驗證取代問題排查。
若記錄中已有目標 IP,但接著連線至該 IP 逾時,應繼續檢查伺服器出口、目標連接埠及 IPv4/IPv6 路徑,而不是反覆修改 DNS。若只看到 DNS 查詢送出,卻長時間沒有回應,才應優先檢查解析器是否可連線。若只有舊網頁正常、新網域失敗,快取可能掩蓋問題,也需要送出新請求重新測試。
六、確認恢復正常後再還原按需連線
修改後應儲存目前設定,中斷連線再重新連線,並重新開啟目標網頁。Safari 或其他 App 可能保留既有連線與快取,因此重新整理一次成功,不足以證明問題已排除;同樣地,舊連線持續失敗,也不代表新設定沒有生效。請用原本出問題的網頁、對照網頁及另一種網路重複檢查,並記錄結果是否一致。
- 確認解析:目標網域能取得合理位址,且不再出現本次測試時的解析失敗記錄。
- 確認分流:恢復日常使用的 Global Routing 狀態,確認目標請求命中預期規則與策略。
- 確認網路切換:分別在常用 Wi-Fi 與行動網路上測試,特別留意切換後才出現的解析器無法連線問題。
- 恢復自動條件:返回 Settings → On Demand,還原先前記錄的條件,再確認連線是否依預期觸發。
- 保留有效設定:保留修改前後的副本。若遠端設定日後更新時會覆蓋本地編輯,請核對更新內容,勿將暫時修正視為永久結果。
若問題仍未解決,請向自己的服務商或網路管理員提供必要資訊:發生時間、網路類型、目標網域、Global Routing 狀態、命中策略,以及已移除敏感資訊的錯誤片段。不要傳送完整訂閱連結、驗證密碼或含有存取權杖的設定。明確指出是「解析沒有回應」還是「取得位址後連線失敗」,通常比只提供延遲測試結果更有助於定位問題。