OpenClash 安装教程:官方 OpenWrt 25.12 选 apk 还是 ipk、依赖与手动放置 Mihomo 内核
在官方 OpenWrt 上安装 OpenClash 0.48.002:按版本选 .apk 或 .ipk,装好 dnsmasq-full 等依赖,内核下载失败时按 CPU 架构手动放置 Mihomo 内核。约 15 分钟。
官方 OpenWrt 25.12 用 apk,装本站的 luci-app-openclash-0.48.002.apk;24.10 及更早用 opkg,装 luci-app-openclash_0.48.002_all.ipk。先用命令装好依赖(官方 OpenWrt 要把 dnsmasq 换成 dnsmasq-full),再装插件;25.12 装本地 .apk 要加 --allow-untrusted,这个参数会跳过 apk 的签名检查,所以装之前必须先核对文件的 SHA-256。插件第一次启动要下载 Mihomo 内核,下载失败时把本站对应架构的内核解压到 /etc/openclash/core/clash_meta 即可。
本文只讲安装、内核和启动排错,不涉及订阅、节点或规则内容。
先判断你是哪种情况
| 你的情况 | 看哪一节 |
|---|---|
| 不知道自己是 apk 还是 opkg | 第 1 步:确认版本和架构 |
| OpenWrt 25.12(apk) | 第 2 步 A |
| OpenWrt 24.10 或更早(opkg) | 第 2 步 B |
| 装好了,日志提示内核下载失败 | 第 4 步:手动放置 Mihomo 内核 |
25.12 上装 .ipk 报错、网页上传 .apk 报 UNTRUSTED signature | 常见问题 |
第 1 步:确认版本、包管理器和 CPU 架构
用 SSH 登录路由器(Windows 可直接用自带的 ssh root@192.168.1.1),运行:
cat /etc/openwrt_release
which apk opkg应看到:DISTRIB_RELEASE 是版本号,DISTRIB_ARCH 是 CPU 架构;which 只会显示 /usr/bin/apk 或 /bin/opkg 其中一个。
| 结果 | 下载哪个插件包 |
|---|---|
25.12,有 /usr/bin/apk | OpenClash 页 的 luci-app-openclash-0.48.002.apk |
24.10 及更早,有 opkg | OpenClash 页 的 luci-app-openclash_0.48.002_all.ipk |
还没刷官方 OpenWrt 的,先按型号教程刷好,例如 GL-MT3000、小米 AX3000T、NanoPi R4S、x86 小主机。
两个文件都是架构无关的插件包,任何 CPU 都用同一个;真正要按 CPU 选的是第 4 步的内核。下载后核对页面上的 SHA-256,方法见 如何核对下载文件的 SHA-256。
注意OpenClash 官方推荐在 OpenWrt 官方固件或 ImmortalWrt 上使用。插件加内核要占几十 MB 空间,先用 df -h / 看剩余空间;16 MB 闪存的老路由器基本放不下。
第 2 步 A:OpenWrt 25.12(apk)
- 把插件包传到路由器的
/tmp。在电脑上运行(较新的 Windows/macOS 自带scp,报错时加-O,这是 OpenWrt 官方 Wiki 的写法):
scp -O luci-app-openclash-0.48.002.apk root@192.168.1.1:/tmp/- 在路由器上安装依赖。这是 OpenClash 官方说明里 nftables(Firewall4)的依赖清单,25.12 默认就是 Firewall4:
apk update
apk add bash dnsmasq-full curl ca-bundle ip-full ruby ruby-yaml kmod-tun kmod-inet-diag unzip kmod-nft-tproxy luci-compat luci luci-base应看到:过程中有 Purging dnsmasq、Installing dnsmasq-full,最后一行以 OK: 开头。apk 会自动用 dnsmasq-full 替换原来的 dnsmasq。
- 先在路由器上核对插件包的 SHA-256:
sha256sum /tmp/luci-app-openclash-0.48.002.apk应看到:输出的一长串字符和 OpenClash 页 上这个文件的 SHA-256 完全一致。不一致就删掉文件重新下载,不要继续安装。
注意下一步的 --allow-untrusted 会让 apk 跳过签名检查:不再确认这个包是不是 OpenWrt 官方密钥签名的,没有签名或签名不受信任也照样安装。这时能证明文件没被替换或损坏的只有你刚才核对的 SHA-256。来历不明的 .apk 不要用这个参数安装。
- 安装插件(参数与 OpenClash 官方安装命令一致):
apk add -q --force-overwrite --clean-protected --allow-untrusted /tmp/luci-app-openclash-0.48.002.apk应看到:没有 ERROR 输出。去掉 --allow-untrusted 会报 UNTRUSTED signature,原因见常见问题。
- 刷新 LuCI 网页(或重新登录),菜单 Services(服务)下出现 OpenClash。
第 2 步 B:OpenWrt 24.10 及更早(opkg)
- 同样把
luci-app-openclash_0.48.002_all.ipk传到/tmp。 - 先把
dnsmasq换成dnsmasq-full。opkg 不会自动替换,两个包同时装会报文件冲突。dnsmasq同时负责路由器自己的域名解析,先卸载再在线安装会因为解析不了域名而下载失败,家里设备也会暂时拿不到地址。所以要先把安装包和它需要的库下载好,再卸载、再从本地文件安装:
opkg update
cd /tmp && opkg download dnsmasq-full
opkg install libnettle8 libnetfilter-conntrack3
opkg remove dnsmasq && opkg install /tmp/dnsmasq-full_*.ipk应看到:最后一行输出 Configuring dnsmasq-full,没有 Collected errors。libnettle8、libnetfilter-conntrack3 是 24.10 官方软件源里 dnsmasq-full 依赖的库,已经装过的会直接跳过。
- 安装其余依赖(OpenClash 官方说明的 Firewall4 清单;22.03 起官方 OpenWrt 默认用 Firewall4):
opkg install bash dnsmasq-full curl ca-bundle ip-full ruby ruby-yaml kmod-tun kmod-inet-diag unzip kmod-nft-tproxy luci-compat luci luci-base- 核对插件包的 SHA-256(
sha256sum /tmp/luci-app-openclash_0.48.002_all.ipk,和 OpenClash 页 对比),一致后安装:
opkg install /tmp/luci-app-openclash_0.48.002_all.ipk也可以按 OpenClash 官方说明,在 LuCI 的 System → Software 里点 Upload Package… 上传 .ipk 安装。
- 刷新 LuCI,进入 Services → OpenClash。
提示还在用 iptables(Firewall3)的很老版本,依赖要换成官方说明里的 iptables 清单(iptables、ipset、iptables-mod-tproxy、iptables-mod-extra 等)。OpenWrt 25.12 的软件源里已经没有这些 iptables 包。
第 3 步:第一次启动
- 打开 Services → OpenClash。OpenClash 安装时会按
DISTRIB_ARCH自动选好内核的“编译版本”,可在 插件设置 → 版本更新(Plugin Settings → Version Update)里看到“处理器架构”和“编译版本”。 - 导入你自己的配置文件后启动。没有内核时,OpenClash 会自动下载,日志里先出现
Core Downloading, Please Try to Download and Upload Manually If Fails。 - 下载成功会显示
Core Download Successful和Core Update Successful;失败就继续第 4 步。
第 4 步:手动放置 Mihomo 内核
OpenClash 只认一个位置:/etc/openclash/core/clash_meta(开启“小闪存模式”时是 /tmp/etc/openclash/core/clash_meta,放在内存里,重启后会清空)。它自己下载时,也是把内核解压、加上执行权限后放到这里。
- 按
DISTRIB_ARCH在 Mihomo 内核页 选文件。下表是 OpenClash 源码里的对应规则:
DISTRIB_ARCH 开头 | 常见设备 | OpenClash 编译版本 | 本站文件 |
|---|---|---|---|
x86_64 | x86 小主机、虚拟机 | linux-amd64-v1 | mihomo-linux-amd64-v1-v1.19.32.gz |
aarch64_ | MT7981/MT7986 路由器、RK3328/RK3568/RK3588、树莓派 4/5 | linux-arm64 | mihomo-linux-arm64-v1.19.32.gz |
arm_cortex-a7、arm_cortex-a9 等 | IPQ40xx 等 32 位 ARM | linux-armv7 | mihomo-linux-armv7-v1.19.32.gz |
mipsel_ | MT7621(小米 4A 千兆版、AC2100 等)、MT76x8 | linux-mipsle-softfloat | mihomo-linux-mipsle-softfloat-v1.19.32.gz |
mips_ | ath79(高通 AR/QCA 老路由器) | linux-mips-softfloat | mihomo-linux-mips-softfloat-v1.19.32.gz |
mipsel 和 mips 字节序不同,选错就无法运行。其他架构(armv5/armv6、riscv64、mips64、loongarch64 等)本站暂未收录,从文末“官方资料”进入 OpenClash 项目页查找。
- 核对 SHA-256 后传到路由器(以 arm64 为例,文件名换成你下载的):
scp -O mihomo-linux-arm64-v1.19.32.gz root@192.168.1.1:/tmp/- 在路由器上解压到 OpenClash 的内核位置并加权限:
mkdir -p /etc/openclash/core
gzip -dc /tmp/mihomo-linux-arm64-v1.19.32.gz > /etc/openclash/core/clash_meta
chmod 4755 /etc/openclash/core/clash_meta
/etc/openclash/core/clash_meta -v
rm /tmp/mihomo-linux-arm64-v1.19.32.gz应看到:-v 输出以 Mihomo Meta v1.19.32 开头,并显示和你设备一致的系统与架构(例如 linux arm64)。报 not found、Exec format error 或 Illegal instruction,说明架构选错了,删掉换一个。
- 回到 OpenClash 重新启动。插件看到
clash_meta已存在就不会再去下载。
注意解压后的内核较大(x86-64 版约 59 MB),先用 df -h / 确认空间。不要开启 Smart 内核:OpenClash 会检查内核是不是 Smart 版本,不是就重新下载,本站提供的是 Mihomo 官方标准版。
提示OpenClash 自己在线下载的是它用 Mihomo 源码自动构建的版本(Alpha 分支),本站收录的是 Mihomo 官方正式发布版,所以“版本更新”页可能显示有新版本。能联网时可以在那里在线更新,失败了再按本节手动放回。
常见问题
- 内核一直下载失败:日志里常见
Core Version Check Error, Please Try Again Later...、Core Update Failed或Checksum Verification Failed。OpenClash 官方给的排查顺序:确认已装ca-bundle;在 覆写设置 → 常规 里修改“Github 地址”换用官方列出的 CDN;确认闪存空间和 CPU 架构选择;仍不行就按第 4 步手动放置。 - `No Compiled Version Selected`:“编译版本”是空的。到 插件设置 → 版本更新 里按上表选好对应架构。手动放置内核不受这个选项影响。
- `Core is not Detected installed, Ready to Download...`:
/etc/openclash/core/clash_meta不存在。检查路径和文件名是否完全一致,开了小闪存模式的要放在/tmp/etc/openclash/core/。 - 25.12 上装 `.ipk` 失败:25.12 已改用 apk,不能再装
.ipk,改用本站的.apk文件。反过来 24.10 也装不了.apk。 - 网页 System → Software 上传 `.apk` 报 `UNTRUSTED signature`:apk 只信任 OpenWrt 官方签名的包,本地第三方包要加
--allow-untrusted(跳过签名检查)。25.12 网页上传时不会带这个参数,所以很可能报这个错。先核对 SHA-256(网页上传对话框会显示文件的 SHA256,可以拿来和本站页面核对),一致后再按第 2 步 A 的命令安装。 - LuCI 页面错乱或按钮没反应:缺
luci-compat,补装后刷新。 - 启动日志提示 `Ruby Works Abnormally`:
ruby或ruby-yaml没装好,重新安装依赖。
资料来源
按 OpenClash 官方 README、官方使用手册(依赖清单、报错速查、版本更新页说明)与 v0.48.002 源码(Makefile 依赖、内核下载脚本、启动脚本、架构对应规则、上传页面),OpenWrt 官方 Wiki(opkg 到 apk 对照表、SSH 管理、备份与恢复中的 scp 说明)、OpenWrt 25.12.6 官方软件源与 LuCI 软件包管理源码,以及 Mihomo 官方发布页整理(2026-10-22 查阅)。
提示本页按官方文档和源码整理,本站没有在路由器实机上测试。不同固件的软件源和闪存空间不同,以你的设备为准。
整理:AppGoBox · 依据 · 本站未在实机上逐一验证