ClashX 连接超时排查指南:端口, DNS 与节点检查

连接超时的常见原因

ClashX 出现连接超时通常由以下几种原因造成, 了解根源才能快速定位并解决问题:

  • 端口占用 — ClashX 默认使用 7890(HTTP)和 7891(SOCKS5)端口.如果这些端口被其他应用程序占用, ClashX 将无法正常监听流量, 导致代理失败.
  • DNS 污染 — 在某些网络环境下, DNS 请求被劫持或污染, 导致域名解析到错误的 IP 地址.这会让 ClashX 无法连接到正确的代理server.
  • 节点失效 — Proxy Nodes可能因为server维护, 流量超限或被封锁而无法使用, 是最常见的超时原因.
  • 防火墙拦截 — macOS 内置防火墙或Line 三方安全软件可能阻止 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 Configuration

DNS Configuration不当是导致连接超时的重要原因之一.

DNS 泄漏测试

访问 dnsleaktest.com 运行标准测试, 查看 DNS 请求是否通过代理正确转发.如果detected本地 ISP 的 DNS server, 说明存在 DNS 泄漏.

fake-ip vs redir-host

ClashX 支持两种 DNS 增强模式:

  • fake-ip(推荐)— 返回虚假 IP 地址, 避免 DNS 污染, 连接速度更快.
  • redir-host — 使用真实 IP, 兼容性更好但可能受到 DNS 污染影响.

推荐 DNS Configuration

# 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 Configuration后, 建议清除系统 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

FAQ

Q: ClashX 启动后一直显示「Timeout」怎么办?

A: 首先检查网络连接是否正常(能否打开CN websites).如果网络正常, 按照本文的 3 步排查法依次检查端口, DNS 和节点.大多数情况下, 切换节点即可解决.

Q: 为什么切换节点后还是超时?

A: 可能所有节点都已失效.尝试更新订阅获取新节点, 或联系你的服务提供商确认服务状态.

Q: fake-ip 模式会影响CN websites访问吗?

A: 正确配置Rules后不会.确保你的配置文件中有完善的分流Rules, 国内域名走Direct即可.

Q: 如何判断是节点问题还是本地问题?

A: 在终端运行 ping 127.0.0.1 确认本机网络栈正常, 然后运行 curl -x http://127.0.0.1:7890 https://www.google.com 测试代理.如果 ping 正常但 curl 失败, 说明是节点问题.