Clash 报错对照表:订阅导入失败、连不上节点、DNS 出错的日志怎么读

屏幕上那行红字,先别急着换服务

这篇是一张对照表:按你实际看到的那句报错去查,每一条都标了它出自哪个客户端、哪个源文件,以及在你自己机器上能做的检查。

有意这样写,是因为搜索这些报错时最常见的答案是「换一家」。**但这些报错里的绝大多数,根源在本机——配置写法、权限、规则引用、DNS 设置。**换一份订阅不会让一个写错的 default-nameserver 变对。

安装、订阅导入的基本流程不在这里重复,那部分见《Clash 使用教程 2026》。本文只处理「已经装好了,但它在报错」。

先说结论

  1. 先把日志级别调到 debug,再谈排错。 mihomo 的 log-level 有五档,官方文档对每一档的定义写得很死:silent 静默不输出、error 只输出到无法使用的错误、warning 输出不影响运行的错误、info 输出一般运行内容、debug 尽可能输出所有信息。默认的 info 看不到 DNS 解析细节。
  2. 「订阅导入失败,尝试使用 Clash 代理导入」不是故障码,是一句流程提示。 它出自 Clash Verge Rev 的简体中文语言文件,意思是「直连取订阅失败了,换用代理再试一次」。真正的原因要去日志里找下一行。
  3. 订阅取不回来时,你看到的错误文本往往就是 HTTP 状态行本身403 Forbidden404 Not Found)。原因在 mihomo 的源码里:状态码不在 2xx 时,它把 resp.Status 原样当作错误返回。
  4. 连接失败的那一行有四段信息,多数人只读了最后一段。 [TCP] dial 节点 (match 规则/内容) 来源 --> 目标 error: 原因 —— match 那一段经常才是真凶。
  5. 配置类报错和网络无关,特征是一保存就出现:名字重复、规则引用了不存在的名字、DNS 字段自相矛盾。本文第四、第六节逐条列了原文。
  6. TUN 打不开基本是权限或防火墙,不是配置。各系统的具体表现见第五节。
  7. 确实有一类报错不是你的问题——判断方法在最后一节,以及《机场突然全挂了:30 分钟自救清单》

一句话原则:报错分三类——取不到配置配置本身不合法配置合法但连不通。先判断是哪一类,再往下查。这三类的检查方法完全不同,混着试是最浪费时间的做法。

一、先把日志打开:三行就够

把级别调对

配置里的 log-level 决定你能看到什么。mihomo 官方文档(虚空终端 Docs)对五个取值的说明是:

取值官方说明(原文)
silent静默,不输出
error仅输出发生错误至无法使用的日志
warning输出发生错误但不影响运行的日志,以及 error 级别内容
info输出一般运行的内容,以及 error 和 warning 级别的日志
debug尽可能的输出运行中所有的信息

排错时调到 debug排完调回 info——debug 会把你访问过的每一个域名都写进日志。

要读的三行

mihomo 的连接日志格式写死在 tunnel/tunnel.go 里,认得出这三种就够用了:

第一行,成功的连接:

[TCP] 192.168.1.10:54321 --> www.example.com:443 match DomainSuffix(example.com) using 香港01

读法:match 后面是命中的规则类型和规则内容using 后面是最终走的节点或策略链

第二行,没有命中任何规则:

[TCP] 192.168.1.10:54321 --> www.example.com:443 doesn't match any rule using 香港01

这说明走的是兜底(MATCH)。如果某个网站行为奇怪,先看它是不是落到了这一行。

第三行,失败的连接:

[TCP] dial 香港01 (match DomainSuffix/example.com) 192.168.1.10:54321 --> www.example.com:443 error: ...

这一行来自源码里的 logMetadataErr 函数,四段信息缺一不可:协议(TCP/UDP)、选中的节点命中的规则、以及最后的原因。

为什么强调 match 那一段:一个「连不上 GitHub」的问题,日志里如果显示 using DIRECT,那节点再好也没用——流量压根没进代理。这类问题见第六节。

二、订阅类报错:取不回来,还是取回来了不能用

这一类的共同特征是:发生在导入或更新订阅的瞬间,和你日常上网通不通没关系。

