Shadowrocket 已連線但無法上網:伺服器、模式、DNS 與規則排查

Shadowrocket 顯示已連線卻無法開啟網頁?依序檢查伺服器、Global Routing、DNS 與規則命中順序,逐步找出問題。

本文重點

開關開啟只代表連線功能已啟動,不代表所選伺服器、網域解析或目標網站都能正常使用。本文適用於已在 Shadowrocket(小火箭)匯入自有伺服器或訂閱的使用者,依序檢查基本網路、伺服器、Global Routing、DNS 與規則;每次只變更一個項目,最後還原原設定,避免把臨時測試狀態當成日常設定。

一、先確認故障範圍,暫勿重新安裝

先區分基本網路故障,還是開啟連線後才發生的問題。在 Home 關閉連線,用 Safari 開啟兩個平時可直接瀏覽的網站;再開啟連線,測試相同頁面。測試期間固定使用同一個 Wi-Fi 或行動網路,不要同時更換網路、伺服器和設定,否則無法判斷是哪項變更造成影響。

  1. 記錄原始設定

    在 Home 記下所選伺服器與 Global Routing,在 Config 記下目前啟用的設定檔。若要編輯設定檔,請先儲存副本;記錄中不要包含密碼、完整訂閱網址或其他憑證。

  2. 關閉連線後比對

    關閉 Home 的連線開關後,再試著開啟網頁。若網路自動重新連線,請檢查 Settings → On Demand,測試期間暫時關閉已啟用的觸發設定,排查完成後再還原。

  3. 確認基本網路

    若關閉連線後仍無法瀏覽一般網站,請先檢查 Wi-Fi 登入驗證、行動數據權限與網路訊號。若公共 Wi-Fi 要求完成驗證,請先透過系統或 Safari 完成登入流程。

  4. 固定測試目標

    選一個確定可直接瀏覽的頁面,以及一個原本需要透過自有伺服器瀏覽的頁面,分別記錄是否成功及是否逾時。不要只憑單一網站的結果判斷整體網路狀態。

關閉連線後仍無法瀏覽,應先處理基本網路問題。只有開啟連線後才失敗,才繼續檢查本文後續項目;若只有特定網站無法瀏覽,也要考慮網站本身故障、存取限制或規則差異。系統顯示 VPN 標示,同樣不能證明已成功連線至特定遠端網站。

二、檢查伺服器:測試結果不代表全面可用

先確認目前選取的伺服器能否完成實際請求。在 Home → Connectivity Test 執行測試,再確認 SERVER 清單中的選取狀態。測試顯示延遲數值,通常只代表在該測試條件下收到回應,不表示所有網域、連接埠和 App 流量都能正常通過。

請依發生階段判讀錯誤訊息。以下是連線記錄中可能出現的底層錯誤片段,實際文字會因協定和失敗階段而異;單憑同一段訊息,無法判定一定是服務商、DNS 或規則出錯。

錯誤訊息:connection refused

原因:通常是目標位址的對應連接埠拒絕連線,可能與連接埠錯誤、服務未在監聽或存取控制有關。

處理方式:先確認錯誤發生在代理伺服器還是目標網站,再核對該位址的連接埠,並向自己的服務商確認監聽狀態。

錯誤訊息:i/o timeout

原因:指定階段未能在等待時間內完成,可能是連線封包遺失、遠端沒有回應或傳輸參數不相符。

處理方式:保持伺服器參數不變,改用另一個可正常使用的網路重新測試;若只有其中一個網路失敗,再檢查該網路的限制。

錯誤訊息:no such host

原因:相關主機名稱無法取得可用的解析結果,需先確認失敗的是伺服器網域還是網頁網域。

處理方式:檢查網域拼寫是否正確,再依下文還原 DNS 基本設定;若伺服器網域本身已失效,應先確認既有連線參數。

三、檢查 Global Routing:先切換模式比對

Global Routing 用來決定請求採用哪種分流方式,無法修復失效的伺服器。在 Home → Global Routing 記下目前選項,再短暫切換至 Proxy 和 Config 進行比對。測試結束後還原原選項,避免診斷操作長期改變所有請求的連線路徑。

選項排查用途需確認項目
Proxy一般請求會經由代理路徑,用來比對規則分流的影響。Home 目前選取的伺服器是否正確,以及連線參數是否有效。
Direct請求直接連線,不透過代理伺服器存取目標。目標能否透過目前的基本網路直接存取;失敗不代表伺服器失效。
Config依據目前啟用設定檔中的規則與策略處理請求。Config 中實際啟用的檔案、規則順序與策略指向。
Scene依照已設定的場景決定實際使用方式。目前場景的比對結果;不能只看到 Scene 就認定所有請求都會經過代理。

