Clash 节点连接失败?8步排查法彻底解决问题

更新日期: 阅读时长:约15分钟
目录
  1. 问题概述与排查思路
  2. 第一步:确认节点是否过期
  3. 第二步:检查端口是否被封
  4. 第三步:排查 TLS 握手失败
  5. 第四步:验证证书有效性
  6. 第五步:检查协议匹配
  7. 第六步:排除 DNS 污染影响
  8. 第七步:分析超时原因
  9. 第八步:检查本地防火墙与安全软件
  10. 排查流程速查表
  11. 总结

问题概述与排查思路

节点连接失败是 Clash 用户最常遇到的问题之一。表现通常为:测速显示超时、浏览器无法打开网页、日志中出现 connection refusedTLS handshake error 等错误。导致连接失败的原因有很多,但按照系统化步骤逐一排查,绝大多数问题都能在 10 分钟内定位并解决。

本文总结了 8 个最常见的失败原因,按排查优先级排序。建议从第一步开始逐步检查,通常在前 3-4 步就能找到问题所在。

前提确认

在开始排查之前,请确保你已正确安装并配置了 Clash 客户端。如果还没完成基础配置,请先参考Clash for Windows 安装配置指南

1确认节点是否过期

最常见也最容易被忽略的原因。免费节点尤其如此——服务商可能随时下线节点或更换地址。

检查方法

  1. 打开 Clash Verge Rev 的代理页面,对所有节点执行延迟测试
  2. 如果所有节点都显示超时(timeout),大概率是订阅已过期
  3. 如果仅个别节点超时,可能是这些节点临时下线

解决方案

# 重新导入订阅,获取最新节点列表
# 在 Verge Rev 的 Profiles 页面点击订阅卡片的刷新图标

# 或通过 API 手动更新订阅
curl -X PUT http://127.0.0.1:9090/configs \
  -H "Content-Type: application/json" \
  -d '{"path": "/path/to/your/config.yaml"}'

如果刷新订阅后所有节点仍然超时,说明订阅本身已失效。联系服务商确认订阅状态,或尝试订阅导入失败的排查方法来验证链接有效性。

2检查端口是否被封

某些地区的网络审查会封锁常用的代理端口。如果你的节点一直连不上但订阅是有效的,端口被封是最可能的原因之一。

检查方法

使用 curltelnet 测试节点端口的连通性:

# 方法一:curl 测试 TCP 连接
curl -v telnet://节点IP:端口 --connect-timeout 5

# 方法二:使用 nmap 扫描
nmap -p 端口 节点IP

# 方法三:PowerShell(Windows)
Test-NetConnection -ComputerName 节点IP -Port 端口

如果连接被拒绝(refused)或超时,而该端口在服务商端确认是开放的,那么很可能是中间网络在封锁该端口。

解决方案

proxies:
  - name: "节点名称"
    type: trojan
    server: example.com
    port: 443
    password: "your-password"
    sni: example.com
    # 如果端口被封,尝试切换到其他传输层协议

端口封锁通常是动态的,今天封的端口明天可能解封。保持多个备选节点是应对端口封锁的有效策略。

3排查 TLS 握手失败

日志中出现 tls: handshake failurex509: certificate signed by unknown authority 时,说明 TLS 层连接出现问题。

常见原因与解决方案

原因一:SNI 配置错误

SNI(Server Name Indication)必须与服务器的证书域名匹配。检查你的节点配置:

proxies:
  - name: "节点"
    type: trojan
    server: server.example.com
    port: 443
    password: "password"
    sni: server.example.com    # 必须与服务器证书域名一致
    # skip-cert-verify: false  # 生产环境不要设为 true

如果 SNI 填写错误或缺失,TLS 握手会直接失败。确保 sni 字段的值与服务器实际使用的域名完全一致。

原因二:TLS 版本不兼容