Clash Verge Rev 弹出的原文

下面的中文都是从 Clash Verge Rev 仓库的简体中文语言文件里原样抄来的(src/locales/zh/ 目录),你在界面上看到的就是这些字:

你看到的原文它真正的意思先查什么
无效的订阅链接,请输入以 http:// 或 https:// 开头的地址前端格式校验没过,根本还没发请求地址开头、有没有多余空格或中文引号
订阅导入失败,尝试使用 Clash 代理导入直连取订阅失败,现在改用代理重试这不是终点,看下一条提示是成功还是失败
使用 Clash 代理导入订阅失败直连和走代理都失败了你当前有没有可用节点;日志里的原始错误
上次更新失败订阅卡片上的状态标记,定时更新没成功手动更新一次,看具体报什么
订阅配置校验失败,请检查订阅配置文件,变更已撤销,错误详情:内容取回来了,但内核拒绝加载它;客户端已自动回滚冒号后面那段才是真错误,见第四、六节
YAML 语法错误,变更已撤销你手动编辑的配置写坏了缩进、中英文冒号、Tab 混用
启动订阅配置校验失败,已使用默认配置启动;请检查订阅配置文件,错误详情:开机时那份配置就不合法,已退回默认配置同上,看冒号后面

注意第二条和第三条是一组。第一次失败只说明「直连取不到」,这是一条关于你到订阅地址这段网络的信息,不是关于节点质量的信息。

日志里那串英文状态

当订阅地址回了一个非 2xx 的 HTTP 状态,mihomo 的处理方式很直白:component/resource/vehicle.go 里,状态码不在 200–299 之间时执行 errors.New(resp.Status)——把 HTTP 状态行原样当成错误文本。所以你在日志里看到的会是:

日志里的文本含义本机可做的检查
403 Forbidden对方收到了请求但拒绝提供换一个网络环境试同一地址;确认不是被中间设备拦截
404 Not Found地址本身在对方那里不存在逐字符核对地址,注意是否被聊天软件截断
502 / 503 / 504对方服务端问题隔几分钟再试;这一类你在本机改什么都没用
超时、无响应请求根本没到这正是「尝试使用 Clash 代理导入」要解决的情况

源码里还有一个细节值得知道:304 Not Modified 不算错误——它会被当作「内容没变」正常返回。所以看到 304 不用管。

内容取回来了,但解析不了

这一组来自 mihomo 的 adapter/provider/provider.gocommon/convert/converter.go,原文如下:

报错原文意思
file must have a 'proxies' field取回的内容里没有 proxies 这一节——十有八九拿到的是 HTML 错误页,不是配置
file doesn't have any proxyproxies 字段但里面是空的
doesn't match any proxy, please check your filter节点是有的,但被你写的 filter 正则全过滤掉了
provider need one proxy at least同上,结果集为空
invalid filter regex: ...你写的过滤正则本身语法错
convert v2ray subscribe error: format invalid按 v2ray 订阅格式解析失败,内容格式对不上
unsupport proxy type: xxx配置里写了当前内核不认识的节点类型
missing type某个节点条目漏了 type 字段

第一条最值得单独说file must have a 'proxies' field 通常意味着你把一个网页存成了配置。手动检查方法是把取回的文件开头看一眼——如果第一个字符是 <,那它是 HTML。

关于「先有节点才能用节点取订阅」这个循环:当直连取不到、手上又没有任何可用节点时,两条路都断了。此时能做的是换一个网络环境(例如换到手机热点)完成一次导入,把配置文件落到本地。这属于已经没有可用出口的情形,处理顺序见《机场突然全挂了:30 分钟自救清单》

三、连接类报错:节点连不上的那一行

先明确一件事:mihomo 不会在日志里写一句「节点已失效」。它写的是 dial ... error: 加上底层网络库给出的原因。按原因分类:

error: 后面常见的内容发生在哪一步本机检查
connection refused握手前,对方端口直接拒绝该端口在你这个网络下是否被阻断——换端口的同一节点试
i/o timeout / context deadline exceeded握手中,一直没回应是否只有某一个节点这样;同地区另一个节点是否正常
no route to host / network is unreachable本机路由层TUN 是否处于半开状态;虚拟网卡是否残留
TLS handshake / certificate 相关TLS 协商阶段先看系统时间:证书校验对时钟敏感;再看 sniservername 字段是否被改过
EOF连上了又被立即断开换协议试一次,见《2026 年还在用的协议》

