先釐清測速失敗還是實際連線失敗
Clash 用戶端顯示「逾時」,通常表示對指定測試網址送出的要求未能在時限內完成。這不代表節點伺服器一定離線,也不能只憑這項結果判定訂閱失效。測試網址、DNS、節點交握或目標網站回應的任何環節,都可能導致測速逾時。
本文依序檢查「本機網路 → 系統時間 → 核心與連接埠 → 流量路徑 → DNS → 協定參數 → 伺服器」。適用於原版 Clash 設定,以及使用 Clash Meta(現稱 mihomo)核心的用戶端;支援哪些欄位,請以目前執行的核心為準。
| 觀察結果 | 優先檢查 | 下一步確認 |
|---|---|---|
| 測速逾時,但網頁能開啟 | 測試網址與測試時限 | 確認網頁流量確實經過該節點,而非直接連線 |
| 所有節點都失敗 | 本機網路、核心、DNS | 查看同一時段最早出現的錯誤 |
| 只有一個節點失敗 | 節點參數與伺服器狀態 | 比對同一訂閱中的正常節點 |
| 測速正常,但應用程式連線失敗 | 系統代理、規則、TUN | 在連線頁確認實際出口 |
| 網頁正常,但遊戲或通話失敗 | UDP 支援與流量接管 | 區分 TCP 測試與實際 UDP 流量 |
第一步:檢查本機網路與系統時間
先建立直接連線的基準
- 記下目前設定後,關閉用戶端的系統代理與 TUN。手機還要確認對應的 VPN 連線已中斷,避免離開應用程式畫面後,通道仍在背景執行。
- 開啟平常可直接連線的網站。若使用飯店、校園或公共 Wi-Fi,且需要登入認證頁面,請先完成登入;看到 Wi-Fi 圖示不代表已連上網際網路。
- 改用手機熱點重測。維持同一台裝置、同一份設定與同一個節點,只更換網路連線。
若關閉代理後仍無法直接連線,應先處理本機網路。若家用寬頻連不上、但手機熱點正常,問題較可能出在網路業者的 DNS、路由或 UDP 政策;仍須查看記錄確認,不能直接推斷伺服器封鎖了連線。作業系統的網路診斷也可能仰賴特定探測網址,因此「沒有網際網路」的提示不宜作為唯一判斷依據。
先校正時間,再處理憑證錯誤
TLS 憑證驗證仰賴系統時間。Windows 11 可前往「設定」→「時間與語言」→「日期與時間」,開啟自動設定時間並同步;macOS 可前往「系統設定」→「一般」→「日期與時間」。除了時區,也要確認實際日期、年份與分鐘是否正確。
若記錄出現 certificate has expired or is not yet valid,請先比對本機時間與伺服器憑證的有效期限。不要把停用憑證驗證當成通用解法:這會降低伺服器身分驗證的安全性,也無法修正密碼錯誤、連接埠不通或協定不相符等問題。
第二步:確認核心正在執行,並檢查本機連接埠
圖形介面能啟動,不代表代理核心已成功載入設定。先在用戶端記錄中查看設定解析錯誤、核心反覆退出,或 address already in use。若設定未載入,節點清單可能仍顯示快取內容,但本機代理連接埠實際上並未監聽。
區分代理連接埠與控制連接埠
port:HTTP 代理連接埠。socks-port:SOCKS 代理連接埠。mixed-port:同時接受 HTTP 與 SOCKS 代理要求的連接埠。external-controller:控制 API 的監聽位址,不應填入瀏覽器的代理設定。
若目前生效的設定使用 mixed-port: 7890,可執行以下命令確認監聽中的程序。Windows 請使用 PowerShell;macOS 請使用終端機。若沒有任何輸出,應回頭查看核心記錄,而非繼續更換節點。
# Windows PowerShell
Get-NetTCPConnection -LocalPort 7890 -State Listen |
Select-Object LocalAddress, LocalPort, OwningProcess
# macOS
lsof -nP -iTCP:7890 -sTCP:LISTEN
Windows 也可使用 Get-Process -Id 進程号 查詢所屬程式,將「進程号」替換為上一步取得的實際數字。若舊版用戶端占用了連接埠,請關閉舊執行個體或更換連接埠,並同步修改系統代理設定。不要結束來源不明的系統程序,也不要同時執行兩套 TUN 流量接管。
第三步:確認要求經過哪個策略與節點
系統代理只會影響遵循該設定的應用程式;部分命令列程式、遊戲和使用自有網路堆疊的應用程式會忽略它。TUN 則透過虛擬網路介面接管符合路由條件的流量,實際效果還會受到路由、權限與排除項目影響。兩者不是同一個開關,也不能因為「系統代理已開啟」就認定所有流量都已進入核心。
透過明確指定代理的要求建立對照
先在用戶端選取要測試的節點,確認相關策略群組確實指向該節點,再送出一筆明確指定 HTTP 代理的要求。以下命令會連線至本機 7890 連接埠,連線時限為 10 秒、總時限為 15 秒;Windows 請使用 curl.exe,macOS 與 Linux 可使用 curl。
curl.exe --proxy http://127.0.0.1:7890 --connect-timeout 10 --max-time 15 -I https://example.com/
測試網址是為了產生可重複的要求,不能單獨用來判定節點是否可用。收到 HTTP 狀態碼,表示該次要求至少完成了相應階段;403 可能是目標網站拒絕存取,不代表代理連線失敗。若顯示無法連線至 127.0.0.1:7890,優先檢查本機是否有監聽;若代理通道已建立才發生錯誤,再檢查交握、DNS 與遠端回應。
- 開啟用戶端的連線頁面,找到剛才測試的目標網域。
- 確認命中的規則、策略群組與最終節點,排除要求實際上走
DIRECT的可能。 - 若連線頁面完全沒有這筆要求,先檢查流量入口與連接埠;連線記錄可能很快消失,可搭配記錄檔觀察。
- 必要時可短暫切換至全域模式,明確選取測試節點進行比對;完成後再切回規則模式。
若明確指定代理的要求成功、但某個應用程式仍失敗,排查重點應轉向應用程式的代理設定與 TUN 路由,而不是一再更新訂閱。若只有開啟 TUN 後才出問題,可先關閉 TUN、保留明確代理測試,再逐項檢查管理員權限、其他 VPN、虛擬網卡與路由衝突。
第四步:將 DNS 問題拆成兩條解析路徑
代理連線至少可能涉及兩種網域:節點伺服器的網域,以及使用者要存取的目標網域。前者解析失敗,代理通道就無法建立;後者解析失敗,則可能出現節點交握正常、部分網站卻無法開啟的情況。兩者使用的解析路徑不一定相同。
節點網域:先確保代理通道能夠建立
檢查記錄中的解析失敗網域是否與節點的 server 相同。mihomo 的 proxy-server-nameserver 可指定用來解析節點網域的 DNS 伺服器;default-nameserver 則與解析 DNS 伺服器本身的網域時所需的引導解析有關。不要完全仰賴尚未建立的同一條代理連線來解析節點網域,否則可能形成循環依賴。
Windows 的 Resolve-DnsName、macOS 的 dig 可用來檢查系統解析結果,但這只能反映該工具使用的解析路徑,不能證明 mihomo 內建 DNS 會回傳相同結果。診斷時應一併檢查生效設定中的 DNS 欄位與核心記錄。
目標網域:檢查 Fake-IP、DNS 劫持與應用程式快取
fake-ip模式可能會回傳198.18.0.0/16範圍內的合成 IP 位址;這類位址並非網站的實際伺服器位址。- Fake-IP 位址必須由相應的核心接管,並映射回原本的網域。切換用戶端後殘留的系統或應用程式 DNS 快取,可能讓要求走上錯誤路徑。
- TUN 的 DNS 劫持能接管符合設定的 DNS 要求,但應用程式內建的 DoH 不一定會經過一般的 53 埠。
- 請依實際設定檢查
nameserver-policy、nameserver與fallback;新增更多 DNS 伺服器,不代表解析一定更快或更可靠。
更換 DNS 模式後,請重新載入設定並重新啟動受影響的應用程式。Windows 可視需要執行 ipconfig /flushdns 清除系統 DNS 快取,但這不會清除所有瀏覽器內部快取。若停用 IPv6 後恢復正常,只能表示仍需檢查 AAAA 解析、IPv6 出口或路由,不能因此認定所有情況都該停用 IPv6。
第五步:核對協定參數與核心支援範圍
確認本機連接埠正常、要求確實經過目標節點,且節點網域可解析後,再逐項核對協定設定。YAML 解析器能讀取設定,只代表語法正確;若目前核心不支援相關欄位、驗證資訊已過期,或伺服器監聽方式有變,仍可能無法連線。
| 參數類別 | 核對項目 | 常見誤判 |
|---|---|---|
| 伺服器位址與連接埠 | server、port | 訂閱更新後仍使用舊連接埠 |
| 驗證與加密 | UUID、密碼、加密方式 | 複製時多了空格,或沿用舊憑證 |
| TLS | SNI、憑證、ALPN | 把節點顯示名稱誤當成 SNI |
| 傳輸層 | WebSocket 路徑、Host、gRPC 服務名稱 | 只複製伺服器位址與密碼,漏掉傳輸參數 |
| Reality | 公鑰、short-id、伺服器名稱 | 混用其他節點的參數 |
| UDP 協定 | 核心支援、網路是否放行、伺服器是否監聽 | 以 TCP 連接埠測試推斷 UDP 一定正常 |
例如 Hysteria2、TUIC 等採用 UDP 的連線,可能在限制 UDP 的網路中失敗,即使同一網路上的 TCP 節點仍可正常連線。TCP 連接埠可連通,不代表這類協定已完成完整交握。反過來說,一般 HTTP 延遲測試成功,也不代表節點支援遊戲或語音所需的 UDP 轉發。
記下用戶端版本與實際核心版本,兩者的版本號並不相同。原版 Clash 與 mihomo 支援的協定範圍不同,較舊的核心也可能無法辨識較新的欄位。若出現 unsupported proxy type 或欄位解析錯誤,應檢查設定格式與核心支援能力,而不是延長測速時限。
第六步:判斷節點、測試網址與伺服器狀態
盡量只變更少數條件進行交叉測試
- 同一台裝置、同一個網路,更換節點:若只有一個節點失敗,優先確認該節點的參數、流量額度與伺服器維護狀態。
- 同一台裝置、同一個節點,更換網路:若手機熱點正常、寬頻失敗,接著檢查網路連線路徑與協定限制。
- 同一個網路、同一個節點,更換裝置:若另一台裝置正常,請檢查故障裝置上的覆寫設定、核心、代理入口與快取。
- 同一個節點,更換目標網站:若只有一個測試網址失敗,請檢查目標網站的政策與測試 URL,避免把單一網站異常誤判為節點離線。
測速時限也可作為診斷條件:例如暫時將 5 秒調整為 10 秒,觀察是否只是連線建立較慢。這無法修復驗證錯誤、失效憑證或遭拒絕的連接埠;若只有延長時限後偶爾成功,仍須檢查封包遺失、網路壅塞與交握記錄。
訂閱更新成功只代表設定已成功取得,不代表每個節點都在線。請確認服務供應商的帳戶狀態、流量額度與維護公告;更新後也要確認目前啟用的設定、節點參數與更新時間確實有變化。不要密集連續測速來判斷故障;少量重測並記下時間,更有助於找出問題。
整理記錄:保留錯誤階段,遮蔽連線憑證
將記錄層級暫時調整為 debug,重現一次故障並記下時間,之後再恢復平常使用的記錄層級。除錯記錄可能包含存取網域與連線細節,提供給他人時只截取相關時段。
connection refused:通常表示連線遭到明確拒絕;先確認錯誤指向本機代理連接埠,還是遠端節點連接埠。i/o timeout、context deadline exceeded:表示某個階段超過時限,須比對前後記錄,判斷發生在解析、撥號或要求處理階段。no such host:優先找出解析失敗的確切網域,以及該網域使用哪一條 DNS 路徑。authentication failed:優先確認憑證與帳戶狀態;重新安裝用戶端通常無法改變伺服器的驗證結果。EOF、連線重設:表示連線提前中斷,只看單獨一行無法判定原因,還需比對交握階段與伺服器記錄。
排查完成後,請恢復規則模式、記錄層級與暫時變更,並保留一份可重現的紀錄。下次若再遇到「測速逾時」,就能從已確認正常的網路、連接埠與 DNS 基準繼續查起,不必一開始就重新安裝。代理入口與匯入設定的步驟可參考快速入門,常見設定問題則可查閱說明中心。