少数老旧服务器仅支持 TLS 1.0/1.1,而 mihomo 内核默认要求 TLS 1.2+。这种情况较少见,但如果怀疑是版本问题,可以通过日志确认。

# 开启 debug 日志查看详细握手过程
log-level: debug

更多 TLS 相关问题的深入分析可以参考DNS 防污染配置详解中关于安全传输层的内容。

安全警告

严禁在生产环境中将 skip-cert-verify 设为 true。这会跳过证书验证,使你的连接面临中间人攻击风险。如果遇到证书问题,应该修复证书配置而非跳过验证。

4验证证书有效性

即使 TLS 握手能发起,如果服务器证书已过期或域名不匹配,连接仍会被中断。

检查方法

# 使用 OpenSSL 检查远程服务器证书
openssl s_client -connect 服务器地址:443 -servername 域名 < /dev/null 2>/dev/null | openssl x509 -noout -dates -subject

# 输出示例:
# notBefore=Jan  1 00:00:00 2026 GMT
# notAfter=Dec 31 23:59:59 2026 GMT
# subject=CN = example.com

关注 notAfter 日期。如果证书已过期(当前日期晚于 notAfter),需要联系服务商更新证书。

自签证书场景

如果你使用自建节点且使用自签证书,需要将 CA 证书添加到系统的信任存储中,或在 Clash 配置中指定 CA 证书路径:

proxies:
  - name: "自建节点"
    type: trojan
    server: myserver.com
    port: 443
    password: "password"
    sni: myserver.com
    ca-str: |
      -----BEGIN CERTIFICATE-----
      MIIFazCCA1OgAwIBAgIRA...
      -----END CERTIFICATE-----

5检查协议匹配

Clash 配置中的协议类型必须与节点实际使用的协议完全一致。常见的协议不匹配问题包括:

问题一:Vless 节点配置为 Vmess

# 错误配置
proxies:
  - name: "节点"
    type: vmess        # 节点实际是 Vless 协议
    server: ...
    
# 正确配置
proxies:
  - name: "节点"
    type: vless        # 协议类型与节点一致
    server: ...
    uuid: ...
    flow: xtls-rprx-vision  # Reality 节点需要指定 flow

问题二:缺少必要参数

不同协议有不同的必填参数。例如 Reality 协议需要 public-keyshort-idserverName 等字段,TUIC 需要 uuidpassword。缺少任何必填参数都会导致连接失败。

协议支持检查

mihomo 内核支持的主流协议包括:

如果你使用的协议不在支持列表中,说明需要更新 mihomo 内核版本。在 Clash Verge Rev 中,内核会随应用更新自动升级。

6排除 DNS 污染影响

DNS 污染会导致域名解析到错误的 IP 地址,从而无法连接到正确的节点服务器。表现为:节点配置正确但连接超时,或日志显示 no such host

检查方法

# 对比不同 DNS 服务器的解析结果
nslookup 节点域名 8.8.8.8
nslookup 节点域名 1.1.1.1
nslookup 节点域名 本地DNS

# 如果本地 DNS 返回的 IP 与公共 DNS 不同,说明存在 DNS 污染

解决方案

在 Clash 配置中设置可靠的 DNS 解析方案:

dns:
  enable: true
  enhanced-mode: fake-ip
  nameserver:
    - https://dns.cloudflare.com/dns-query
    - https://dns.google/dns-query
  fallback:
    - https://dns.cloudflare.com/dns-query
    - https://1.0.0.1/dns-query
  fallback-filter:
    geoip: true
    geoip-code: CN
    ipcidr:
      - 240.0.0.0/4

fallback 中的 DNS 服务器仅在 nameserver 解析结果非国内 IP 时使用,这样既保证了国内域名的解析速度,又避免了海外域名被污染。完整的 DNS 配置详解见DNS 防污染配置详解

7分析超时原因

超时(timeout)是最常见的连接失败表现,但背后的原因可能各不相同。需要区分是连接超时还是响应超时。

