Shadowrocket 開關已開卻無法上網:伺服器、Global Routing、DNS 與規則排查

Shadowrocket 顯示已連線卻無法上網?依序檢查伺服器、Global Routing、DNS 與規則,並按照步驟找出問題。

本文重點

Shadowrocket(小火箭)的連線開關開啟,代表系統隧道已啟用,但不代表伺服器、網域解析和目標網站都能正常使用。本文假設你已有自己的服務商與訂閱,依序從伺服器、Global Routing、DNS、規則四個方向縮小問題範圍;每次只調整一個變數,使用同一個目標重新測試,最後恢復原有分流設定。

排查前準備:區分隧道、伺服器與網頁請求

先別刪除 App 或重建所有設定。VPN 標示、伺服器延遲和網頁載入分別反映不同環節:系統接受 VPN 設定,不代表遠端伺服器已完成協定驗證;延遲測試有回應,也不代表網頁使用的網域、連接埠和規則路徑都正確。先確認實際症狀,再決定要檢查哪個環節。

App 發出請求 系統隧道接管流量 解析與規則判斷 直連或代理連線 目標回傳資料

這個流程用來定位檢查環節,不代表所有連線都必須先完成 DNS 解析才能比對規則。網域規則可直接依主機名稱判斷,IP 類規則則可能涉及解析結果。本文以 iPhone / iPad 介面為例;開始前,記下 Home 目前選取的伺服器、Global Routing 值,以及 Config 正在使用的設定檔。

第一步:確認選取的伺服器可正常使用

前往 Home,確認圓點選取的是準備測試的伺服器,而不只是展開某個訂閱群組。開啟連線開關後執行 Connectivity Test,記下測試是否完成及顯示的訊息。這項測試只反映當次測試目標的連線狀況,不能取代所有網站的驗證,也無法單獨證明 DNS 或規則一定正確。

  1. 確認選取項目

    在 Home 查看目前圓點的位置和伺服器名稱。如果設定使用策略群組,也要確認群組內實際選取的成員;Home 的預設選取項目不一定會套用設定檔中指定的固定策略。

  2. 執行連線測試

    在 Home 執行 Connectivity Test,接著造訪同一個測試網址。分別記錄測試和網頁是否成功,別把單純的延遲數值當成網頁可正常連線的證明。

  3. 檢查連線欄位

    開啟該伺服器的編輯頁面,對照原始設定檢查 Type、位址、連接埠和驗證資訊。Trojan、VLESS 等類型也要依原始設定核對 TLS 與傳輸參數;不要只看伺服器名稱就判斷類型。

  4. 更新現有訂閱

    使用 Home 中該訂閱的更新功能,確認更新成功後再選取項目進行測試。若更新失敗,請保留原有設定,向自己的服務商確認訂閱是否有效;不要反覆刪除再重新新增。

連接埠必須依照你現有的設定填寫,不能一律改成 443。Shadowsocks、VMess、VLESS、Trojan、Hysteria2、WireGuard 的驗證和傳輸欄位各不相同;更改 Type 不會自動轉換設定。若伺服器要求使用 UDP,而目前網路限制 UDP,也不能只改一個連接埠就認定問題已解決。

記錄中的關鍵字:connection refused

原因與解法:通常表示目標或中間設備明確拒絕連線,可能是連接埠未啟用或存取遭拒。先確認伺服器位址與連接埠,再向自己的服務商確認對應服務狀態。

記錄中的關鍵字:i/o timeout

原因與解法:表示某項 I/O 作業未能在期限內完成,不能只憑這點認定帳號已失效。請根據記錄中的目標位址,判斷逾時發生在伺服器還是目標網站,並改用其他網路重新測試。

以上是網路記錄中可能出現的原始關鍵字,並非每種故障都會顯示這些訊息。請以裝置當下的記錄為準,不要照著文章範例自行補寫診斷結果。

第二步:使用 Global Routing 確認分流問題

前往 Home → Global Routing,先查看目前設定值,再進行暫時比對。Proxy、Direct、Config、Scene 並非四個伺服器名稱,而是決定流量選擇哪條路徑的模式。Direct 本身不代表故障:目標原本就能直連時,應可正常使用;目標需要代理時,設為 Direct 才可能不符合連線需求。

