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

Shadowrocket 顯示已連線,網頁卻無法開啟?依序檢查伺服器連線、Global Routing 模式、DNS 設定與 Rule 順序,逐步找出問題所在。

本文重點

本文適用於已安裝 Shadowrocket(小火箭)、持有自己的服務商設定或訂閱,且可以開啟連線開關但仍無法存取網路的使用者。先在關閉連線時確認基本網路正常,再依序檢查 Home 中的伺服器、Global Routing、DNS,以及 Config 中的 Rule。每次只變更一項設定,並以相同目標重新測試,逐步判斷問題出在基本網路、代理連線、網域解析或分流策略,避免反覆重新安裝 App。

一、分辨 VPN 已啟動與目標網站可連線

開啟連線開關且系統顯示 VPN,表示系統已建立供 App 處理流量的通道,但不代表遠端伺服器已完成驗證,也不保證目標網站能夠存取。伺服器位址無法解析、連接埠無法連線、驗證參數失效或請求遭規則拒絕,都可能在開關開啟後發生。

先選兩個平時可正常存取、用途不同的網頁作為測試目標,記下是兩個都無法開啟、只有特定網域無法開啟,還是網頁能開啟但部分資源載入失敗。不要因單一網站故障就判定整個網路都無法使用,也不要同時切換伺服器、DNS 和設定檔,否則無法確認是哪項變更影響結果。

  1. 關閉連線

    返回 Home,關閉連線開關,再用瀏覽器開啟選定的兩個目標。若仍無法存取,先處理 Wi-Fi 登入、行動數據權限或目前網路本身的問題。

  2. 暫停自動連線

    前往 Settings → On Demand,記下原有設定後,暫時關閉自動觸發,避免手動關閉後系統又自動連線。排查完成後再恢復原設定。

  3. 固定測試條件

    先固定使用一種網路與一台自己已有的伺服器,記下 Home → Global Routing 目前的選項,以及 Config 中實際啟用的設定檔。

  4. 連線後重新測試

    重新開啟連線,用同一個瀏覽器存取相同目標。若要比較 Wi-Fi 與行動數據,請分開進行測試,不要同時變更其他設定。

二、檢查 Home 伺服器與實際連線錯誤

在 Home 確認目前選取的項目確實是要測試的伺服器,不要只看訂閱群組名稱。開啟該項目的編輯頁面,依照自己持有的服務商資料檢查位址、連接埠、協定與驗證資訊。Shadowsocks、VMess、VLESS、Trojan、Hysteria2、WireGuard 的參數結構各不相同,不能將一種協定的欄位直接套用到另一種協定。

連接埠必須與伺服器端設定一致。使用 TLS 的服務也要核對服務商提供的 Server Name 等參數;不要透過關閉憑證驗證來掩蓋錯誤。裝置日期與時間不正確也可能影響憑證驗證,請先校正時間。更新訂閱後,項目內容可能有所變更,請再次確認目前選取的項目,不要只憑舊名稱判斷設定仍有效。

以下列出網路記錄中可能出現的錯誤字串範例,並非固定的彈出視窗標題;實際文字會因協定與底層錯誤而異。只有記錄中確實出現相應資訊時,才依該項說明處理。

錯誤:connection refused

原因與處理方式:目標連接埠拒絕連線,可能是服務未在該連接埠監聽,或網路設備主動拒絕。先核對伺服器位址與連接埠,再向自己的服務商確認服務狀態,不要先調整網域規則。

錯誤:i/o timeout

原因與處理方式:某個讀取或寫入階段未能在時限內完成,錯誤本身無法判定問題出在 DNS 還是伺服器。請搭配前後記錄確認逾時目標,並在另一種基本網路下使用相同設定重新測試。

錯誤:no such host

原因與處理方式:查詢的主機名稱未能取得可用的解析結果。先確認這是伺服器網域還是網站網域,再檢查拼字與解析路徑,避免把伺服器網域解析失敗誤判為 Rule 問題。

三、使用 Global Routing 隔離分流問題

前往 Home → Global Routing,記下目前的 Proxy、Direct、Config 或 Scene。Proxy 用於將流量導向代理,Direct 用於直接連線,Config 依啟用的設定進行分流,Scene 則依所選情境設定運作。排查時必須先確認目前使用哪種模式;若只在 Config 中修改 Rule,實際卻使用其他模式,可能看不到預期變化。

選項本輪測試目的觀察結果與下一步
Direct比較直接連線是否可用若失敗,請與關閉連線時的結果比較,並檢查基本網路與解析設定。
Proxy使用同一台伺服器測試代理連線若兩個目標都失敗,優先檢查伺服器、驗證與解析,不必急著調整 Rule 順序。
Config測試目前設定的分流結果若 Proxy 可用,但 Config 無法存取同一目標,請檢查命中的規則與最終策略。
Scene確認 Scene 實際採用的設定先確認目前使用的 Scene;隔離問題時,暫時改用明確的 Proxy 或 Config 進行比較。

結論:先固定代理連線,再檢查規則

在相同網路、伺服器與目標下,若 Proxy 可正常存取,但 Config 失敗,下一輪只檢查 Config 的命中策略與相關解析設定,不要同時更換伺服器。這項比較能縮小排查範圍,但仍需參考請求記錄確認原因。

