本文適用於已安裝 Shadowrocket(小火箭)、持有自己的服務商設定或訂閱,且可以開啟連線開關但仍無法存取網路的使用者。先在關閉連線時確認基本網路正常,再依序檢查 Home 中的伺服器、Global Routing、DNS,以及 Config 中的 Rule。每次只變更一項設定,並以相同目標重新測試,逐步判斷問題出在基本網路、代理連線、網域解析或分流策略,避免反覆重新安裝 App。
一、分辨 VPN 已啟動與目標網站可連線
開啟連線開關且系統顯示 VPN,表示系統已建立供 App 處理流量的通道,但不代表遠端伺服器已完成驗證,也不保證目標網站能夠存取。伺服器位址無法解析、連接埠無法連線、驗證參數失效或請求遭規則拒絕,都可能在開關開啟後發生。
先選兩個平時可正常存取、用途不同的網頁作為測試目標,記下是兩個都無法開啟、只有特定網域無法開啟,還是網頁能開啟但部分資源載入失敗。不要因單一網站故障就判定整個網路都無法使用,也不要同時切換伺服器、DNS 和設定檔,否則無法確認是哪項變更影響結果。
-
關閉連線
返回 Home,關閉連線開關,再用瀏覽器開啟選定的兩個目標。若仍無法存取,先處理 Wi-Fi 登入、行動數據權限或目前網路本身的問題。
-
暫停自動連線
前往 Settings → On Demand,記下原有設定後,暫時關閉自動觸發,避免手動關閉後系統又自動連線。排查完成後再恢復原設定。
-
固定測試條件
先固定使用一種網路與一台自己已有的伺服器,記下 Home → Global Routing 目前的選項,以及 Config 中實際啟用的設定檔。
-
連線後重新測試
重新開啟連線,用同一個瀏覽器存取相同目標。若要比較 Wi-Fi 與行動數據,請分開進行測試,不要同時變更其他設定。
二、檢查 Home 伺服器與實際連線錯誤
在 Home 確認目前選取的項目確實是要測試的伺服器,不要只看訂閱群組名稱。開啟該項目的編輯頁面,依照自己持有的服務商資料檢查位址、連接埠、協定與驗證資訊。Shadowsocks、VMess、VLESS、Trojan、Hysteria2、WireGuard 的參數結構各不相同,不能將一種協定的欄位直接套用到另一種協定。
連接埠必須與伺服器端設定一致。使用 TLS 的服務也要核對服務商提供的 Server Name 等參數;不要透過關閉憑證驗證來掩蓋錯誤。裝置日期與時間不正確也可能影響憑證驗證,請先校正時間。更新訂閱後,項目內容可能有所變更,請再次確認目前選取的項目,不要只憑舊名稱判斷設定仍有效。
- 可以先使用 Home 的 Connectivity Test 蒐集線索,但結果會受到測試方式與目標影響,延遲數值不能證明網頁一定能開啟。
- 若 TCP 連線已建立,但實際請求仍失敗,請繼續核對驗證與 TLS 參數;連接埠可連通,與應用程式流量能成功傳輸,是兩個不同階段。
- 若只有 Hysteria2 或 WireGuard 項目在特定網路下失敗,請檢查該網路與伺服器端是否可使用 UDP;這些協定不能只根據 TCP 測試結果判斷。
- 若現有訂閱內容有所變更,請使用原訂閱的更新功能取得最新參數。不要自行猜測連接埠或密碼,也不要公開訂閱 URL、金鑰或完整記錄檔。
以下列出網路記錄中可能出現的錯誤字串範例,並非固定的彈出視窗標題;實際文字會因協定與底層錯誤而異。只有記錄中確實出現相應資訊時,才依該項說明處理。
錯誤: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 才能建立代理連線;網站網域則可能在後續請求階段才解析。兩個階段都可能顯示逾時,但處理順序不同。先確保伺服器位址可解析,再檢查目標網域;尚未建立的代理連線無法替你完成所有前置解析。
這些是常見的 DNS 解析方式連接埠,不是要使用者將伺服器連接埠改成其中之一。使用加密 DNS 時,解析伺服器仍必須可連線;若解析端點只有在代理連線建立後才能存取,卻又要用它解析代理伺服器網域,就可能形成相依循環。DNS 位址正確,也不代表目前的網路一定允許連線。
- 記下 Settings → DNS 中的現有設定,並確認 Config 中目前使用的設定是否包含
[General]區段的dns-server項目。若設定有多個來源,請先確認實際生效的是哪一個,不要只修改未啟用的檔案。 - 查看失敗請求是否已取得目標 IP、是否出現解析錯誤,以及失敗發生在連線至伺服器前,還是目標請求階段。若已取得 IP 後才發生連線逾時,不能只因網頁無法開啟就判定是 DNS 故障。
- 若曾手動設定 DNS,請先保存原值,再只針對這項設定恢復原本可用的值進行比較。保持伺服器與 Global Routing 不變,重新建立連線後再測試。
- 若只在特定 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 都已關閉。
- 檢查順序:若目標已先符合前面的 DIRECT,末尾的 FINAL 就不會再將它改為 PROXY。新增例外規則時,必須放在會覆蓋它的規則之前。
- 檢查策略:若規則指向自訂策略名稱,請確認該策略確實存在,而且最後選取的伺服器可正常使用。群組名稱看起來正確,不代表群組中選取的項目一定可用。
- 檢查拒絕規則:符合 REJECT 的請求會遭到拒絕;若網頁主體正常,但某項必要資源載入失敗,請檢查該資源本身的網域與策略,不要只檢查網址列中的網域。
- 檢查 IP 規則:GEOIP 與 IP-CIDR 依賴請求中可取得的 IP 資訊。網域解析結果改變會影響規則比對,不要把單次觀察結果視為固定不變。
找出問題規則後,只修改與失敗目標相關的最小範圍,再重做原本的測試。不要為了開啟單一網頁就刪除所有規則;這或許能暫時改變結果,卻會失去判斷原始故障的依據。規則欄位的完整說明請參閱設定欄位手冊。
六、常見狀況與排除方式
有延遲數值,為什麼網頁還是無法開啟?
延遲測試只反映特定測試的回應,無法涵蓋所有驗證、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;這些資訊比「開關已開啟」更能協助判斷問題發生在哪個連線階段。