4 種
Global Routing:Proxy / Direct / Config / Scene
2 項
每輪記錄:路由模式與實際連線路徑
1 次
每次只調整一個變數,再重試同一個請求

第三步:分辨 DNS 解析失敗與連線失敗

DNS 會將網域名稱轉換成可連線的位址。如果連線記錄尚未取得目標位址就出現錯誤,應優先檢查解析;若已取得位址,之後才連線逾時,則要繼續檢查目標是否可連線、伺服器對外連線和規則。只看瀏覽器顯示「無法開啟網頁」,無法分辨這兩種情況。

記錄中的關鍵字:no such host

原因與解法:通常表示網域解析未取得可用結果,也可能是位址拼寫錯誤。先確認錯誤中的網域是伺服器網域、DNS 服務網域還是目標網站,再檢查相應位址與解析路徑。

  1. 發生錯誤後,立即查看連線記錄或日誌,找出同一時段、相同網域的項目。不要拿其他 App 的背景請求來代替目前的測試。
  2. 在 Settings 檢查 DNS 相關設定,同時在 Config 確認目前設定是否包含 [General] 下的 dns-server,或 [Host] 靜態對應。設定檔中的指定值可能是排查問題的關鍵。
  3. 如果剛新增自訂 DNS,先記下原值,再還原成修改前已知可用的設定。不要同時更換 DNS、伺服器和路由模式,否則無法判斷是哪項調整產生效果。
  4. 如果使用加密 DNS,請確認 DNS 服務本身的網域、網路路徑和 TLS 連線都能正常建立;使用加密 DNS 不代表解析服務一定連得到。

不要把「直接輸入網站 IP 就能開啟」當成通用的 DNS 測試。HTTPS 憑證驗證和 SNI 都依賴網域,許多網站也使用共用位址或 CDN;用 IP 連線失敗,不能證明該 IP 無法連通。應配合記錄中的解析結果與連線階段判斷,而不是繞過網域後就下結論。

第四步:依規則順序檢查比對結果與連線路徑

確認伺服器與 DNS 後,前往 Config 查看目前啟用檔案中的 [Rule]。規則通常依由上而下的順序比對,前面範圍較廣的規則可能先攔截,導致後面的特定規則無法生效。查看失敗請求的連線記錄,核對目標網域或 IP、符合的規則,以及實際採用的策略;只確認規則檔中「寫過這個網域」還不夠。

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

這段程式碼僅用來說明語法,並非可直接取代現有檔案的完整設定。example.com 是範例網域;實際代理出口仍取決於目前設定與策略選取。修改前請先備份原始檔案,並確認目前設定中存在該策略名稱。

仍無法連線:依症狀繼續縮小範圍

完成四個步驟仍無法連線時,請整理以下五項結果:「基本網路是否正常、目前伺服器、Global Routing 值、失敗網域、記錄中的關鍵字」。分享前請移除敏感資訊。若只有某個網路無法連線,優先比較網路條件;若所有網路都失敗且設定欄位一致,再向自己的服務商確認服務狀態。

為什麼有延遲數值,網頁還是打不開?

延遲測試與網頁請求使用的目標和路徑可能不同。先執行 Connectivity Test,再使用同一個網頁比對 Proxy 與 Config;若只有 Config 失敗,請檢查該網頁請求的規則與實際連線路徑。

Wi-Fi 無法連線、行動數據卻正常,該先檢查什麼?

保持伺服器、設定和目標網址不變,只切換網路重新測試。先確認 Wi-Fi 是否需要登入網頁,再檢查是否限制相應的傳輸方式。不要同時更換 DNS 和協定,否則無法進行有效比對。

手動關閉後又自動連線,該怎麼辦?

前往 Settings → On Demand,記下原本的隨選連線設定,排查期間暫時關閉後再測試。On Demand 負責控制自動建立連線的條件,無法修復無效的伺服器驗證或錯誤規則;排查結束後,請依原本需求還原設定。

更新訂閱後還是無法連線,需要重新安裝嗎?

先確認訂閱更新成功,且 Home 已選取更新後的項目,再檢查 Config 中固定指定的伺服器或策略群組是否仍指向舊項目。伺服器訂閱更新和規則設定更新是兩回事,不應把重新安裝當成第一步。

下載 Shadowrocket