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 失败,说明是节点问题。