一个诊断技巧,不用改任何配置:把客户端切到全局模式再试同一个网址。

  • 全局模式下通了 → 问题在规则,看第六节。
  • 全局模式下也不通,但换一个节点就通了 → 问题在那个节点
  • 全局模式下换哪个节点都不通 → 问题在你到所有出口的这条链路上,这时候才轮到怀疑外部因素。

这三步的判断只需要两分钟,却能把后面所有排查的方向定下来。如果结论是「能连上但很慢」,那是另一篇的范围:《翻墙慢,到底是节点问题还是本地问题?》

各客户端的中文提示

客户端原文提示出处
Clash Verge Rev无法从内核获取代理信息。请尝试重启内核;若问题仍然存在,请打开日志目录检查内核日志。src/locales/zh/proxies.json
Clash Verge Rev内核通信错误,请重启电脑再试src/locales/zh/home.json
Clash Verge Rev某某 更新失败: 某某(代理集更新)src/locales/zh/proxies.json
FlClash切换代理失败,已恢复上一次的选择arb/intl_zh_CN.arb
FlClash未知网络错误同上
Clash Meta for Android更新失败 / 更新 某某: 某某service/src/main/res/values-zh/strings.xml

「无法从内核获取代理信息」这一条特别值得认识:它说的是图形界面和内核之间的通道断了,不是节点的问题。内核可能已经崩了,也可能外部控制端口被占用。它的提示自己就给了正确的下一步——去日志目录看内核日志。

四、DNS 与 fake-ip:最容易被误读的一类

DNS 出问题的表现往往不像 DNS 问题:某些网站打不开、某些 App 转圈、浏览器能开但客户端不行。

配置校验阶段的 DNS 报错

这一组出现在启动或保存配置的瞬间,全部来自 mihomo 的 config/config.gohub/executor/executor.go

报错原文它在说什么
if DNS configuration is turned on, NameServer cannot be empty开了 dns.enable 却没给 nameserver
default nameserver should have at least one nameserverdefault-nameserver 一个都没写
default nameserver should be pure IPdefault-nameserver 只能填纯 IP。填域名会死循环:解析这个域名本身又需要 DNS
DNS NameServer[n] unsupport scheme: xxx协议前缀不认识(拼错 httpstlsquic 之类)
DNS NameServer[n] format error: xxx那一条的写法不合法
dns.fake-ip-range must be a IPv4 prefixfake-ip-range 必须是 IPv4 网段写法
disallow fake-ip-range and fake-ip-range6 both empty with fake-ip mode选了 fake-ip 模式却两个网段都没给
if "respect-rules" is turned on, "proxy-server-nameserver" cannot be empty开了 respect-rules 就必须配 proxy-server-nameserver
DNS server must be enable某项功能(如 TUN 的 DNS 劫持)依赖 DNS 模块,但它没开
disallow empty 'proxy-server-nameserver' when 'proxy-server-nameserver-policy' is set写了 policy 却没写对应的 nameserver

default nameserver should be pure IP 是这里最值得记住的一条,因为它的成因很反直觉:default-nameserver 的职责就是解析「节点服务器的域名」,如果它自己也是个域名,就没有起点了。填 IP 是硬性要求,不是风格偏好。

fake-ip 造成的困惑

enhanced-mode: fake-ip 的做法是:给每个域名发一个假的内网地址(官方示例默认段是 198.18.0.1/16),真正的解析推迟到连接建立时再做。好处是快,副作用是——

  • 你用 ping 某个域名,得到的是 198.18.x.x 这种地址,这是正常的,不是被劫持;
  • 任何拿 IP 去做判断的软件都可能困惑(某些游戏、某些依赖 IP 白名单的客户端);
  • 需要例外的域名要写进 fake-ip-filter

