客户端内核无法启动怎么办:Clash / Mihomo / sing-box 常见报错含义与逐条处理
点开客户端,内核一直在「启动中」、状态变红,日志里有一行报错。本文把 Clash、Mihomo、sing-box 内核最常见的报错按类型整理:端口占用、配置解析失败、权限不足、内核文件被安全软件删除、依赖缺失,每条解释原因并给出处理步骤。
先学会看日志
内核启动失败的信息都在日志里,不看日志靠猜效率极低。
- Clash Verge Rev:左侧「日志」页;更完整的在「设置 → 打开应用目录 → logs」。
- Clash Party / Mihomo Party:设置 → 日志。
- FlClash:工具 → 日志。
- GUI.for.SingBox / sing-box 命令行:内核的标准输出;命令行可以直接
sing-box check -c config.json做语法检查,sing-box run -c config.json看完整启动过程。 - Mihomo 命令行:
mihomo -t -f config.yaml只测试配置不启动,mihomo -f config.yaml正常启动并输出日志。
报错一般在最后几行,带 FATAL、ERRO、error 字样。下面按最常见的报错逐条说。
一、端口被占用
报错样例
listen tcp 127.0.0.1:7897: bind: address already in use
Start Mixed server error: ... only one usage of each socket address
External controller listen error
原因:内核要监听混合端口(7897 / 7890)、SOCKS 端口(1080 / 7891)、API 端口(9090 / 9097)中的某一个,但端口已经被占用。常见占用者:
- 上一次客户端没正常退出,旧内核进程还活着(最常见);
- 同时开了另一个代理客户端(Clash Verge 和 v2rayN 一起开);
- 其他软件恰好用了同一端口(开发工具、下载软件、某些游戏加速器)。
处理
- Windows:任务管理器结束所有
verge-mihomo.exe、mihomo.exe、clash.exe、sing-box.exe、xray.exe进程,再启动客户端。查端口占用用netstat -ano | findstr 7897,最后一列是 PID。 - macOS / Linux:
lsof -i :7897查占用,kill <PID>结束;或pkill -f mihomo。 - 确实被其他软件长期占用:客户端设置里改端口(改成 7899 之类),系统代理会跟着同步。
二、配置解析失败
报错样例
yaml: unmarshal errors: line 23: cannot unmarshal !!str into int
parse config error: proxy 0: unsupport proxy type: xxx
rules[12] [DOMAIN-SUFFIX,,DIRECT] error: ...
decode config: json: invalid character '}' looking for beginning of object key string
原因:配置文件不符合内核要求。分几种:
- YAML / JSON 语法错误:缩进用了 Tab、冒号后面没空格、引号没闭合、多了逗号。报错里一般有行号。
- 字段类型错误:
port: "7890"(应为数字)、udp: "true"(应为布尔)。 - 不支持的协议或字段:原版 Clash 内核不认 vless、hysteria2、tuic,遇到订阅里有这些节点就报
unsupport proxy type。换 Mihomo 内核。 - 规则格式错:缺字段、多逗号、策略组名不存在(
proxy group not found)。 - sing-box 版本差异:1.8 之后 geosite / geoip 字段弃用,1.10 后部分 inbound 字段改名,旧配置在新内核上直接解析失败。
处理
- 订阅自动生成的配置出问题:先「更新订阅」一次,多数能解决。
- 手改过配置:用在线 YAML 校验(或
mihomo -t)、JSON 校验(或sing-box check)定位到行,修正后再启动。 - 覆写脚本导致的错误:Clash Verge Rev 里先禁用全部覆写,能启动就是覆写有问题,逐个启用定位。
- 内核不支持:切 Mihomo 内核(Clash Verge Rev 设置里的「Clash 内核」切换),或更新 sing-box 到配置要求的版本。
三、权限不足
报错样例
operation not permitted
Start TUN listening error: ... requires elevated privileges
create tun: ... Access is denied
failed to create tun interface
原因:TUN 模式需要创建虚拟网卡,这是系统级操作。普通用户权限做不到。
处理
- Windows:客户端右键「以管理员身份运行」;或 Clash Verge Rev 设置 → 「服务模式」安装系统服务,之后不需要每次提权。
- macOS:第一次开 TUN 会要求输入密码并在「系统设置 → 隐私与安全性」里允许系统扩展或网络扩展。拒绝过的要去这里重新允许。
- Linux:
sudo setcap cap_net_admin,cap_net_bind_service=+ep /path/to/mihomo,之后可以非 root 运行;或者直接用 sudo。 - 不需要 TUN 的用户,直接关掉 TUN 用系统代理,内核就能正常启动。TUN 其他问题见 TUN 模式问题。
四、内核文件被安全软件删除
报错样例
系统找不到指定的文件
spawn ENOENT
Failed to start core: core file not found
原因:Windows Defender、360、火绒、腾讯电脑管家把 mihomo.exe、xray.exe、sing-box.exe 当成木马隔离了。这些内核因为有流量伪装能力,误报率一直很高。macOS 的 Gatekeeper 则会把未签名的内核标记为「已损坏」拒绝运行。
处理
- 到安全软件的隔离区 / 病毒防护历史恢复文件。
- 把客户端整个安装目录和数据目录加入信任区。
- 在客户端设置里重新下载内核,或切换到客户端自带的另一个内核版本。
- macOS 终端执行
xattr -cr /Applications/客户端名.app去掉隔离标记。 - 以后更新客户端前先临时关闭实时防护,更新完再加白名单。
下载来源不对也会让安全软件更警觉,下载客户端只走官方仓库,见客户端下载安全指南。
五、运行时初始化失败
启动过程没报语法错,但内核跑几秒就退出:
- DNS 初始化失败:
dns: nameserver ... invalid、start DNS server error。DNS 的 listen 端口被占用(常见 53 或 1053),或 nameserver 格式错。 - Provider 下载失败:
initial proxy provider ... error、rule-set ... download failed。配置里引用了远程代理集或规则集,启动时下载不到。需要先有可用的网络,或给 provider 配proxy/download_detour;或者暂时把 provider 的interval调长、先用本地缓存。 - 证书文件不存在:自定义了 TLS 证书路径但文件不在。
- 外部控制器:
external-controller端口被占(9097 / 9090),参照第一节。
这类错误要把日志级别调到 debug,看最后一条非 info 的记录。
六、依赖和环境
- Windows 缺运行库:客户端界面能开但内核报
0xc000007b或无提示退出,装最新的 Microsoft Visual C++ 运行库。 - Linux 缺 glibc 版本或架构不匹配:下载的内核是 amd64,机器是 arm64,或者是 glibc 版本过低(老 CentOS),报
exec format error或GLIBC_2.xx not found。换对应架构或静态编译版本。 - 路径含特殊字符:安装目录里有中文、空格或特殊符号,部分内核版本读取配置失败。把客户端装到纯英文路径。
- 磁盘只读或空间不足:内核无法写入缓存文件,日志里有
read-only file system或no space left。
七、客户端与内核版本不匹配
客户端更新了但内核没更新(或反过来),客户端生成的配置包含内核不认的字段。Clash Verge Rev 在设置里能看到内核版本并一键升级;sing-box 系客户端通常要求内核版本在某个范围内,看客户端发布说明。更新相关的问题可以参考 Clash Verge 打不开怎么办。
八、没有任何报错,一直卡在「启动中」
日志为空、状态一直转圈,通常不是内核的错,而是客户端界面没拿到内核的回应:
- 客户端通过 API 端口(9097 / 9090)和内核通信,这个端口被防火墙拦了或被占了,内核其实在跑,界面却认为没启动。放行客户端通过防火墙,或改 API 端口。
- 客户端目录里有两个内核进程在互相抢端口,任务管理器里全部结束再启动。
- 配置文件特别大(几千条规则加多个 provider),内核加载需要十几秒,耐心等一下,或者精简规则。
- 客户端数据目录损坏,删掉数据目录里的缓存文件(保留订阅文件)后重启。
处理顺序
- 看日志最后几行,确定报错类型;
- 端口占用 → 结束残留进程;
- 解析失败 → 更新订阅 / 禁用覆写 / 校验语法 / 换 Mihomo 内核;
- 权限 → 管理员 / 服务模式 / 允许系统扩展;
- 文件丢失 → 安全软件隔离区恢复 + 白名单;
- 运行时退出 → debug 日志,查 DNS、Provider;
- 以上无效 → 卸载干净(含数据目录),重新安装最新版,重新导入订阅。
相关
Mihomo 内核说明 · sing-box 客户端教程 · Clash Verge Rev 教程
常见问题
日志里 bind: address already in use 是什么意思?
内核要监听的端口(如 7897、7890、9097)已经被别的程序占着。多半是上次没退干净的内核进程,或另一个代理软件。结束占用进程或改端口。
报 yaml: unmarshal errors 或 parse config error 怎么办?
配置文件格式错了:缩进不对、冒号后没空格、字段名拼错、用了内核不支持的字段。看报错里的行号,用在线 YAML 校验工具检查;订阅配置出问题就重新更新订阅。
客户端目录里内核文件不见了?
被安全软件当病毒删了。从隔离区恢复,把客户端目录加入白名单,然后在客户端设置里重新下载或切换内核。
TUN 模式一开内核就启动失败?
TUN 需要管理员 / root 权限或服务模式。Windows 以管理员运行或安装服务,macOS 允许系统扩展或输入密码,Linux 给内核加 cap_net_admin 能力。
内核启动了几秒又自己退出?
一般是配置通过了语法检查但运行时出错:DNS 无法初始化、Provider 下载失败、规则集文件缺失。把日志级别调成 debug 看最后几行。
本文为信息整理与个人经验,不构成购买建议。机场政策与软件界面可能变化,以官方为准。发现过期内容请 联系纠错。