切換 Global Routing 是診斷方式,不是永久解決方案。測試時,既有的長連線可能仍沿用舊連線;切換後請重新發出請求,必要時關閉再重新開啟連線。測試結束後恢復原本模式,尤其不要把暫時使用的 Proxy 當成原有分流設定已修復。

四、判斷 DNS 故障發生在哪個階段

排查 DNS 時,先確認「是哪個網域解析失敗」。如果伺服器位址使用網域名稱,必須先取得伺服器 IP 才能建立代理連線;網站網域則可能在後續請求階段才解析。兩個階段都可能顯示逾時,但處理順序不同。先確保伺服器位址可解析,再檢查目標網域;尚未建立的代理連線無法替你完成所有前置解析。

53
傳統 DNS 常用連接埠,使用 UDP 或 TCP
443
DoH 通常使用 HTTPS 的連接埠
853
DoT 通常使用的 TLS 連接埠

這些是常見的 DNS 解析方式連接埠,不是要使用者將伺服器連接埠改成其中之一。使用加密 DNS 時,解析伺服器仍必須可連線;若解析端點只有在代理連線建立後才能存取,卻又要用它解析代理伺服器網域,就可能形成相依循環。DNS 位址正確,也不代表目前的網路一定允許連線。

  1. 記下 Settings → DNS 中的現有設定,並確認 Config 中目前使用的設定是否包含 [General] 區段的 dns-server 項目。若設定有多個來源,請先確認實際生效的是哪一個,不要只修改未啟用的檔案。
  2. 查看失敗請求是否已取得目標 IP、是否出現解析錯誤,以及失敗發生在連線至伺服器前,還是目標請求階段。若已取得 IP 後才發生連線逾時,不能只因網頁無法開啟就判定是 DNS 故障。
  3. 若曾手動設定 DNS,請先保存原值,再只針對這項設定恢復原本可用的值進行比較。保持伺服器與 Global Routing 不變,重新建立連線後再測試。
  4. 若只在特定 Wi-Fi 下解析失敗,請改用行動數據進行單一變因比較。若結果不同,表示網路環境可能與故障有關,但還不能據此判斷是哪台設備造成阻擋。

五、檢查 Config 中 Rule 的比對順序

若代理連線正常,但 Config 只能讓特定目標存取失敗,請開啟 Config 中實際啟用的檔案並檢查 [Rule]。規則會依序比對,第一條符合的規則會決定對應策略;具體網域規則通常應放在較廣泛的規則之前,FINAL 則放在最後。修改前先備份原檔,修改後確認實際套用的仍是這個檔案。

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

上例只示範語法與順序,不建議直接取代現有設定。example.com 是範例網域;DOMAIN-SUFFIX 符合該網域及其子網域,IP-CIDR 符合 IP 網段,GEOIP 依 IP 的地理資訊比對,FINAL 則套用至先前未符合任何規則的請求。no-resolve 表示該 IP 規則不會為了比對而主動進行網域解析,並不代表所有 DNS 都已關閉。

找出問題規則後,只修改與失敗目標相關的最小範圍,再重做原本的測試。不要為了開啟單一網頁就刪除所有規則;這或許能暫時改變結果,卻會失去判斷原始故障的依據。規則欄位的完整說明請參閱設定欄位手冊。

六、常見狀況與排除方式

有延遲數值,為什麼網頁還是無法開啟?

延遲測試只反映特定測試的回應,無法涵蓋所有驗證、TLS、DNS 與目標請求。保持使用同一台伺服器,在 Home → Global Routing 切換至 Proxy 後,存取原本的目標,再依請求錯誤判斷是交握失敗,還是連線至目標失敗。

Wi-Fi 可以使用,行動數據不行,應先檢查什麼?

先關閉連線,確認行動網路本身可以正常存取,再檢查系統是否允許 Shadowrocket 使用行動數據。接著以相同伺服器與模式重新測試;若只有依賴 UDP 的設定失敗,請向自己的服務商確認該網路下的連線條件,不要任意修改協定欄位。

只有特定網站無法開啟,需要重新安裝嗎?

先比較該目標在 Proxy 與 Config 下的結果,再檢查失敗資源的網域、命中規則與最終策略。若兩種模式都失敗,但其他網站正常,也要考慮目標服務狀態、遠端出口至目標的連線路徑,以及該網站本身的存取條件。

關閉開關後又自動連線,該如何排查?

前往 Settings → On Demand,暫時關閉自動觸發,再測試關閉連線後的基本網路。排查完成後恢復原設定;不要將自動連線誤判為開關故障,也不必因此先刪除系統 VPN 設定。

最後恢復暫時修改的 Global Routing、DNS 與 On Demand 設定,只保留已透過比較測試確認有效的修正。若問題仍未排除,請提供給自己的服務商發生時間、網路類型、協定、已去識別化的錯誤原文,以及 Direct、Proxy、Config 三輪測試的差異。請隱去密碼、UUID、金鑰與訂閱 token;這些資訊比「開關已開啟」更能協助判斷問題發生在哪個連線階段。

App Store 正版核對