相关的校验报错也很具体:dns.fake-ip-filter[n] [规则] error: invalid action 'xxx', must be 'fake-ip' or 'real-ip'... rule-set 'xxx' not found... rule type 'xxx' not supported, only domain-based rules allowed。最后一条的意思是:fake-ip-filter 里只能写基于域名的规则,写 IP 类规则会被拒绝。

怎么确认 DNS 到底有没有走对

log-level 调到 debug,你会看到 [DNS] resolve 域名 error: 原因 这类行(定义在 tunnel/tunnel.go)。内核启动时 DNS 服务本身起不来,则会有 Start DNS server error:Start DNS server(UDP) error:(定义在 dns/server.go)。

但日志只说明内核内部发生了什么,不能说明你的系统最终用了谁。那要在外面测:用 DNS 泄漏检测 看最终出去的解析服务器是谁,用 IP 地址查询 确认出口本身有没有变。如果你怀疑的是「解析结果被改了」而不是「泄漏」,那是另一套判断方法:《DNS 污染自测:三条命令分清污染、劫持和节点故障》

五、TUN 模式与权限:各系统坑不一样

TUN 要做两件高权限的事——创建虚拟网卡、改写系统路由表。因此 TUN 打不开,九成是权限或防火墙,不是配置写错。

你会看到的原文

客户端原文含义
Clash Verge RevTUN 模式需要安装服务模式或管理员模式没有拿到高权限
Clash Verge Rev由于服务不可用,TUN 模式已自动关闭后台服务没跑起来,客户端主动关了 TUN
Clash Verge Rev自动关闭 TUN 模式失败连关都没关成,通常伴随内核异常
Clash Meta for Android无法启动 VPN 组件VPN 授权没给,或被另一个 VPN 应用占着
FlClash(Windows)Windows 拒绝运行 FlClashCore.exe(错误 某码)。智能应用控制、AppLocker 等应用控制策略会拦截未签名程序系统的应用控制策略拦下了内核进程

FlClash 那条提示自己就写明了原因和解法,这类提示不要略读——它比任何第三方教程都准。

mihomo 官方文档写明的限制

这几条来自虚空终端 Docs 的 Tun 页面,是设计上的限制,不是 bug:

  • 协议栈可选 system / gvisor / mixed / mips,默认 gvisor,文档建议无问题时用 mixed
  • 防火墙开启时无法使用 systemmixed 协议栈。Windows 的放行路径文档写的是:设置 → Windows 安全中心 → 允许应用通过防火墙 → 选中内核。
  • macOS 上 TUN 网卡名只能用 utun 开头。文档说 macOS 一般无需配置,防火墙默认放行签名软件。
  • dns-hijack 有平台限制:文档原文是「在 MacOS / Windows 无法自动劫持发往局域网的 dns 请求」「在 Android 如开启 私人dns 则无法自动劫持 dns 请求」。安卓用户如果开了系统的「私人 DNS」,这是一个已知会互相打架的组合。
  • strict-route 在 Windows 上的作用是「添加防火墙规则以阻止 Windows 的普通多宿主 DNS 解析行为造成的 DNS 泄露」,文档同时提醒「它可能会使某些应用程序(如 VirtualBox)在某些情况下无法正常工作」。在 Linux 上它「让不支持的网络无法到达」「将所有连接路由到 tun」。
  • auto-redirect 仅支持 Linux,且需要 auto-route 已启用;配置校验会直接报 'auto-route' is required by 'auto-redirect'

其他与 TUN 相关的启动校验报错:when tun is enabled, iptables cannot be set automaticallynot allowed two tun listener using auto-detect-interface

一个常被忽略的后果:TUN 异常退出后虚拟网卡和路由表可能没清干净,表现为「关掉代理也上不了网」。遇到这种情况,先完全退出客户端(不是关窗口),必要时重启系统——路由表恢复后再谈别的。

六、规则与分流:看起来像断网,其实是走错了路

这一类最会骗人:某个网站打不开,你以为节点坏了,其实是它被规则送去了直连。

配置校验会拦下的名字问题

来自 config/config.go,原文模板如下(方括号里会填进实际内容):

