Shadowrocket(小火箭)的連線開關開啟,只代表裝置上的連線流程已啟動,不代表遠端伺服器、網域解析及每一筆請求的策略都正常。本文假設使用者已有自己的服務商與訂閱,將從基本網路狀況開始,逐一排查伺服器、Global Routing、DNS 與規則問題;每次只變更一個項目,並以相同網頁和請求記錄確認結果。
先建立基準:關閉連線後能否上網
請勿先刪除訂閱或重新安裝 App。先確認故障是否只在 Shadowrocket 開啟連線時發生:如果關閉連線後,目前的 Wi-Fi 或行動網路仍無法開啟平常可直接連線的網頁,請先檢查基本網路、Wi-Fi 登入驗證或系統網路權限。連線圖示不能取代這項檢查。
-
記錄目前狀態
記下 Home 目前選取的伺服器、Global Routing 選項,以及 Config 中正在使用的設定檔。保留現有設定檔的副本;記錄中請勿包含密碼、完整訂閱連結或驗證參數。
-
關閉連線
在 Home 關閉連線,然後用 Safari 開啟平常可直接連線的 HTTPS 網頁。若仍無法開啟,請先確認 Wi-Fi 是否需要登入,以及行動數據是否可用,再繼續排查 App 內的設定。
-
固定測試目標
選定一個可直接連線的網頁,以及一個原本需要透過代理才能存取的網頁。接下來固定使用這兩個網址,每次修改後重新送出請求,避免拿不同網站的結果互相比較。
-
暫停自動連線
若手動中斷後連線又自動開啟,請檢查 Settings → On Demand,記下原本的狀態後暫時關閉 On Demand。測試完成後再恢復設定,避免自動連線影響比較結果。
測試時也要區分「網頁無法開啟」和「某個 App 的特定功能失效」。單一網站可能本身故障;若網頁可以開啟,但影片或通話失敗,還需檢查相關流量是否使用 UDP,不能因此直接判定整個連線都無法使用。
第一項:伺服器連線狀態與驗證參數
返回 Home,確認選取的是準備測試的伺服器,再執行 Connectivity Test。先觀察是否持續逾時,再確認回應是否穩定。測試成功只能證明測試使用的路徑或目標可以連線,不能保證所有網站、UDP 流量及伺服器端驗證都正常;延遲數值低,也不代表實際網頁一定能開啟。
開啟目前伺服器的編輯頁面,逐項比對位址、連接埠及驗證資訊與使用者向服務商取得的原始資料。Shadowsocks 的加密方式與密碼、VMess 或 VLESS 的識別參數、Trojan 的密碼,以及需要 TLS 時的伺服器名稱和傳輸參數,彼此不能互相替代。不要因為網頁通常使用 443,就自行將伺服器連接埠改成 443。
- 所有伺服器測試都失敗:先比對關閉連線時的網路基準,再確認訂閱狀態、帳號有效期限及伺服器位址是否有變更。
- 只有一台伺服器測試失敗:從使用者現有清單中改用另一個已知可用的項目測試;若恢復正常,應優先檢查原伺服器,而非重寫所有規則。
- 測試成功但實際服務仍失敗:接著檢查 Global Routing 與 DNS;也要確認測試是否只涵蓋 TCP,而實際服務是否依賴 UDP。
- 更新訂閱後才發生故障:比對更新前後的位址與協定參數;訂閱更新成功只代表資料已取得,不代表其中每台伺服器都能使用。
結論:先排除單一伺服器問題
在相同網路、相同網頁及相同 Global Routing 選項下,換成使用者現有的另一台伺服器後便能正常存取,應優先確認原伺服器的服務狀態與參數;此時不要同時修改 DNS 和 FINAL。
第二項:透過 Global Routing 區分模式與規則問題
在 Home → Global Routing 確認目前選項。Proxy、Direct、Config、Scene 並非四種協定,而是不同的流量處理方式。診斷時可暫時切換,測試完成後應恢復原本的使用方式;尤其不要把一次 Proxy 測試成功,當成所有分流規則都正確的證據。
| 選項 | 主要用途 | 排查時應確認的項目 |
|---|---|---|
| Proxy | 以代理方式處理流量;繞過項目等設定仍須另外確認 | 目前選取的伺服器能否承載目標請求 |
| Direct | 以直接連線方式處理流量 | 目標是否原本就能透過目前的基本網路存取 |
| Config | 依目前設定檔中的規則決定請求策略 | 命中哪一條規則,以及最後採用哪個策略 |
| Scene | 依已設定的場景套用相應的路由方式 | 目前場景實際採用的設定,不只是選項名稱 |
先記下原本的選項,再暫時選取 Proxy,重新開啟原先無法存取的同一網頁。如果 Proxy 可用、Config 卻不行,應優先檢查目前設定檔及規則命中情況,但也要考慮兩種模式使用的 DNS 路徑可能不同。如果兩種模式都失敗,請先回頭檢查伺服器和 DNS,不要只盯著規則。
第三項:確認 DNS 是否完成解析且路徑可連線
網域解析是請求流程的一環。DNS 失敗和伺服器連線失敗,都可能顯示為「網頁一直載入」。請開啟請求記錄,確認問題發生在網域解析階段,還是取得位址後連線目標失敗。不要只根據 Safari 的一般錯誤提示,就認定是 DNS 問題。
在 Config 中開啟目前使用的設定檔,檢查文字內容中的 [General] 與 dns-server。若曾手動填入解析器,請確認位址正確、目前網路可以連線,以及是否依賴尚未建立的代理路徑。不要同時套用多個不熟悉的 DNS 設定;先還原至先前可用的設定檔副本,再逐項比對。
- 網域沒有解析出位址:優先檢查 DNS 是否可連線、位址是否拼寫正確,以及目前設定檔中的解析設定。
- 已取得位址但連線逾時:接著檢查目標連線路徑、伺服器狀態及規則策略,不能只更換解析器。
- 只有一個網域無法存取:確認網域本身、相關規則,以及該網站是否依賴其他資源網域。
- 更換網路後才發生故障:分別在 Wi-Fi 和行動網路上重新測試,確認目前網路是否限制了解析器或伺服器的連線。
錯誤:Could not resolve host
原因與處理方式:這是常見的網域解析失敗訊息,實際措辭會因診斷工具而異。先確認目標網域和 DNS 設定,再檢查目前網路是否能連線到解析器;不要立刻修改伺服器驗證參數。
錯誤:Connection timed out
原因與處理方式:連線未能在指定時間內完成,故障可能發生於伺服器或目標路徑。先從記錄中確認失敗的目標與連接埠,再透過相同網路測試使用者現有的另一台伺服器,以區分單點故障和整體網路問題。
錯誤:Connection refused
原因與處理方式:通常表示目標或中間設備主動拒絕連線。確認記錄指向代理伺服器還是目標網站,並檢查相應的連接埠與服務狀態;反覆重新整理網頁無法修正錯誤的連接埠。
第四項:規則順序、策略引用與 FINAL
在 Global Routing 選用 Config 時,請求路徑由目前設定檔中的規則決定。先在 Config 確認選取的檔案,再檢查 [Rule]。規則通常由上而下比對;已由前面的規則命中的請求,不會再等待後面更具體的規則。因此,即使規則內容正確,位置錯誤仍可能導致無法存取。
[Rule]
DOMAIN-SUFFIX,example.com,DIRECT
IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
GEOIP,CN,DIRECT
FINAL,PROXY
以上片段僅用於說明語法,並非可直接取代現有設定的通用方案。example.com 是示例網域;PROXY 必須對應目前設定檔中已存在且可用的策略或策略組,不能只複製名稱而未定義。FINAL,PROXY 的實際效果也取決於該策略最後選取的伺服器。
| 關鍵字 | 比對依據 | 常見檢查項目 |
|---|---|---|
| DOMAIN-SUFFIX | 網域及其子網域 | 是否被前面的寬鬆規則涵蓋,以及是否遺漏資源網域 |
| IP-CIDR | 目標 IP 位址範圍 | 網段與遮罩是否正確,no-resolve 是否符合預期 |
| GEOIP | 目標 IP 在地理資料庫中的歸屬 | 以實際解析出的 IP 查詢結果為準,不按品牌所在地推斷 |
| FINAL | 前面的規則皆未命中時套用的預設策略 | 是否位於最後一行,以及引用的策略是否存在且可用 |
no-resolve 用於避免為了比對該 IP 規則而額外觸發網域解析,並非關閉整個 App 的 DNS。REJECT 則會阻擋相應請求;如果主頁可以開啟,但圖片或登入介面失敗,應檢查這些資源網域是否命中拒絕規則,而不是直接刪除所有規則。
結論:依據命中記錄調整規則
確認失敗的請求命中錯誤策略後,再移動或修改相應規則。如果請求根本沒有進入 FINAL,修改 FINAL 不會解決問題;如果已命中預期的代理策略,則應繼續追查該策略實際選取的伺服器。
常見問題:測試成功後仍有部分功能異常
Connectivity Test 有結果,為什麼網頁還是無法開啟?
測試目標可能與網頁目標不同,測試也未必涵蓋驗證、TLS、DNS 及網頁所需的所有連線。先在 Home → Global Routing 暫時選取 Proxy 重新測試,再查看失敗請求停在解析、連線,還是策略選擇階段。
Proxy 可以上網,改用 Config 就失敗,該先檢查哪裡?
先確認 Config 中目前使用的檔案,再查看失敗請求命中的規則及策略組選擇。檢查是否誤用 DIRECT、命中 REJECT,或引用無法使用的策略;同時保留 DNS 路徑不同的可能性,不要直接將所有請求改成同一策略。
Wi-Fi 正常、行動網路失敗,是協定不支援嗎?
先使用同一台伺服器和同一個網址重新測試,並確認行動數據權限、Settings → On Demand 及 Scene 設定。不同網路對連接埠或 UDP 的處理方式可能不同;不能只憑一次失敗就判定協定本身不受支援。
網頁正常,但通話或影片異常怎麼辦?
確認相關服務是否使用 UDP,再檢查目前協定、伺服器端及服務權限是否支援所需的轉送。Hysteria2 的傳輸依賴 UDP;其他協定的 UDP 能力也須依伺服器端設定判斷,不能只看協定名稱。
訂閱更新成功,就能排除服務問題嗎?
不能。更新成功只代表訂閱內容已成功取得並處理。返回 Home 檢查目前伺服器的位址、驗證參數及連線狀態;若要向自己的服務商回報,請提供已去識別化的錯誤階段、網路類型及重現步驟。
收尾:還原設定並保留可重現的記錄
找出問題後,只保留已驗證且必要的變更。重新啟用暫時關閉的 On Demand,確認 Global Routing 已恢復日常選項,再分別測試基本網頁和先前失敗的目標。如果問題只在特定網路或某台伺服器上重現,請將這項條件記錄下來,不要將結論擴大到整個 App。
- 記錄環境:Wi-Fi 或行動網路、是否已完成網路登入,以及關閉連線時能否存取基本網頁。
- 記錄選項:目前伺服器的自訂名稱、Global Routing 選項、Config 檔案名稱;不要記錄密碼或訂閱憑證。
- 記錄故障階段:解析失敗、連線逾時、驗證失敗,或命中非預期策略,並保留已去識別化的原始錯誤訊息。
- 記錄變更:本次只修改了哪個項目、同一目標是否恢復,以及還原原設定後能否再次重現。
需要逐項比對欄位時,可參閱設定欄位說明;首次匯入或不確定目前設定檔的來源時,請先依入門指南確認操作順序。App 一次性買斷不等於線路方案,App 購買狀態與使用者現有服務的有效狀態須分別確認。