连接超时(connect timeout)

表示客户端无法建立到服务器的 TCP 连接。常见原因:

响应超时(response timeout)

TCP 连接建立成功但服务器未响应。常见原因:

超时排查工具

# traceroute 检查网络路径
traceroute -T -p 节点端口 节点IP

# mtr 持续监测网络质量
mtr -T -p 节点端口 节点IP -r -c 10

# 在 Clash 日志中查看具体超时位置
# 开启 debug 日志后,观察连接在哪个阶段超时
log-level: debug

如果 traceroute 显示数据包在到达节点之前就被丢弃,说明是网络层面的阻断。此时需要更换使用不同传输协议的节点(如从 TCP 切换到 WebSocket 或 QUIC)。

8检查本地防火墙与安全软件

有时候问题不在网络层面,而在本地。防火墙或安全软件可能拦截了 Clash 进程的网络连接。

Windows 防火墙检查

# PowerShell:检查防火墙是否拦截了 Clash
Get-NetFirewallRule | Where-Object { $_.DisplayName -like "*clash*" } | Format-List

# 手动添加防火墙规则
New-NetFirewallRule -DisplayName "Clash Verge Rev" \
  -Direction Outbound -Program "C:\path\to\clash-verge.exe" \
  -Action Allow

New-NetFirewallRule -DisplayName "Clash Core" \
  -Direction Outbound -Program "C:\path\to\mihomo.exe" \
  -Action Allow

杀毒软件检查

部分杀毒软件(特别是国产安全软件)会将 Clash 识别为风险程序并拦截其网络连接。排查方法:

  1. 临时关闭杀毒软件的网络防护功能
  2. 测试节点连接是否恢复
  3. 如果关闭后连接正常,将 Clash 的安装目录添加到杀毒软件的白名单中
Windows Defender 误报处理

Windows Defender 有时会将 Clash 内核标记为威胁。如果你确认从官方渠道下载,可以在 Windows 安全中心添加排除项:病毒和威胁防护 > 管理设置 > 排除项,将 Clash 安装目录加入白名单。

VPN 冲突

如果你同时运行了其他 VPN 软件(如 WireGuard、OpenVPN),它们的网络适配器可能与 Clash 的 TUN 模式冲突。排查方法是先关闭其他 VPN 软件,再测试 Clash 连接。关于 TUN 模式的详细配置参考TUN 模式全局代理指南

排查流程速查表

将以上 8 个步骤整理为快速排查流程:

节点连接失败
  |
  +-- 所有节点超时?
  |     +-- 是 → 步骤1:检查订阅是否过期
  |     +-- 否 → 继续
  |
  +-- 个别节点超时?
  |     +-- 是 → 步骤7:分析超时类型
  |     +-- 否 → 继续
  |
  +-- 日志显示 TLS 错误?
  |     +-- 是 → 步骤3/4:检查 TLS 和证书
  |     +-- 否 → 继续
  |
  +-- 日志显示 connection refused?
  |     +-- 是 → 步骤2:检查端口
  |     +-- 否 → 继续
  |
  +-- 日志显示 protocol error?
  |     +-- 是 → 步骤5:检查协议匹配
  |     +-- 否 → 继续
  |
  +-- 日志显示 no such host?
  |     +-- 是 → 步骤6:排查 DNS 污染
  |     +-- 否 → 继续
  |
  +-- 步骤8:检查本地防火墙

总结

节点连接失败看似复杂,但按照这 8 个步骤系统排查,绝大多数问题都能快速定位。关键经验是:

如果按以上步骤仍未解决问题,建议到 Clash Verge Rev 的 GitHub Issues 页面提交问题报告,附上 debug 级别的日志。社区维护者通常能在 24 小时内给出诊断。

更多实用内容:10个进阶技巧提升网速规则配置入门教程订阅导入失败排查

下载最新版 Clash 客户端