判斷方式:Proxy 成功後再檢查 Config

同一個網路、伺服器和目標在 Proxy 下可正常使用,在 Config 下卻失敗時,應優先檢查目前設定檔中的規則、策略與 DNS 差異,不要先更換所有伺服器參數。

On Demand 控制連線何時觸發,不會取代 Global Routing 的請求分流功能。若問題是關閉後自動開啟,應先檢查 Settings → On Demand;若連線保持開啟但只有部分網站無法使用,應先核對模式和個別請求,不要反覆切換 On Demand。

四、檢查 DNS:分辨伺服器網域與目標網域

排查 DNS 的第一步,是確認哪個名稱解析失敗。伺服器位址若使用網域,建立連線前就可能需要解析;目標網頁若使用網域,則還要考慮該請求實際採用的解析路徑。前者失敗會導致無法連上伺服器;後者失敗則可能只影響部分網站。

53
傳統 DNS 通常使用的連接埠,可能採用 UDP 或 TCP。
853
DNS over TLS 通常使用的連接埠。
443
DNS over HTTPS 通常使用的 HTTPS 連接埠。

連接埠可連通,不代表解析結果一定正確。加密 DNS 還需要解析服務位址可連線、TLS 驗證正常;使用網域的解析服務也可能需要先進行初始解析。一次加入多個陌生解析位址會增加變數,無法據此確認問題已找出。

  1. 在 Config 確認目前啟用的檔案,開啟編輯頁面,檢查 [General] 下既有的 dns-server 設定。先儲存原始值,不要直接覆寫整段設定。
  2. 如果問題剛好發生在手動變更 DNS 之後,請先還原先前可用的設定。若要進行比對,可在設定檔副本中使用 dns-server = system,測試系統的解析路徑;這是診斷基準,不是適用於所有網路的最終設定。
  3. 儲存並啟用測試設定檔後,重新連線並送出新的網頁請求。瀏覽器可能沿用舊連線或快取,僅重新整理一次不足以證明新設定已生效。
  4. 若 [Host] 中有手動網域對應,也要檢查是否指向舊位址。還原 DNS 設定不會自動清除設定檔中另行指定的靜態對應。

五、檢查規則:從第一條比對到 FINAL

使用 Config 模式時,應檢查實際啟用的規則,而不只是確認檔案是否存在。規則通常由上而下依序比對,前面的廣泛規則可能導致後面的精確規則無法生效。先在 Config 確認啟用的檔案,再檢查 [Rule] 中與失敗網域相關的項目及最終策略。

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

這段程式碼只用來說明語法,並非可直接取代日常設定的完整方案。example.com 是示範網域,PROXY 必須對應至可用的代理策略;若自己的檔案使用命名策略,應檢查該策略實際選取的伺服器,而不只是查看 Home 清單。

修正规則時,每次只改一處,並使用同一個目標重新驗證。若 Proxy 模式仍然失敗,只把 FINAL 改成代理並不能修復伺服器驗證錯誤;若只有 Config 模式失敗,應優先檢查命中的規則及其策略。測試結束後,還原不需保留的臨時規則。

六、常見問題與排查收尾

排查結束時,應保留可重現的現象,而不是提交整份含有憑證的設定檔。記錄網路類型、伺服器協定、Global Routing、失敗目標與錯誤階段,通常比「開關已開啟」更有助於定位問題。若要向自己的服務商回報,請先移除密碼、UUID、私鑰與訂閱權杖。

Connectivity Test 顯示延遲,為什麼 Safari 還是無法開啟網頁?

測試目標與網頁目標可能不同,規則和 DNS 路徑也可能不同。在 Home 維持同一台伺服器,先用 Global Routing → Proxy 進行比對,再切回 Config 檢查與目標網域相關的規則;不要只憑單一延遲數值判斷所有流量都能正常使用。

訂閱更新成功,是否代表伺服器一定正常?

不是。Home 中訂閱更新成功,只代表已成功取得訂閱內容。更新後請確認目前選取的伺服器仍可使用,再執行 Connectivity Test;若既有參數已變更,請向自己的服務商確認新參數,不要把訂閱網址填成伺服器位址。

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

固定伺服器與 Global Routing,分別測試兩種網路。先完成 Wi-Fi 驗證,再檢查該網路的 DNS 與存取限制;若同一組參數只在該 Wi-Fi 下失敗,應優先找出網路差異,不要同時重寫設定和驗證參數。

切換到 Proxy 就正常了,可以一直這樣用嗎?

可將此結果作為排查線索,但仍應確認是否符合自己的分流需求。切回 Config,檢查失敗網域、策略指向與 FINAL;若需要依規則分流,請修正設定後再切回 Config,不要將臨時比對結果直接當成最終設定。

前往 App Store