適用於 Shadowrocket 已連線、Connectivity Test 有結果,但網域無法連線或部分網頁無法開啟的情況。先區分網域解析、規則選擇與連線出站,再檢查 Settings → DNS 和 Config 中的覆寫設定;每次只修改一項,並比較同一網域在不同網路下的結果,判斷問題範圍。本文以使用者已有自己的服務商與設定為前提,不涉及取得連線服務。
一、延遲正常為什麼不能證明 DNS 正常
Shadowrocket(小火箭)的 Connectivity Test 用來檢查所選測試方式的連線狀況。結果中的時間只反映該次測試涉及的目標與路徑;即使測試成功,也不能據此推論所有網站的網域都能解析、所有出站連線都能使用,或 HTTPS 交握一定成功。應先確認測試方式與目標,再解讀結果,不能只看單一延遲數字。
開啟網頁還需要取得網域對應的位址、選擇連線策略、建立連線並完成 TLS 交握。以下是排查問題時的邏輯拆解,不代表用戶端內部各環節一定嚴格依序執行;例如,網域規則可在取得 IP 前比對,而 IP 類規則可能需要解析結果。
判斷 DNS 故障時,應尋找解析失敗的證據。瀏覽器明確顯示找不到伺服器,或系統查詢工具無法取得位址,比「網頁一直載入」更能指向問題所在。如果已取得位址,卻在連線或憑證驗證階段失敗,應改查出站連線、規則、系統時間或網站本身。
- 所有網域都無法使用:先檢查解析器是否可連線、目前網路是否需要登入網頁進行認證,以及 VPN 是否確實維持連線。
- 只有少數網域無法使用:先檢查網域拼寫、網域專用 DNS、規則比對結果與目標網站狀態。
- 網頁文字有顯示,但圖片無法載入:記下載入失敗資源的網域。主網站、圖片與 API 可能使用不同網域和規則。
- 直接連線到 IP 也失敗:不能因此立即排除 DNS,也不能直接確認是連線路徑故障。HTTPS 網站通常需要正確的網域、SNI 與憑證,直接連線到 IP 並非可靠的比較方式。
二、先記錄原始狀態,再進行三組比較
開始修改前,記錄 Home → Global Routing 目前的選項、正在使用的伺服器、Config 中啟用的設定,以及 Settings → DNS 的現有值。複製一份設定作為排查副本,不要在唯一一份設定上接連修改。訂閱內容可能在更新時被重新寫入,因此也要分清楚手動設定與服務商設定中的項目。
- 相同網路比較:在目前的 Wi-Fi 下,分別測試一個原本可直接連線的網站和一個故障網站。記錄完整錯誤訊息,不要只寫「無法開啟」。如需中斷連線作比較,只測試允許直接連線的網站,並留意 Settings → On Demand 是否會依條件重新連線。
- 更換網路比較:維持伺服器、Config 和 DNS 不變,將 Wi-Fi 換成行動網路,或改用另一個已知可正常使用的網路。如果只有某個 Wi-Fi 發生問題,優先檢查該網路的認證頁面、DNS 限制或路由器設定。
- 切換模式比較:先記錄原本的選項,再於 Home → Global Routing 暫時比較 Config 與 Proxy。Proxy 可用來比較一般網頁流量經代理出站後的狀況,但不代表所有 DNS 請求都會自動經由代理;測試後請恢復原選項。
| Global Routing 選項 | 排查時的用途 | 注意事項 |
|---|---|---|
| Config | 依目前設定中的規則選擇策略 | 檢查第一條符合的規則及其對應策略 |
| Proxy | 比較一般網頁流量經代理出站後的狀況 | 無法據此確認 DNS 請求實際使用的出口 |
| Direct | 比較直接連線時的狀況 | 目標網站必須允許目前網路直接連線 |
| Scene | 依已設定的情境邏輯執行 | 先確認情境內容,不要將其視為固定的代理策略 |
判斷:只有 Config 失敗時,優先檢查規則差異
如果同一網路、同一伺服器和同一網域在 Proxy 下可以使用、在 Config 下卻失敗,先檢查 Config 的規則比對結果與 DNS 覆寫設定。不要同時更換協定、解析器和伺服器,否則無法確認是哪項修改奏效。
三、Settings → DNS:位址、預設值與建議設定
前往 Settings → DNS,先確認目前使用的是系統解析方式還是自訂解析器。這裡無法為所有裝置指定同一個「預設位址」:平台、現有設定及匯入的設定都可能影響實際生效值。請以裝置目前顯示的頁面和啟用中的 Config 為準;如果曾自訂設定,先保存原值,再逐項比較。
解析器位址決定要向哪個伺服器查詢;傳輸方式決定查詢如何傳送;網域專用設定則決定特定網域是否改用其他解析路徑。這三項應分開檢查。更換解析器不會自動修正錯誤的 PROXY 策略,也無法讓無法連線的代理伺服器恢復正常。
| 檢查項目 | 用途與現況確認 | 排查時的建議設定或操作 |
|---|---|---|
| 系統 DNS | 使用目前網路提供的解析資訊,結果可能因 Wi-Fi 或行動網路而異 | 作為基準比較;內部網域優先使用網路管理員指定的解析器 |
| 自訂 DNS 位址 | 由使用者指定查詢目標;不可假設匯入設定中的位址在目前網路可連線 | 一次只測試一個已知可連線的解析器,例如使用 1.1.1.1 或 8.8.8.8 作為單獨比較,不要將兩者視為通用最佳選擇 |
| 加密 DNS | 查詢本身需要建立加密連線;服務端網域也可能需要先進行解析 | 保留服務商提供的完整位址與格式;若發生逾時,檢查連接埠、啟動解析與出站路徑 |
| 網域專用 DNS 與 hosts | 特定網域可能略過通用解析器,或直接使用靜態對應 | 在排查副本中移除該網域的覆寫設定後進行比較;不要清除與故障無關的內部網路設定 |
新增多個 DNS 位址不代表問題就會自動修復。不同實作的查詢與回退邏輯可能不同,不能假設清單中的第二個位址一定會在第一個逾時後接手。先用單一解析器確認是否可連線,再依實際需求還原設定。
如果加密 DNS 的服務端使用網域名稱,而解析該網域又依賴尚未連線的服務,可能會造成啟動階段的相依問題。此時應確認設定提供者要求的啟動解析與路由設定,而不是關閉憑證驗證。不要任意將加密 DNS 位址換成 IP,否則可能造成憑證名稱比對失敗。
四、檢查 Config 中的 DNS 覆寫設定與規則順序
只修改 Settings → DNS 後問題仍未改善,就需要回到 Config 檢查啟用設定中的 [General]、[Host] 和 [Rule]。其中與 DNS 有關的選項、網域對應和規則可能共同改變實際連線路徑。不要假設設定頁面顯示的位址就是該網域最終使用的解析器;應搭配設定內容和可用的請求記錄進行確認。
規則會由上而下比對,符合後便使用對應策略。以下僅示範順序,並非可直接取代現有設定的完整檔案;PROXY 必須對應目前設定中可用的策略或策略群組,範例網域也應換成實際排查的對象。
[Rule]
DOMAIN-SUFFIX,example.com,PROXY
IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
GEOIP,CN,DIRECT
FINAL,PROXY
DOMAIN-SUFFIX,example.com,PROXY:符合該網域及其子網域。如果前面已有相關規則,新增的後續規則可能不會生效。IP-CIDR,192.168.0.0/16,DIRECT,no-resolve:為此私人位址範圍指定 DIRECT;no-resolve表示不會為了比對這條 IP 規則而主動觸發網域解析,並非關閉整個用戶端的 DNS。GEOIP,CN,DIRECT:依 IP 地理位置資料庫進行判斷。結果會受 IP 位址與資料庫影響,應以實際解析的 IP 核對規則比對結果。FINAL,PROXY:前面的規則都未符合時使用的預設策略。它無法取代 DNS 設定,也無法修正錯誤的網域對應。
如果某個網域符合 REJECT,請確認是否有意啟用相關過濾規則。若符合 DIRECT 後無法連線,但經代理出站即可使用,應調整該網域的策略,不必先修改所有 DNS。至於公司內部網域,通常需要搭配內部 DNS 與 DIRECT;公共解析器無法取代內部網域服務。
五、依錯誤原文區分解析、連線與憑證問題
以下是瀏覽器或命令列工具可能顯示的原始訊息,並非 Shadowrocket 所有平台都固定使用的提示。記下錯誤出現的應用程式、目標網域和時間,再與用戶端請求記錄比對。不要把瀏覽器的所有錯誤都歸因於 DNS 失敗。
錯誤:ERR_NAME_NOT_RESOLVED
原因與處理方式:瀏覽器未取得可用的網域解析結果。先確認網域拼寫與本機對應,再以同一網域比較系統 DNS 和一個已知可連線的自訂解析器。
錯誤:DNS_PROBE_FINISHED_NXDOMAIN
原因與處理方式:瀏覽器的解析診斷指出網域不存在,或未取得有效結果。確認完整網域名稱,並比較不同解析器的回應;若都回傳 NXDOMAIN,應向網域或服務維護方確認記錄,不要反覆切換伺服器。
錯誤:connection timed out; no servers could be reached
原因與處理方式:命令列 DNS 查詢未能在時限內收到伺服器回應。檢查查詢目標、目前網路到解析器的路徑及相關連接埠限制,再更換網路測試。
錯誤:ERR_CONNECTION_TIMED_OUT
原因與處理方式:連線階段逾時,僅憑這則訊息無法確認是 DNS 故障。先確認是否已取得位址,再檢查實際符合的 DIRECT 或 PROXY 路徑。
錯誤:ERR_CERT_DATE_INVALID
原因與處理方式:憑證有效期間檢查失敗,可能與系統時間或網站憑證有關。校正裝置時間並確認網站狀態,不要以關閉憑證驗證的方式處理。
在 Mac、Windows 或 Linux 上,可使用系統內建的 nslookup 作為補充比較。以下的 example.com 是範例網域,請換成實際無法連線的網域。第一個查詢會使用目前工具採用的預設解析器,第二個則指定公共解析器:
nslookup example.com
nslookup example.com 1.1.1.1
查看回應中的查詢伺服器、是否有回傳位址,以及是否出現逾時或 NXDOMAIN。這項工具不一定能重現瀏覽器內建的加密 DNS 或 Shadowrocket 的所有網域策略,因此只能作為比較依據,不能取代用戶端內部查詢結果。如果瀏覽器另有啟用安全 DNS,也應記下此狀態,並在可控制的條件下比較使用系統解析時的結果。
六、修改後的複測與還原順序
DNS 回應可能分別由用戶端、系統和瀏覽器快取。修改設定後,舊連線或舊回應可能持續影響結果,因此不能只重新整理一次網頁就認定修改無效。也不要反覆更新訂閱來清除快取;訂閱更新可能同時變更伺服器與設定,讓比較失去意義。
- 一次儲存一項修改:確認目前啟用的 Config 沒有切換,並記錄修改前後的 DNS 或規則值。
- 重新建立連線:確認可以短暫中斷後,關閉再開啟 Home 的連線開關;留意 Settings → On Demand 是否會自動重新連線。
- 重新送出請求:關閉故障網頁後重新開啟,必要時結束並重新啟動瀏覽器。無痕視窗有助於排除部分網站資料造成的影響,但不保證能清除系統 DNS 快取。
- 重測相同目標:使用相同網域、相同網路和相同的 Global Routing 選項,比較錯誤類型是否改變,再確認原本正常的網站是否仍可正常使用。
- 保留或還原:只有在結果可重複時才保留修改。若沒有改善,就還原原值並繼續檢查下一項,不要疊加多項未經驗證的修改。
結論:從解析失敗變成連線逾時,應改查出站連線
如果複測已能取得位址,連線卻仍然逾時,下一步應檢查規則比對結果與實際出口,而不是繼續新增 DNS 位址。解析成功只是連線流程中的一個環節。
七、DNS 排查常見問題
有延遲數字,為什麼所有網頁還是無法開啟?
先確認 Connectivity Test 的測試方式與目標,再檢查 Home 的連線狀態和 Global Routing。前往 Settings → DNS 記錄目前的解析方式,並以一個已知可連線的解析器作比較;同時確認目前的 Wi-Fi 是否需要透過系統瀏覽器完成認證。
換成公共 DNS 後,公司內部網頁反而無法開啟?
公共解析器通常沒有公司內部網域的記錄。請還原網路管理員指定的內部 DNS,並檢查該網域的專用解析設定與 DIRECT 路徑。不要為了修復外部網站而統一覆寫所有內部網域解析。
只有開啟 Shadowrocket 才會失敗,需要重新安裝嗎?
先保留設定,在 Home → Global Routing 比較 Config 與 Proxy,再檢查 Config 中的 DNS 覆寫、hosts 和第一條符合的規則。重新安裝無法說明是哪項設定導致故障,也可能遺失排查所需的原始狀態。
必須換成另一種協定才能修好 DNS 嗎?
Shadowsocks、VMess、VLESS、Trojan、Hysteria2 和 WireGuard 的連線參數各不相同,但排查 DNS 不能只靠切換協定。先確認解析是否成功;只有證據指向特定傳輸路徑無法連線時,再依自己的服務商提供的有效參數進行比較,不能只修改協定名稱。
訂閱剛更新就發生問題,應提供哪些資料給服務商?
提供無法連線的網域、完整錯誤訊息、網路類型、Global Routing 選項,以及更新前後 DNS 和規則的差異。提交截圖或記錄前,請移除完整訂閱網址、權杖、密碼和個人存取記錄;不要公開含有憑證資料的設定檔。
如需進一步查閱,可前往規則手冊確認比對順序,或到連線問題說明繼續區分解析與出站故障。本網站不提供、不銷售、不推薦節點或訂閱;帳號狀態與伺服器端設定相關問題,請向自己的服務商確認。
依裝置取得 Shadowrocket,繼續檢查設定
iPhone / iPad 版需透過 App Store 一次性付費 $2.99;Mac(Apple 晶片 / Intel)、Windows、Android 和 Linux 版免費。iPhone / iPad 的系統需求以 App Store 頁面標示為準。下載指南依平台列出取得與安裝步驟;若已安裝用戶端,可直接參閱快速入門,確認匯入設定的流程。
用戶端買斷 ≠ 連線服務方案。Shadowrocket 是閉源商業應用程式,用戶端的取得方式與使用者已有的連線服務分別管理。