先判斷「已連線」具體代表哪一層
Clash 用戶端中的「系統代理已啟用」、「VPN 已連線」或「核心執行中」,只代表本機代理入口已啟動,不表示遠端節點可用,也不表示瀏覽器流量已進入 Clash。完整鏈路至少包含應用程式、系統代理或 TUN、mihomo 核心、規則比對、DNS、代理節點與目標網站七個環節。任何一層中斷,介面上的開關都可能仍顯示為開啟。
排查時不要同時修改節點、DNS、規則與 TUN。一次只處理一層,並在每個步驟保留可重現的測試結果。建議準備三個目標:一個本地路由器位址、一個可直接連線的網站,以及一個需要透過代理策略存取的網站。如此即可快速判斷問題位於本地網路、直連鏈路還是代理鏈路。
用四種現象縮小範圍
| 現象 | 優先檢查 | 常見故障點 |
|---|---|---|
| 所有網站都無法開啟 | 本地連接埠、系統代理、TUN | 代理連接埠未監聽,或流量被錯誤接管 |
| 直連網站能開啟,代理網站失敗 | 節點、訂閱、策略群組 | 節點失效,或策略群組選中了 DIRECT |
| IP 位址可存取,網域名稱卻無法開啟 | DNS | 解析逾時、DNS 劫持或 Fake-IP 鏈路不完整 |
| 瀏覽器可用,其他應用程式失敗 | TUN、應用程式代理支援 | 應用程式不讀取系統代理,或 UDP 未被接管 |
第一步:確認節點、訂閱與策略群組確實可用
先進入用戶端的代理或策略頁面,找出目前實際承擔流量的策略群組。許多設定的頂層群組名稱是「節點選擇」、「Proxy」或「GLOBAL」,下方還會再套一層自動選擇、故障轉移或地區分組。首頁顯示某個節點名稱,不代表最終出口一定是它;應逐層開啟策略群組,確認鏈路中沒有誤選 DIRECT、REJECT,或選到已失效的子策略群組。
不要只看延遲數字
延遲測試通常會存取設定中的測試 URL。顯示 80 ms 或 200 ms,只能代表該測試當下收到回應。目標網站的連線仍可能因 TLS 交握、線路壅塞、伺服器限流或 UDP 支援差異而失敗。排查時手動選擇一個已知穩定的節點,連續存取兩個不同網域,再觀察連線記錄。
- 延遲顯示「逾時」:先切換到另外兩個不同地區的節點,排除單一節點故障。
- 所有節點同時逾時:檢查本機基礎網路、訂閱期限與節點伺服器的網域解析。
- 延遲正常但網頁載入失敗:繼續查看策略比對、DNS 與 TLS 錯誤,不要反覆測速。
- 只有 UDP 應用程式失敗:節點協定或伺服器可能沒有提供可用的 UDP 轉發,也可能是 TUN 設定未接管 UDP。
重新擷取訂閱並核對更新時間
訂閱過期不一定會顯示為「匯入失敗」。用戶端可能繼續保留舊設定,介面仍能顯示節點清單。進入「設定」→「訂閱」或「Profiles」頁面,手動執行更新,記錄更新後的時間與回傳資訊。若狀態碼為 401 或 403,應檢查訂閱權限;若發生逾時,先用直連網路開啟訂閱網域;若回傳內容無法解析,可能取得的是登入頁、提示頁或格式不相容的文字。
更新後確認目前啟用的是新設定,而不是清單中同名的舊副本。部分桌面用戶端需要在設定清單中再次點選啟用。若設定使用 provider,也應檢查 provider 的更新時間,因為主設定更新成功不代表遠端節點集合也已同步。
第二步:檢查本地代理連接埠與系統代理
桌面端最常見的故障點是:核心監聽在某個連接埠,作業系統或瀏覽器卻指向另一個連接埠。常見設定會使用 HTTP 連接埠 7890、SOCKS5 連接埠 7891,或只啟用一個 mixed-port,例如 7890。連接埠號並非固定標準,必須以目前設定與用戶端設定頁顯示的值為準。
先繞過瀏覽器,直接測試本地連接埠
在 Windows PowerShell、macOS 終端機或 Linux shell 中,可以使用 curl 指定代理。以下假設 mixed-port 為 7890:
curl -I --max-time 10 -x http://127.0.0.1:7890 https://example.com
curl -I --max-time 10 --proxy socks5h://127.0.0.1:7891 https://example.com
如果回傳 HTTP 回應標頭,表示應用程式到本地代理、代理到目標網站的基本鏈路已連通。若立即出現「Connection refused」,通常是連接埠未監聽或輸入錯誤;等待 10 秒後逾時,則繼續查看節點與 DNS;如果 HTTP 代理成功而 SOCKS5 失敗,請核對設定是否確實啟用了 socks-port。
網路正常時,本地代理請求通常會在 0.2 至 3 秒內回傳回應標頭。這個範圍不是節點品質標準,但若每次都穩定卡到 10 秒後逾時,就應查看核心記錄,而不是繼續等待瀏覽器自行恢復。
核對系統中的實際代理位址
- Windows 11 24H2:開啟「設定」→「網路和網際網路」→「代理」,檢查「使用代理伺服器」的位址與連接埠。常見位址是 127.0.0.1,連接埠應與用戶端一致。
- macOS 15:開啟「系統設定」→「網路」→目前網路→「詳細資訊」→「代理」,檢查網頁代理與安全網頁代理。由用戶端自動管理時,不要再手動填寫另一組連接埠。
- Android 15:Clash 類用戶端通常透過系統 VPN 介面接管流量,不需要在 Wi-Fi 的手動代理中再次填寫 127.0.0.1。
- 瀏覽器:確認沒有同時啟用代理擴充功能。擴充功能指向舊連接埠時,會覆蓋或繞過系統代理。
如果關閉系統代理後可以正常直連,開啟後所有請求卻立即失敗,表示故障點很可能位於本地代理連接埠之後。此時查看記錄中是否出現連線遭拒、交握逾時或找不到策略群組。若關閉系統代理後仍無法存取任何網站,應先修復 Wi-Fi、網路線、閘道或系統 DNS,而不是繼續調整 Clash。
第三步:將 DNS 問題與代理問題分開排查
「IP 可連線、網域名稱無法連線」是典型的 DNS 線索。Clash Meta,也就是目前常見的 mihomo 核心,可以在本地執行網域解析、規則比對與 Fake-IP 對映。只要用戶端漏掉 DNS 劫持、上游解析無法連線或 Fake-IP 流量接管中的任何一環,就可能出現瀏覽器持續轉圈、部分應用程式提示網路無法使用的情況。
先確認網域名稱是否能取得解析結果
在終端機執行系統解析測試。Windows 可使用 nslookup example.com,macOS 與 Linux 可使用 dig example.com。如果設定採用 Fake-IP 模式,取得 198.18.0.0/16 範圍內的對映位址可能是正常現象;這個位址需要繼續進入 mihomo,由核心還原網域名稱並執行規則。看到 198.18.x.x 不應直接判斷為解析錯誤。
真正需要注意的是查詢持續逾時、回傳 SERVFAIL,或系統取得 Fake-IP 後流量沒有進入 TUN。若關閉 TUN 後系統仍快取 Fake-IP,網頁可能暫時無法存取。可先停用代理、清除系統 DNS 快取,再重新啟動核心與 TUN。
核對設定中的 DNS 結構
dns:
enable: true
listen: 0.0.0.0:1053
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.1/16
nameserver:
- https://1.1.1.1/dns-query
fallback:
- tls://8.8.8.8:853
這段範例展示的是欄位關係,不應未經判斷就覆蓋現有訂閱。連接埠 1053 只是常見的本地監聽值。排查時確認 dns.enable 已啟用、監聽連接埠未被其他程式佔用,且上游位址在目前網路中可連線。若設定引用網域形式的 DoH 服務,還要確保用於解析該網域的 bootstrap 路徑可正常運作,避免出現「解析 DNS 伺服器網域又依賴該 DNS 伺服器」的循環。
當記錄中持續出現 DNS timeout 時,可暫時切換到設定提供者建議的另一組上游進行比對。只修改 nameserver,節點、規則與 TUN 保持不變。若切換後立即恢復,問題集中在原本的上游或其存取路徑;若仍然失敗,則檢查 53 連接埠劫持、防火牆與 TUN 路由。
第四步:排除 TUN、系統代理與其他 VPN 的衝突
系統代理主要影響會主動讀取代理設定的應用程式。遊戲、命令列程式、部分商店應用程式與 UDP 流量可能會忽略它。TUN 模式透過虛擬網卡與路由接管更多流量,但也更容易與企業 VPN、虛擬機器網路、容器網路、加速器及安全軟體發生衝突。
用開關組合定位流量接管層
- 先關閉 TUN,只啟用系統代理。測試瀏覽器與前面的 curl 指令。
- 若瀏覽器恢復正常,表示節點與 HTTP 代理大致正常,問題集中在 TUN 路由、DNS 劫持或權限。
- 再關閉系統代理,只啟用 TUN。測試瀏覽器與一個不讀取系統代理的應用程式。
- 若兩者分開啟用都正常、同時啟用卻異常,請檢查用戶端是否重複設定路由,或是否存在兩套 DNS 接管。
- 最後恢復用戶端建議的組合,不要長期依賴反覆切換來掩蓋設定錯誤。
mihomo 的 TUN 設定常見欄位包括 enable、stack、auto-route、auto-detect-interface 與 dns-hijack。不同系統與用戶端支援的 stack 選項可能有所差異。若目前使用 gVisor 時路徑異常,可在用戶端支援的前提下切換至 system 進行比對;修改後需要完整重新啟動核心,而不只是關閉再開啟系統代理。
在 Windows 上啟用服務模式或 TUN 後,虛擬網卡與路由寫入需要相應權限。可在「設定」→「網路和網際網路」→「進階網路設定」中確認虛擬介面卡狀態。macOS 首次使用通常需要在「系統設定」→「一般」→「登入項目與延伸功能」→「網路延伸功能」中允許相關延伸功能。Android 則應確認狀態列有 VPN 標誌,並在系統 VPN 頁面檢查是否有另一個常駐 VPN 佔用唯一介面。
檢查預設網卡識別
筆記型電腦從有線網路切換至 Wi-Fi、連線到手機熱點或喚醒後,預設出口可能會改變。若 auto-detect-interface 未正確識別目前網卡,TUN 流量可能被送回虛擬介面,形成路由迴圈。典型表現是啟用 TUN 後延遲測試全部逾時,關閉後立即恢復。此時先重新啟動核心;仍未恢復時,斷開不使用的虛擬網卡與舊 VPN,再重新建立網路連線。
第五步:從記錄確認規則、交握與連線錯誤
前四步仍未定位問題時,應將記錄層級暫時調整為 info 或 debug。常見用戶端入口位於「設定」→「記錄層級」或「設定」→「參數設定」→「核心」。開啟記錄後只重現一次失敗請求,再立即查看對應網域,不要讓測速與背景更新產生大量無關記錄。
重點辨識這些記錄線索
| 記錄線索 | 含義 | 下一步 |
|---|---|---|
| match DIRECT | 請求被規則判定為直連 | 核對規則順序、規則集更新狀態與目標網域 |
| match REJECT | 請求遭拒絕規則攔截 | 檢查廣告攔截或自訂規則 |
| connection refused | 目標連接埠主動拒絕連線 | 切換節點,檢查伺服器端連接埠與協定參數 |
| i/o timeout | 連線或讀取超過時限 | 區分 DNS、節點伺服器與目標網站的逾時 |
| no such host | 網域名稱解析失敗 | 檢查 nameserver、網路權限與 DNS 劫持 |
| TLS handshake timeout | TLS 交握未能在時限內完成 | 測試其他節點,檢查時間、MTU 與線路品質 |
規則會按照由上而下的順序比對,通常命中第一條後停止。自訂的 DOMAIN-SUFFIX、IP-CIDR 或程序規則若放在通用規則之前,可能會將目標錯誤地送往 DIRECT 或 REJECT。排查時可以暫時選擇全域模式並指定一個可用節點:若全域模式恢復正常,節點與基礎代理鏈路大致正常,問題更可能位於規則或 provider;若全域模式仍然失敗,則繼續檢查節點、DNS 與 TUN。
全域模式只適合短時間比對,不適合作為最終修復方案。確認問題後,應回到規則模式,修正規則集來源、策略群組名稱或自訂覆寫。設定中的策略名稱必須與規則引用完全一致,大小寫、空格與符號差異都可能導致載入錯誤或回退行為。
最後按照固定順序重新測試,避免「碰巧恢復」
完成修改後,先停止核心 5 秒,再重新啟動。接著依照「本地網路、DNS、本地代理連接埠、節點、規則、TUN」的順序驗證。不要只看某個網頁是否開啟,還應測試直連與代理兩類網域、瀏覽器與非瀏覽器應用程式,以及切換 Wi-Fi 後的表現。
- 關閉 Clash,確認基礎網路可以存取本地閘道與直連網站。
- 啟動核心,確認設定載入完成,沒有 YAML 欄位或 provider 錯誤。
- 指定 127.0.0.1 與目前的 mixed-port 執行 curl 測試。
- 確認訂閱更新時間、目前節點與頂層策略群組的選擇。
- 檢查網域解析結果與 DNS 記錄,區分正常 Fake-IP 與實際逾時。
- 先使用系統代理重新測試,再單獨啟用 TUN,確認衝突出現在哪種組合。
- 恢復規則模式,從記錄確認請求命中了預期策略。
如果故障只在公司、校園或飯店網路出現,還應考慮該網路是否限制 UDP、特定連接埠或加密 DNS。使用手機熱點進行一次比對最有效:同一台裝置、同一份設定在熱點上正常,卻在原本的網路中失敗,就能將範圍縮小至區域網路出口、認證頁面或網路策略。完成認證後再啟動 Clash,也能避免飯店 Wi-Fi 的登入頁面被代理規則攔截。
這套順序的核心是先驗證最短鏈路,再逐層增加接管能力。節點、DNS、系統代理與 TUN 都可能造成相似的「已連線卻無法上網」,但測試結果並不相同。保留每個步驟的連接埠、時間、記錄與開關組合,通常比反覆重新安裝用戶端更快找到真正的故障點。