ClashX 連線超時排查指南:埠、DNS 與節點檢查

連線超時的常見原因

ClashX 出現連線超時通常由以下幾種原因造成,了解根源才能快速定位並解決問題:

  • 埠占用 — ClashX 預設使用 7890(HTTP)和 7891(SOCKS5)埠。如果這些埠被其他應用程式占用,ClashX 將無法正常監聽流量,導致代理失敗。
  • DNS 污染 — 在某些網路環境下,DNS 請求被劫持或污染,導致網域名稱解析到錯誤的 IP 位址。這會讓 ClashX 無法連線到正確的代理伺服器。
  • 節點失效 — 代理節點可能因為伺服器維護、流量超限或被封鎖而無法使用,是最常見的超時原因。
  • 防火牆攔截 — macOS 內建防火牆或第三方安全軟體可能阻止 ClashX 的網路連線請求。

步驟 1 — 檢查埠設定

首先確認 ClashX 所需埠沒有被其他程式占用。

檢查埠占用情況

開啟終端機,執行以下指令檢查 7890 埠是否被占用:

lsof -i :7890

如果有輸出結果,表示該埠已被占用。查看 COMMAND 欄確認是哪個程式,然後關閉它或更改 ClashX 埠。

同時檢查 SOCKS5 埠

lsof -i :7891

查看系統代理設定

確認 macOS 系統代理是否指向正確的埠:

# 查看 HTTP 代理設定
networksetup -getwebproxy Wi-Fi

# 查看 SOCKS 代理設定
networksetup -getsocksfirewallproxy Wi-Fi

修改 ClashX 埠

如果埠衝突,可以在 ClashX 設定檔中修改埠號:

# config.yaml
port: 7892          # HTTP 代理埠
socks-port: 7893    # SOCKS5 代理埠

修改後重啟 ClashX 即可生效。

步驟 2 — 檢查 DNS 設定

DNS 設定不當是導致連線超時的重要原因之一。

DNS 洩漏測試

前往 dnsleaktest.com 執行標準測試,查看 DNS 請求是否透過代理正確轉發。如果偵測到本地 ISP 的 DNS 伺服器,表示存在 DNS 洩漏。

fake-ip vs redir-host

ClashX 支援兩種 DNS 增強模式:

  • fake-ip(推薦)— 回傳虛擬 IP 位址,避免 DNS 污染,連線速度更快。
  • redir-host — 使用真實 IP,相容性更好但可能受到 DNS 污染影響。

推薦 DNS 設定

# config.yaml
dns:
  enable: true
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  nameserver:
    - https://doh.pub/dns-query
    - https://dns.alidns.com/dns-query
  fallback:
    - https://1.1.1.1/dns-query
    - https://dns.google/dns-query
  fallback-filter:
    geoip: true
    geoip-code: CN

清除 DNS 快取

修改 DNS 設定後,建議清除系統 DNS 快取:

sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder

步驟 3 — 檢查節點可用性

節點失效是連線超時最常見的原因。以下方法可以幫助你快速排查。

延遲測試

在 ClashX 選單列中,對節點清單按右鍵,選擇「測速」或「Benchmark」。延遲超過 500ms 或顯示「Timeout」的節點應避免使用。

切換節點

嘗試切換到延遲較低的節點。優先選擇:

  • 延遲在 100ms 以下的節點
  • 與你實際位置較近的節點
  • 非尖峰時段負載較低的節點

更新訂閱

如果所有節點都超時,可能是訂閱連結已過期。手動更新訂閱:

# 在終端機中手動更新(可選)
curl -o ~/.config/clash/config.yaml "你的訂閱連結"

或者在 ClashX 選單中選擇「Config」→「Update」來更新設定。

進階排查

如果以上步驟都沒有解決問題,可以嘗試以下進階排查方法。

防火牆與 VPN 衝突

檢查 macOS 防火牆是否阻止了 ClashX:

# 查看防火牆狀態
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --getglobalstate

# 將 ClashX 加入防火牆白名單
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --add /Applications/ClashX.app

如果同時執行了其他 VPN 軟體(如 Tunnelblick、WireGuard),可能會與 ClashX 產生路由衝突。建議關閉其他 VPN 後再測試。

TUN 模式

ClashX Pro 支援 TUN 模式(增強模式),可以接管系統所有流量。如果普通模式下連線超時,可以嘗試開啟 TUN 模式:

# config.yaml (ClashX Pro)
tun:
  enable: true
  stack: system
  auto-route: true
  auto-detect-interface: true

系統代理設定檢查

確保 ClashX 的「Set as System Proxy」選項已開啟。也可以手動驗證:

# 驗證代理是否生效
curl -x http://127.0.0.1:7890 https://www.google.com -I

# 查看目前網路服務
networksetup -listallnetworkservices

常見問題

Q: ClashX 啟動後一直顯示「Timeout」怎麼辦?

A: 首先檢查網路連線是否正常(能否開啟國內網站)。如果網路正常,按照本文的 3 步排查法依次檢查埠、DNS 和節點。大多數情況下,切換節點即可解決。

Q: 為什麼切換節點後還是超時?

A: 可能所有節點都已失效。嘗試更新訂閱取得新節點,或聯繫你的服務供應商確認服務狀態。

Q: fake-ip 模式會影響國內網站存取嗎?

A: 正確設定規則後不會。確保你的設定檔中有完善的分流規則,國內網域走直連即可。

Q: 如何判斷是節點問題還是本地問題?

A: 在終端機執行 ping 127.0.0.1 確認本機網路堆疊正常,然後執行 curl -x http://127.0.0.1:7890 https://www.google.com 測試代理。如果 ping 正常但 curl 失敗,說明是節點問題。