Clash 报错怎么解决?Clash Verge Rev 日志与连接失败排查
简答:Clash 报错应先复制完整日志中的第一条关键错误,再判断属于客户端启动、配置解析、端口占用、节点连接、系统代理、DNS 还是 TUN 问题。本文只以 Clash Verge Rev 为例:先关闭 TUN 并测试普通代理,再按错误关键词修复,通常比直接删除配置或反复重装更容易定位原因。本站是第三方使用指南,不是 Clash Verge Rev 官方,安装包和版本信息应以项目发布页为准。
定义:本文所说的“Clash 报错”,是指 Clash Verge Rev 或其 Mihomo 内核在启动、读取配置、连接节点、设置系统代理或接管系统流量时显示的错误日志与异常现象。
先做这一步:复制完整日志,再按错误关键词分层
打开 Clash Verge Rev 的日志页面,复制从报错发生前几行到后续错误结束的完整片段,不要只截取一句英文。优先记录第一条 ERROR 或明确的启动失败信息,同时记下当前配置名称、是否开启 TUN、系统代理端口和使用的节点名称。
如果问题是“软件打不开”,先看客户端启动和内核启动日志;如果是“导入后没有节点”,先看订阅响应和配置解析;如果是“节点全部超时”,重点看节点连接、DNS 和网络;如果是“浏览器能用但命令行或其他应用不能用”,重点看系统代理、应用代理和 TUN。
| 日志或现象 | 优先判断 | 第一步动作 |
|---|---|---|
yaml、unmarshal | 配置格式或字段类型错误 | 回退到最近一次可用配置,检查缩进、冒号、列表和字段值 |
Unsupported Config | 当前内核不认识配置字段、协议或参数 | 核对客户端和 Mihomo 内核版本,不要直接删除未知字段 |
bind、address already in use | 本地端口已被其他程序占用 | 查询端口对应进程,或在客户端中改用未占用端口 |
timeout、i/o timeout | 连接建立或数据传输超时 | 先换一个节点,再分别测试 DNS、端口和系统网络 |
Network Error | 订阅请求或网络请求失败 | 检查订阅地址、网络连通性、系统时间和 TLS 错误 |
| TUN 启动失败 | 权限、服务、虚拟网卡、路由或防火墙冲突 | 先关闭 TUN,用普通 HTTP 或 SOCKS 代理验证节点是否可用 |
Clash Verge Rev 官方仓库说明它是基于 Mihomo 的图形客户端,并支持 Windows、Linux 和 macOS;发布页会列出版本变更和安装包,因此遇到功能或兼容性异常时,应先核对当前版本,而不是引用第三方下载页。查看 Clash Verge Rev 官方仓库;查看官方发布页。
YAML、unmarshal 和 Unsupported Config:先修配置,不要先重装
yaml 或 unmarshal 通常表示配置文件无法按预期解析。常见检查点包括:层级缩进不一致、冒号后缺少空格、列表项少了短横线、同一字段被重复写入,以及把数字、布尔值或字符串写成了错误类型。编辑配置前先复制一份备份,避免把唯一可用配置覆盖掉。
- 在 Clash Verge Rev 中切换到最近一次成功运行的配置,确认客户端本身能否启动。
- 如果只有某个订阅配置报错,暂时不要修改整个配置目录,先重新获取该订阅内容,并确认返回的确实是配置文本,而不是登录页、错误页或 HTML。
- 如果手动编辑过 YAML,一次只改一个字段;保存后重新加载,记录是哪一次修改导致错误。
- 如果日志出现
Unsupported Config,先核对使用的协议、代理字段和内核版本。Mihomo 官方配置文档会列出支持的入站、DNS、TUN 和代理字段,不能仅凭字段名称猜测是否兼容。查看 Mihomo 代理配置字段
如果配置来自订阅服务,本文无法核实其内容是否有效。此时最安全的做法是保留原订阅地址但不公开分享,并向提供方索取适配当前客户端的配置;分享日志时应隐藏订阅令牌、密码、UUID、节点地址、secret 和公网 IP。
bind 或 7890 端口报错:查询占用进程后再改端口
看到 bind、listen tcp 或 address already in use,通常说明 Clash Verge Rev 想监听的本地端口已经被其他程序使用。不要只在配置里反复改端口;先确认是谁占用了它。
Windows 查询 7890 端口
- 打开“开始”菜单,搜索“终端”或“PowerShell”,选择“以普通用户身份运行”即可。
- 执行:
netstat -ano | findstr :7890 - 记下最后一列 PID,再执行:
tasklist /FI "PID eq 进程号"。把“进程号”替换成实际数字。 - 如果确认是旧的 Clash Verge Rev、其他代理客户端或残留内核占用,先正常退出对应程序;不要在不确认程序用途时强制结束系统进程。
- 如果不能释放端口,在 Clash Verge Rev 的设置中把 HTTP、SOCKS 或 Mixed 端口改成未占用端口,然后重新开启系统代理。
macOS 查询 7890 端口
- 打开“终端”。
- 执行:
lsof -nP -iTCP:7890 -sTCP:LISTEN - 退出显示出的旧客户端或相关进程后,再回到 Clash Verge Rev 重新加载配置。
- 如果需要修改端口,修改后同步检查系统代理设置和命令行测试参数。
端口能监听只代表本地代理入口已经建立,不代表节点一定可用。端口修复后还要选择一个节点,并用浏览器或命令行进行实际连接测试。
Timeout、connect failed、Network Error:按节点、DNS、网络顺序排查
timeout、connect failed 和 Network Error 不是同一种故障。先区分是订阅地址请求失败,还是节点已经导入但连接失败。
| 现象 | 检查顺序 | 处理方法 |
|---|---|---|
| 订阅更新失败,列表没有变化 | 订阅地址 → 网络 → TLS → 返回内容 | 确认地址没有多余空格或换行;检查浏览器是否能访问该地址;若返回 HTML 或错误提示,不要导入为 YAML |
| 配置导入成功但所有节点超时 | 节点地址 → DNS → 本地网络 → 节点端口 | 先换同一配置中的其他节点,再用普通代理模式测试,暂时关闭 TUN 和复杂规则 |
| 只有一个节点超时 | 单节点参数 → SNI、端口、协议字段 | 对照订阅原始内容,不要凭经验修改密码、UUID、端口或 TLS 参数 |
| 浏览器能打开,其他应用不能用 | 应用是否读取系统代理 → 端口类型 → TUN | 先确认应用支持 HTTP、SOCKS 或系统代理;不支持时再测试 TUN |
如果怀疑是 DNS,先在 Clash Verge Rev 中暂时关闭 TUN,保留普通代理,测试域名解析和节点连接。Mihomo 的 DNS 文档说明,enhanced-mode 可以是 fake-ip 或 redir-host,而 fake-ip-range 用于 fake-ip 地址段。查看 Mihomo DNS 配置说明
在 fake-ip 模式下,命令行或日志里出现 198.18.x.x 不一定是故障,而可能是 fake-ip 映射地址。不要因为看到这个地址就直接改 DNS;应结合域名是否能访问、规则是否命中以及应用是否能建立连接一起判断。
测试外网连通性时,不要把 github.com 当作必然响应 ICMP 的目标。它不响应 ping 时,不能据此证明 MTU 或线路一定有问题。需要探测 MTU 时,应选择实际能响应 ICMP 的网关或公共地址,并记住 Windows 的 ping -f -l 参数得到的是负载大小,最终 MTU 通常要在该数值上加 28 字节。
Clash 显示已连接但网页打不开:先做 Global、Rule、Direct 对照
“已连接”通常只说明客户端进程、代理端口或某个节点状态正常,不代表每个域名都一定走了预期线路。排查时应一次只改变一个变量。
- 确认系统代理开关已经打开,并记下 HTTP、SOCKS 或 Mixed 端口。
- 把模式临时切换到 Global,选择一个确定可用的节点,测试同一个网页。
- 如果 Global 可以、Rule 不可以,打开连接或日志页面,查看该域名命中了哪个规则和策略组,重点检查规则集更新时间、策略组是否存在以及最终是否落到了 Direct。
- 如果 Global 和 Rule 都不可以,切换到 Direct 做对照。Direct 也无法访问时,优先检查本地网络、DNS 和目标网站本身,而不是继续修改规则。
- 如果浏览器可以但命令行不行,Windows PowerShell 中使用
curl.exe,不要混淆 PowerShell 的命令别名。例如:curl.exe -I -x http://127.0.0.1:7890 https://example.com。其中端口要替换成 Clash Verge Rev 当前的 HTTP 或 Mixed 端口。
如果只有某个游戏、办公软件或 UWP 应用不走代理,先确认该应用是否支持系统代理;不支持时,才考虑 TUN。不要在普通代理尚未验证成功时直接开启 TUN,否则会把节点问题、路由问题和应用兼容性问题混在一起。
TUN 启动失败、开启后断网:先恢复普通代理,再检查权限和防火墙
Mihomo 官方文档将 TUN 用于接管系统流量、自动路由和 DNS 劫持,并提醒 TUN 属于需要额外排查的功能。Windows、macOS 和 Linux 的权限、防火墙、虚拟网卡与路由行为不同,因此 TUN 报错时不要先改 MTU 或批量修改 DNS。查看 Mihomo TUN 配置说明
- 在 Clash Verge Rev 中关闭 TUN,保留系统代理或手动代理端口。
- 选择一个节点,确认浏览器能够通过普通代理访问测试网页。
- 重新开启 TUN;如果立刻报权限或服务错误,使用客户端提供的服务模式或管理员授权功能重新安装服务,不要手动删除系统网卡。
- Windows 用户检查“Windows 安全中心 → 防火墙和网络保护 → 允许应用通过防火墙”,确认 Mihomo 内核或 Clash Verge Rev 没有被阻止。Mihomo 文档也指出,某些 TUN 协议栈在防火墙开启时需要放行核心程序。查看 TUN 防火墙处理建议
- macOS 用户检查“系统设置 → 网络 → 防火墙 → 选项”,确认相关应用未被阻止;如果出现路由已存在、接口已存在等错误,先关闭 TUN,重启客户端和网络连接后再试。
- 如果 TUN 一开启就断网,先把 DNS 覆写、严格路由和复杂规则恢复到之前的状态,一次只启用一个选项。Mihomo 文档中说明,
strict-route可能影响某些虚拟机或特殊网络环境,因此不要把它当作所有设备的默认修复项。
若普通代理模式正常、TUN 模式始终失败,问题范围已经缩小到权限、服务、虚拟网卡、防火墙或路由,而不是节点本身。此时保留普通代理作为临时工作方式,并记录系统版本、客户端版本、内核版本、TUN 报错原文和是否使用管理员权限。
修复后验证清单:确认不是“看起来好了”
- 客户端可以正常启动,日志中没有新的配置解析错误。
- 至少测试两个节点,避免把单个节点偶然恢复误判为整体修复。
- 普通代理模式下,浏览器可以访问测试页面。
- Global、Rule、Direct 三种模式的结果差异符合预期,连接日志显示了正确的策略组。
- 系统代理端口可以监听,且没有新的
bind错误。 - 如果使用 fake-ip,出现
198.18.x.x时结合实际访问结果判断,不要仅凭地址外观下结论。 - 开启 TUN 后,浏览器、命令行和目标应用分别测试;不要只测试浏览器。
- 分享日志前隐藏订阅令牌、密码、UUID、节点地址、
secret和公网地址。
如果仍然无法定位,提交问题时至少附上操作系统、客户端版本、内核版本、是否服务模式、是否管理员权限、错误原文、复现步骤和已经尝试过的单项修改。不要上传包含完整订阅链接或账号凭据的配置文件。
常见问题
Clash 报错后要不要直接重装?
不建议作为第一步。先复制完整日志并判断是配置解析、端口占用、节点超时、系统代理还是 TUN 问题。只有在安装文件损坏、服务组件无法修复或版本升级后仍无法启动时,才考虑按官方发布页重新安装,并提前备份配置。
Clash Verge Rev 显示节点全部超时,应该先改 DNS 吗?
不要立即改 DNS。先关闭 TUN,使用普通代理模式测试两个节点;如果只有一个节点超时,优先检查该节点参数;如果全部节点超时,再检查订阅是否过期、域名解析、本地网络和节点端口。
日志里的 198.18.x.x 是不是 DNS 出错?
不一定。Mihomo 的 fake-ip 模式会使用专门的 fake-ip 地址段,198.18.x.x 可能是正常映射结果。应结合 DNS 模式、连接日志、规则命中和实际访问结果判断,不能只凭这个地址决定重置 DNS。
为什么浏览器能用,但命令行或办公软件不能用?
浏览器可能读取了系统代理,而命令行或应用可能不读取系统代理,或者要求单独设置 HTTP、SOCKS 代理。Windows PowerShell 测试时使用完整的 <code>curl.exe</code> 命令,并确认端口与 Clash Verge Rev 当前监听端口一致;不支持代理设置的应用再考虑 TUN。
Clash 报 Unsupported Config 应该删掉哪个字段?
不要凭猜测删除。先确认当前 Clash Verge Rev 和 Mihomo 内核版本,再对照 Mihomo 官方配置文档判断字段是否拼写错误、属于其他内核,或需要升级版本。删除字段可能导致配置表面能加载但实际连接参数丢失。