先固定一次失敗請求
FlClash 日誌通常來自 Clash Meta(mihomo)核心與用戶端本身。日誌頁出現 warning,不代表整個代理服務都已失效;背景應用程式、節點健康檢查、訂閱更新和瀏覽器請求都可能同時產生日誌。排查時,先將一筆失敗紀錄對應到一次實際操作。
- 記下目前的設定名稱、出站模式、策略組所選節點,以及系統代理和 TUN 模式的開關狀態。
- 開啟 FlClash 日誌頁,暫停其他下載,只連線至一個能穩定重現問題的網址。
- 記錄操作時間,保留前後約 10 秒的日誌。留意目標網域、目標連接埠、匹配規則、策略組和最終出站。
- 每次只變更一個條件,再用相同網址重試。例如先切換節點,不要同時變更 DNS 和 TUN 堆疊。
以下日誌僅用於說明欄位,並非實際測試結果。不同核心版本的欄位順序和用詞可能有所不同。範例中的 192.0.2.10 是文件專用示例位址,無法作為可連線節點;127.0.0.1:7890 也只是本機連接埠範例,請改用目前設定實際監聽的連接埠。
日誌層級:先看請求,再判斷嚴重程度
mihomo 常見的 log-level 值包括 debug、info、warning、error 和 silent。層級決定輸出哪些內容,不代表故障原因:warning 可能只是健康檢查失敗,info 則可能揭示目標請求走錯出站路徑。
| 層級 | 主要用途 | 處理方式 |
|---|---|---|
| debug | 補充解析、連線等細節 | 短暫啟用,重現問題後還原 |
| info | 查看規則與出站路徑 | 作為日常排查的起點 |
| warning | 連線、解析等異常提示 | 確認是否對應失敗請求 |
| error | 設定或執行時發生錯誤 | 優先查看具體錯誤的上下文 |
| silent | 停止輸出核心日誌 | 排查期間改用 info 或 debug |
需要更多細節時,可在用戶端提供的日誌層級設定中暫時調整;若直接編輯設定,請檢查最終生效設定中的 log-level: debug。不要只修改訂閱快取檔案,因為用戶端重新產生設定或更新訂閱後,變更可能會被覆蓋。排查完成後請還原為 info,避免持續記錄請求資訊。
dial tcp 逾時:確認連線目標
dial tcp 192.0.2.10:443: i/o timeout
dial tcp 127.0.0.1:7890: connect: connection refused
dial tcp 表示正在建立 TCP 連線。關鍵不只是後面的 timeout,更要看前面的位址究竟是代理節點、直連目標,還是本機代理服務。透過代理連線時,錯誤中可能會出現節點伺服器位址;使用 DIRECT 時,則可能是目標網站位址。單憑這一行,無法判定「網站遭到封鎖」或「訂閱失效」。
i/o timeout 與 connection refused 有何不同
- i/o timeout:連線或相關網路操作未能在期限內完成。節點無法連線、封包遺失、路由異常或防火牆靜默丟棄封包,都可能造成逾時。
- connection refused:收到拒絕連線的回應。常見原因包括連接埠沒有服務監聽、伺服器連接埠設定不符,或設備明確拒絕連線。
- network is unreachable:目前系統沒有通往目標網路的可用路由。若只在 IPv6 位址出現,請另外檢查本機 IPv6 連線狀態。
透過兩種對照測試縮小範圍
先維持網路不變,手動切換至另一個節點,再建立新的請求。如果只有某個節點持續逾時,優先檢查該節點的伺服器位址、連接埠和服務狀態。接著維持節點不變,改用手機熱點取代 Wi-Fi 測試;若只有原本的網路連線失敗,應優先檢查本機對外連線或電信業者的網路路徑。這些對照只能協助縮小範圍,無法單獨證明特定設備故障。
節點延遲測試成功,不代表所有網站都能正常開啟。測試通常只涵蓋指定的探測位址和單一連線路徑,不能取代實際使用情境中的請求。切換策略組後,既有長連線也可能繼續使用原本的出站路徑;請重新載入頁面或建立新連線後再判斷。
DNS 解析失敗:分辨節點網域與網站網域
lookup example.com: no such host
dns resolve failed: context deadline exceeded
no such host 通常表示解析流程回報該名稱不存在,或未取得可用位址;context deadline exceeded 則表示相關操作逾時。後者不一定是 DNS 專屬錯誤,必須搭配附近的 DNS 欄位判斷。先確認解析失敗的網域是節點伺服器還是造訪目標,兩者影響範圍不同。
節點伺服器網域解析失敗
必須先解析節點位址,才能建立代理連線。如果用來解析節點的 DNS 上游也被設定為必須透過該節點連線,就可能形成依賴循環。請檢查生效設定中的 proxy-server-nameserver 等節點網域解析設定,以及相關 DNS 上游是否有可用的初始連線路徑。不要把所有解析請求都強制送進尚未建立的代理。
目標網站網域解析失敗
檢查 dns 區段中的 nameserver、nameserver-policy,以及有使用時的 fallback。若啟用了 respect-rules,也要檢查 DNS 請求所經過的規則路徑。DoH 位址是透過 HTTPS 傳送請求;設定為 https://,不代表它在目前網路中一定能連線。
- 只有特定網域解析失敗:檢查拼字、網域指定解析策略及上游回應。
- 所有目標網域都解析失敗,但節點可連線:優先檢查目標網域的解析流程與 DNS 上游。
- 只有啟用 TUN 後才失敗:檢查 DNS 劫持、系統解析器及其他網路軟體的接管狀態。
交握失敗:釐清憑證、協定與連線中斷
tls: failed to verify certificate: x509: certificate has expired or is not yet valid
tls: first record does not look like a TLS handshake
EOF
TCP 連線成功,只代表傳輸層入口可連線。節點協定、TLS、身分驗證和目標網站連線,仍可能在後續階段失敗。日誌中的 TLS 錯誤可能來自代理傳輸、DNS 上游或其他 HTTPS 請求,請先確認錯誤對應的對象。
- 憑證已過期或尚未生效:先檢查系統日期、時間和時區,再確認伺服器憑證的有效期限。裝置時間不準也可能導致驗證失敗。
- 憑證名稱不符:檢查節點的
servername、實際伺服器憑證與訂閱參數是否一致;不要任意以伺服器 IP 取代必須使用的網域名稱。 - 第一筆記錄不像 TLS:可能是連線到非 TLS 服務,或中間設備回傳了其他內容。請核對連接埠與 TLS 開關,不能只憑這段訊息就判定密碼錯誤。
- EOF 或 connection reset by peer:表示對端已關閉連線,或連線遭到重設。這些訊息本身不會指出關閉原因,需搭配交握前後的記錄及伺服器狀態判斷。
如果訂閱剛更新,所有同類型節點就都無法連線,請先確認用戶端隨附的核心是否支援該協定及其參數,再核對訂閱來源提供的設定要求。不要把 skip-cert-verify: true 當成通用修復方式;略過憑證驗證會降低身分驗證的安全性,也無法解決連接埠、驗證方式或傳輸類型不符的問題。
規則未命中:先確認模式,再檢查最終出站
「規則未命中」通常是用來描述現象,不是固定的核心錯誤。在規則模式下,規則通常依序比對,符合後使用對應策略;GLOBAL 與 DIRECT 模式則不會依一般規則清單進行分流。請先確認目前模式,再查看連線記錄中的匹配類型和策略鏈。
proxy-groups:
- name: Web
type: select
proxies:
- DIRECT
rules:
- DOMAIN-SUFFIX,example.com,Web
- MATCH,DIRECT
這段內容僅用來示範規則間的關係,並非完整可用的訂閱。連線至 www.example.com 會符合 DOMAIN-SUFFIX,並進入 Web 策略組;但此處該組只有 DIRECT,因此最終仍會直連。這表示「命中代理組」不等於「透過遠端代理節點連線」。實際排查時,還要查看策略組目前選用的節點,不要只看規則名稱。
- 日誌匹配到 MATCH:檢查前面的規則是否已涵蓋該網域、外部規則集是否載入成功,以及應用程式連線時是否保留網域資訊。
- 網域規則未觸發:應用程式可能直接連線至 IP;嗅探也無法從所有協定還原網域,不應視為必定有效的補救方法。
- 規則指向 REJECT:確認是否為刻意封鎖。這類連線失敗應先檢查規則原意,不必急著切換節點。
- 變更後仍走舊路徑:確認目前執行的是剛修改的 Profile,並使用新連線重新測試。
需要整理規則引用關係時,可參閱本站進階設定中的規則說明。修改訂閱規則前,請先確認變更的保存方式,避免本機修改在訂閱更新時遭到覆蓋。
TUN 與連接埠異常:檢查本機流量入口
listen tcp 127.0.0.1:7890: bind: address already in use
operation not permitted
address already in use 表示監聽位址與連接埠發生衝突。先關閉其他代理用戶端,確認舊程序是否仍在執行,再核對 FlClash 實際使用的連接埠。如果變更了監聽連接埠,也要同步檢查系統代理,以及手動填入代理位址的應用程式;不能只改設定中的一個數字。
若在建立虛擬網卡或修改路由時出現 operation not permitted,通常應優先檢查權限。桌面系統的 TUN 操作可能需要系統管理員授權或用戶端搭配的服務;Android 通常需要授予 VPN 連線權限。其他 VPN 或安全軟體也可能同時接管網路。
- 記錄目前狀態,暫時關閉其他 VPN 與代理用戶端。
- 關閉 TUN,只透過系統代理測試瀏覽器,確認節點及基本代理入口是否正常。
- 接著單獨啟用 TUN,觀察是否出現網卡、權限或路由錯誤。
- 如果只有 TUN 無法使用,優先檢查本機的流量接管路徑,不要立刻重設所有訂閱和 DNS 設定。
系統代理測試成功,只能證明參與測試的應用程式連線路徑正常,不能代表所有 UDP、遊戲或背景程式都能連線。選擇 TUN 堆疊時,應依作業系統和核心支援情況逐一比較,沒有適用於所有裝置的最佳固定選項。
提供排查資訊:保留上下文並隱藏憑證
有效的問題回報應包含可重現的操作步驟,而不只是附上一整頁 error。建議提供作業系統與架構、FlClash 版本、核心版本、目前模式、TUN 狀態、錯誤發生時間,以及切換節點和網路後的對照結果。版本資訊請以用戶端實際顯示為準,不要以文章日期推定版本。
- 操作:例如「開啟同一個 HTTPS 網址,建立新連線後約 10 秒失敗」。秒數請填寫實際觀察到的結果。
- 影響範圍:是單一節點還是所有節點失敗;是單一網站還是多數網站失敗。
- 日誌:保留故障前後的相關片段,包括規則、出站和最終錯誤,避免只截取最後一行。
- 隱私:隱藏訂閱連結、權杖、密碼、UUID 和敏感網域。請勿公開完整訂閱設定。
最後依連線路徑分類:沒有請求記錄,檢查流量入口;節點網域解析失敗,檢查初始解析路徑;節點 TCP 逾時,檢查節點與網路;交握失敗,檢查協定與憑證;出站與預期不符,檢查模式、規則和策略組。沿著同一筆請求逐層確認,比同時切換多個開關更容易找出可重現的原因。