適用於 Shadowrocket(小火箭)已顯示測試延遲,但 Safari 或其他 App 仍無法開啟網頁的情況。先區分 DNS、連線逾時與 TLS 錯誤,再確認 Home → Global Routing 和 Config 中的 dns-server,透過相同目標、每次只改一項、切換網路來找出問題。本文以使用者已有自己的服務商與訂閱為前提,不涉及服務來源選擇。
一、延遲正常不代表網域解析正常
瀏覽網頁通常會經過網域解析、建立連線、TLS 交握及接收內容。Home 中的測試數值只反映所選測試方式涵蓋的環節;TCP 連通或某個測試位址可連線,不代表目標網站的網域一定能解析,也不代表該網站的 HTTPS 請求一定成功。先記下 Connectivity Test 使用的測試方式,避免直接比較不同測試的結果。
DNS 的作用是將網域轉換為 IP 位址。即使代理伺服器本身可連線,裝置使用的解析器若無法連線、回傳空答案,或網域解析結果不適合目前的出口,仍可能無法開啟網頁。反之,取得 IP 後發生的連線逾時,也不能直接歸類為 DNS 故障。
判斷方式:先找出失敗階段,再修改解析器
如果錯誤明確指向憑證或 TLS 交握,先確認裝置時間、目標網域和連線出口;只有出現名稱解析錯誤、DNS 逾時或異常答案時,才優先沿著 DNS 路徑排查。通訊埠能連線,不代表解析服務就能正常回應。
二、先固定 Home 中的測試條件
排查時使用相同的目標網域和同一份既有設定。不要同時更換伺服器、修改規則、更新訂閱及更換 DNS,否則恢復後無法判斷是哪項變更生效。優先選擇平常常用且確認網址拼寫正確的網站,再增加另一個不同網域作為對照。
- 記錄目前狀態。在 Home 記下連線開關狀態、目前選取的伺服器、Global Routing 模式,以及 Connectivity Test 的測試方式與結果。記錄時不要寫入認證資料。
- 確認路由模式。Global Routing 中的 Config 會依目前設定中的規則處理流量;Proxy 會將一般流量交由所選代理處理;Direct 可用來直接連線對照;Scene 則依已設定的場景運作。不能只憑 Scene 名稱推斷目前的實際策略,應確認場景內容。
- 短暫進行對照測試。在目前網路允許連線的前提下,使用同一網域比較 Direct 與 Proxy。某個模式失敗只表示連線路徑可能不同,不能單獨證明是 DNS 問題。完成後請恢復原本的模式。
- 確認沒有自動介入。檢查 Settings → On Demand。進行手動對照前,可先記錄並暫時停用相關觸發條件,避免手動中斷後又因隨需連線而重新連上;測試完成後再恢復設定。
- 切換網路重新測試。在 Wi-Fi 與行動網路間切換後,使用相同設定重新測試。若只有一種網路失敗,應優先檢查該網路的 DNS 連線能力、登入認證或存取限制。
如果 Wi-Fi 需要先完成網頁登入認證,請先完成認證再測試。若所有網站都無法開啟,而且目前伺服器的網域也無法解析,應先處理連線入口的解析問題;此時反覆切換網站規則通常無濟於事。
三、dns-server 的意義與最小幅度修改
Config 管理的是設定檔,不是訂閱伺服器清單本身。修改前先備份目前的檔案,確認正在使用哪份設定,再進入該檔案的編輯畫面。以下是用來說明欄位位置的最小片段,只替換現有檔案中對應的欄位,不要用它覆蓋整份設定。
[General]
dns-server = system
| 欄位或值 | 實際意義 | 排查注意事項 |
|---|---|---|
[General] | 設定檔的一般設定區段 | 修改既有區段,避免重複加入同名設定造成混淆。 |
dns-server | 指定設定使用的 DNS 解析器 | 填入目前版本支援的值;這不是代理伺服器位址,也不是訂閱網址。 |
system | 使用目前系統網路提供的 DNS | 適合用來建立基準對照,但結果可能因 Wi-Fi、行動網路或網路描述檔而異。 |
| 解析器 IP 位址 | 直接指定傳統 DNS 伺服器 | 請確認位址正確且服務可連線;不可將網站 IP 或代理通訊埠當作 DNS 服務填入。 |
| DoH 位址 | 透過 HTTPS 請求取得 DNS 答案 | 使用目前版本支援的格式與完整端點;一般網站首頁不能取代 DoH 端點。 |
先使用 dns-server = system 建立對照。如果原設定指定了解析器,改為 system 後問題便排除,請檢查原解析器的連線能力、位址格式與連線路徑,再決定是否保留變更。若 system 仍然失敗,也不能直接判定是 App 異常:系統提供的 DNS 可能無法連線,或該解析器沒有目標網域的有效答案。
- 每次只修改一個欄位,儲存後確認該 Config 仍是目前使用的檔案。
- 需要重新載入才會生效的設定,請先中斷連線再重新連線後測試;保留原值,以便失敗時還原。
- 使用既有、可信且確認可連線的解析器進行對照,不要從來源不明的設定中複製陌生端點。
- 加密 DNS 仍須仰賴底層網路可連線;若端點使用網域名稱,也要考量能否完成首次解析與憑證驗證。
四、依錯誤原文判斷處理方向
以下是網路診斷中可能出現的標準錯誤文字或系統錯誤碼,不保證 Shadowrocket 在所有介面都會顯示相同提示。記錄時應一併保留錯誤來源、目標網域及失敗階段。App 內提示、Safari 提示與遠端伺服器記錄的措辭可能不同,不能只憑「無法開啟」就判定原因。
錯誤:NSURLErrorDomain Code=-1003
原因:Apple URL 載入系統無法找到指定主機,常見原因包括名稱解析失敗或網域拼寫錯誤。
解決方式:先檢查網域拼寫,再用相同網域比較 system 與原解析器,並確認問題是否只在特定網路發生。
錯誤:NXDOMAIN
原因:DNS 回應表示查詢的名稱不存在;這與「解析器沒有回應」不同,也可能與所用解析器的策略有關。
解決方式:確認完整主機名稱,並使用另一個既有且可信的解析器重新查詢;若結果相同,請向網域管理者確認紀錄。
錯誤:SERVFAIL
原因:解析器無法完成查詢,可能與上游故障、權威伺服器異常或 DNSSEC 驗證失敗有關。
解決方式:比較不同網路和解析器回傳的答案,並記下發生時間;不要將其視為網域永久不存在而直接改寫 Host。
錯誤:NSURLErrorDomain Code=-1001
原因:請求逾時,可能發生在解析、連線或等待回應階段;錯誤碼本身無法證明是 DNS 故障。
解決方式:參考診斷記錄,確認是否已取得目標 IP;若已取得 IP,請繼續檢查路由、連線及目標服務的回應。
不要把「沒有 AAAA 紀錄」直接解讀為整個網域都無法解析:網域仍可能有可用的 A 紀錄。反過來說,收到 AAAA 答案也不代表目前網路的 IPv6 路徑正常。若只有部分網域連線失敗,應分別檢查解析答案和實際連線使用的位址系列,而非一次修改所有 IPv6 設定。
五、解析成功後檢查規則與覆寫項目
DNS 查詢成功只代表已取得答案,網站請求仍須採用正確的策略。Global Routing 設為 Config 時,規則通常會依序比對,第一條符合的規則會決定該請求的處理方式。若規則順序、策略名稱或兜底規則設定錯誤,已有解析答案的請求也可能走上無法使用的路徑。
| 檢查項目 | 用途 | 具體排查方式 |
|---|---|---|
DOMAIN-SUFFIX | 比對指定網域及其子網域 | 確認填寫的是網域,而非包含路徑的 URL;並檢查前面是否已有更早符合的規則。 |
IP-CIDR | 依 IP 網段比對 | 檢查目標 IP 是否被較早的網段規則攔截;若有 no-resolve,也要了解該修飾詞的影響。 |
GEOIP | 依 IP 地理資料庫分類比對 | 不要將資料庫分類等同於網站所屬地區;請查看實際命中的策略。 |
FINAL | 處理前面規則皆未命中的請求 | 確認最後採用的是 DIRECT、代理,還是已定義的策略群組。 |
[Host] | 為指定主機提供設定中的解析對應 | 檢查是否留有舊位址;先備份,再移除單一可疑對應進行比較。 |
例如 DOMAIN-SUFFIX,example.com,DIRECT 會將範例網域及其子網域交由 DIRECT 處理;如果該請求只有透過使用者現有的代理路徑才能正常連線,即使解析器回傳正確答案,網頁仍可能無法開啟。此處的 example.com 僅用來示範規則語法,不代表實際測試目標。
判斷方式:已取得目標 IP,就沿著實際命中的策略繼續排查
診斷結果已顯示解析答案時,請先確認該網域命中的規則、最終策略及選用的出口。不要不斷更換 DNS 來修復路由錯誤,也不要為了暫時恢復連線,就把經常變動的網站位址固定寫入 Host。
六、常見問題與復原驗收
更換 DNS 後,為什麼仍顯示相同錯誤?
先在 Config 確認變更已儲存至目前使用的檔案,再中斷連線並重新連線。關閉失敗的頁面後重新送出請求,並留一些時間讓快取更新;若仍然失敗,請記錄新請求的錯誤,不要只看瀏覽器保留的舊頁面。
Wi-Fi 無法開啟網頁,行動網路可以,該改哪裡?
保持伺服器與 Config 不變,先比較兩種網路使用 system DNS 時的情況,並確認 Wi-Fi 是否需要網頁登入認證。若只有該 Wi-Fi 連線失敗,請優先確認網路端的解析與傳輸限制,再調整用戶端欄位。
網頁恢復正常,但訂閱更新仍失敗,該怎麼辦?
訂閱更新會存取另一個 URL,不能等同於網頁瀏覽測試。請檢查自己既有訂閱的網域、有效期限及回傳錯誤;分享記錄前請刪除 token 等認證資料。不要將訂閱 URL 填入 dns-server,也不要以重複更新取代 DNS 對照測試。
可以直接輸入網站 IP,證明 DNS 有問題嗎?
不能作為決定性證據。HTTPS 需要透過網域驗證憑證並選擇網站,同一個 IP 也可能承載多個網站。應保留原網域,根據解析答案與連線階段的記錄找出問題,而不是只看能否開啟 IP 位址頁面。
恢復後不要只開啟一次首頁就結束。請依照以下驗收清單檢查,確認結果可重複後再保留最終變更。若仍需向自己的服務商或網路管理員回報,只要提供已去識別化的證據即可,避免傳送整份設定。
- 功能驗收:重新開啟原先無法連線的網域及另一個對照網域,確認結果不依賴已載入頁面的快取。
- 設定驗收:恢復日常使用的 Global Routing 模式與 On Demand 條件,確認自動連線後仍可正常存取。
- 網路驗收:分別在實際使用的 Wi-Fi 與行動網路上重新測試一次,記錄是否有網路差異。
- 記錄驗收:保留測試時間、網路類型、錯誤原文、解析是否成功、命中策略及唯一變更項目;刪除訂閱 token、密碼及其他認證資訊。