报错模板触发原因
rules[n] [规则原文] error: proxy [名字] not found规则指向了一个不存在的节点或策略组
rules[n] [规则原文] error: format invalid这条规则写法不合法
rules[n] [规则原文] error: rule set [名字] not found引用了没有定义的规则集
rules[n] [规则原文] error: sub-rule [名字] not found引用了没有定义的子规则
sub-rule error: circular references [名字]子规则互相引用成环
proxy 名字 is the duplicate name两个节点重名
proxy group 名字: the duplicate name两个策略组重名
can not defined a provider called '名字'代理集用了保留名字
tunnel proxy 名字 not foundtunnels 段引用了不存在的出口
configuration file 路径 is empty配置文件是空的

这些全部发生在加载阶段,你的网络状况对它们没有任何影响。最高频的成因是:订阅更新后节点被改名或下线,而你手写的自定义规则、策略组还指着旧名字。

FlClash 把同类问题翻成了中文:「某某 是一个无效的代理」「某某 是一个无效的代理集」「某某 是一个无效的策略」「某某 是一个无效的 SUB_RULE」。含义和上表一一对应。

没有报错,但走错了路

更麻烦的是这一类:**配置完全合法,没有任何红字,但某个站点就是不通。**判断只要一步——在日志里搜那个域名,然后看它那一行:

  • 出现 using DIRECT → 规则把它判成了国内直连。常见于 GeoIP 库把某些地址归错,或者自定义规则顺序不对(Clash 的规则是从上往下第一条命中生效,一条过于宽泛的规则写在前面会吃掉后面所有规则)。
  • 出现 doesn't match any rule using ... → 走了兜底。兜底指向哪里,它就去哪里。
  • 出现 match ... using 某节点 但仍然失败 → 规则没问题,回到第三节按连接类排查。

顺序问题是自定义规则最常见的错误,而它不会报错——因为它语法完全正确。

七、什么时候这不是你的问题

前六节都是本机可查的。但确实存在一类情况,你怎么改都没用。特征是同时满足下面几条:

  1. 全局模式下,所有节点都连不上(不是某几个);
  2. 换一个完全不同的网络环境(例如手机热点)后,同一份配置仍然全部失败;
  3. 订阅地址本身返回的是明确的 HTTP 错误(如 403),而不是超时;
  4. 你的配置文件没有任何改动——加载阶段零报错。

四条都对上,那问题不在你的客户端。这时该做的不是继续改配置,而是按顺序处理:《机场突然全挂了:30 分钟自救清单》

反过来说,只要还有一个节点能通,或者换个网络就好了,那问题就在本机侧,本文前六节覆盖得到。

本文的边界:这里不会出现「换一家试试」这种建议,也不提供任何节点或订阅来源。报错对照表的价值在于让你知道那行红字在说什么——知道了,多数情况你自己就能修。

参考资料

以下源码与文档均于 2026 年 9 月 20 日核对;版本号于 2026 年 9 月 21 日通过 GitHub 发布接口复核。

mihomo 内核(错误文本的来源)

mihomo 官方文档(虚空终端 Docs)

  • 全局配置 — 日志级别 — 五档 log-level 的定义原文
  • DNS 配置enhanced-modefake-ip-range 默认值 198.18.0.1/16
  • 入站 Tun — 协议栈取值与差异、防火墙放行路径、dns-hijack 的平台限制、strict-route 在 Windows / Linux 上的行为(页面标注更新于 2026 年 9 月 14 日)

各客户端的界面文案(原文出处)

版本(2026-09-21 通过 GitHub Releases 接口复核):mihomo v1.19.31(2026-09-14)、Clash Verge Rev v2.5.4(2026-09-20)、FlClash v0.8.98(2026-09-14)、Clash Meta for Android v2.11.34(2026-09-14)、ClashX Meta v1.4.45(2026-09-14)。

将本指南加入收藏夹

跨境网络环境瞬息万变。建议按下 Ctrl+D (Windows) 或 Cmd+D (Mac) 收藏本页,以便在连接波动时快速查阅解决方案。

加入 5,000+ 跨境从业者,第一时间获取最新的 GFW 封锁动态与协议升级提醒。

* 我们绝不发送垃圾邮件,您可以随时取消订阅。

← DNS 污染自测:三条命令,分清污染、劫持、节点故障和网站自己挂了