官方下载入口
按钮只指向项目的官方发布页或官方商店。本站不托管任何安装包。
适合这些人
- 路由器刷了 OpenWrt 或 ImmortalWrt,想让智能电视、游戏主机这些没法装代理软件的设备也用上代理
- 机场给的是 Clash 订阅,想直接沿用订阅里自带的分流规则
- 能接受在路由器后台多学几个页面,运行状态、插件设置、配置订阅都要碰
用之前要知道
- 它依赖 OpenWrt 的 LuCI 后台,原厂固件和梅林都装不了。项目文档推荐 ImmortalWrt 或 OpenWrt 官方固件,不推荐第三方魔改固件和停更的旧固件
- 要用 dnsmasq-full。固件自带的精简版 dnsmasq 缺 ipset 和 nftset 支持,得先卸掉换成 full 版
- 依赖十几项,iptables 和 nftables 两种防火墙要装的包不一样,发布说明里各给了一套命令
- 项目文档强烈建议把 OpenClash 部署在主路由上,理由是旁路由组网有网络层面的固有缺陷
- 闪存小的机器可以开小闪存模式,内核和 GEOIP 数据改放在内存目录里,代价是每次重启都要重新下载
2019 年建仓,今年 5 到 8 月发了五个版本
OpenClash 的 README 第一句话说,本插件是一个可运行在 OpenWrt 上的 Mihomo(Clash) 客户端。作者 vernesong,仓库建于 2019 年 5 月 29 日,许可证 MIT,致谢里写明代码基于 frainzy1477 的 Luci For Clash,内核用的是 MetaCubeX 的 mihomo。
我在 2026 年 9 月 20 日看过仓库,没有归档,提交数 3714,星标 2.75 万,最近一次推送在 9 月 18 日。发布页上从 5 月 30 日的 v0.47.096 到 8 月 10 日的 v0.47.156 一共五个版本。v0.47.110 起 apk 安装包默认带上 luci-compat 依赖,v0.47.156 开始允许插件和内核降级。
插件和内核分开,订阅按 Clash 格式处理
装进路由器的 luci-app-openclash 是一个后台管理界面,转发流量靠 mihomo 内核,内核文件放在 /etc/openclash/core 目录里。v0.47.156 的发布说明特意提醒,启动前先到插件设置的版本更新标签下确认内核编译版本,也就是和路由器 CPU 对应的那一版。
运行状态页上有两组开关,运行模式分兼容、TUN 和混合三种,代理模式分策略代理、全局代理和全局直连。README 的致谢里还列了 zashboard 和 yacd 两个控制面板,切换节点、看连接也能在面板里做。
订阅由插件下载后用 Ruby 解析,所以 ruby 和 ruby-yaml 在依赖里。它读的是 Clash 的 YAML 配置,节点和分流规则会一起带进来,还能按关键字筛掉不要的节点。家里的手机、电视走路由器上网时,流量由 OpenClash 按规则分流,设备上什么都不用装。节点全部来自机场订阅,还没有的话,可以先看机场推荐榜单。
和 PassWall2、ShellCrash 各管一类情况
同样装在路由器上的,PassWall2 也是 LuCI 插件,README 标注的门槛是 OpenWrt 21.02 以上,它按节点来管理,订阅导进来的是一个个节点,分流方式在插件里设置。ShellCrash 是 Shell 脚本,通过 SSH 部署 mihomo 或 sing-box,不需要 LuCI,梅林这类装不了 OpenWrt 插件的固件也能用。机场给 Clash 订阅、路由器是 OpenWrt 的,OpenClash 最对口。
安装包看包管理器,依赖看防火墙
v0.47.156 的发布页只有两个安装文件,luci-app-openclash_0.47.156_all.ipk 和 luci-app-openclash-0.47.156.apk,都在 10 MB 左右,ipk 文件名里的 all 表示不分 CPU 架构。OpenWrt 24.10 及更早的固件用 opkg,下 ipk。25.12 分支换成了 apk 包管理器,下 apk。
依赖要看防火墙。22.03 起官方固件默认是 nftables,需要 kmod-nft-tproxy,老固件的 iptables 环境则要 iptables-mod-tproxy、iptables-mod-extra 和 ipset。两种环境都要 dnsmasq-full、bash、curl、ruby、ruby-yaml、kmod-tun 等十几个包,发布说明按四种组合各给了一段安装命令。完整步骤和截图见本页的路由器教程,别的路由器插件在路由器平台页里对比。
路由器 图文教程
OpenClash 路由器教程,装插件、导入 Clash 订阅到切换节点
整个过程在 OpenWrt 的 SSH 和网页后台里完成。先确认包管理器和防火墙类型,装依赖和插件、下载内核,再导入机场的 Clash 订阅、启动服务,最后进控制面板选节点。截图是 v0.46.001-beta,固件基于 OpenWrt 23.05 分支。
开始之前
- 路由器已经刷好 OpenWrt 或 ImmortalWrt,能用浏览器登录 LuCI 后台,也能用 SSH 连上。项目文档不推荐第三方魔改固件和已经停更的旧固件
- 闪存和内存要留余量。项目没有公布最低配置,能核对的数字是插件安装包约 10 MB,arm64 内核压缩包约 10 MB、x86 的约 13 MB,解压后更大,另有 ruby 等十几个依赖包
- 动手前备份。在系统菜单的备份与升级页面生成一份配置备份,装插件出了问题可以恢复。刷机本身有变砖风险,这份教程假定固件已经刷好
- 一条 Clash 格式的机场订阅,在机场用户中心复制
用 SSH 确认包管理器和防火墙
SSH 登录路由器,执行
opkg --version,有版本号输出就是 opkg,后面装 ipk。提示找不到命令,再试apk --version,OpenWrt 25.12 分支起换成了它,装 apk。防火墙看固件版本,22.03 及以后的官方固件默认是 nftables,更早的是 iptables。这两项决定下一步用哪套命令。照发布说明装依赖,再装插件
发布说明按包管理器和防火墙给了四段命令,照自己的组合复制。以 nftables 加 opkg 为例,先
opkg update,再用opkg install装 bash、dnsmasq-full、curl、ca-bundle、ruby、ruby-yaml、kmod-tun、kmod-nft-tproxy、luci-compat 等包,最后装luci-app-openclash_0.47.156_all.ipk。apk 固件换成apk add,本地包要带--allow-untrusted。固件自带的精简版 dnsmasq 要先卸掉。在服务菜单里打开 OpenClash
刷新 LuCI,左侧服务菜单下多出 OpenClash,点进去是运行状态页。顶上一排标签从运行状态排到运行日志,中间的表格列着主程序和守护程序的状态、运行模式、代理模式,右边是控制面板的登录 IP、端口和密钥。最下面一行是实时流量,截图里内核的内存占用是 23.5 MB。

到版本更新标签确认内核
插件只是管理界面,转发流量的 mihomo 内核要另外下载,放在 /etc/openclash/core 目录。v0.47.156 的发布说明提醒,启动前先到插件设置的版本更新标签,确认内核编译版本和路由器 CPU 对得上,再下载内核。内核从 OpenClash 仓库的 core 分支拉取,路由器连不上 GitHub 时会失败。
在机场用户中心复制订阅地址
打开机场网站,登进自己的账户。截图这家面板把订阅入口放在捷径区的一键订阅里,点开后弹出一个小菜单,第一项复制订阅地址就是要的。别家面板的样子会不一样,认准写着订阅的入口就行。订阅地址谁拿到都能用你的流量,别发给别人。

有多个格式按钮时,挑 Clash 那一个
有的面板另有一块便捷导入区,按客户端分出一排复制按钮,V2Ray、Quantumult(X)、SSR 各有一个。OpenClash 读 Clash 格式,复制写着 CFW / ClashX 订阅的那个。CFW 是已经停更的 Clash for Windows,这里只是借它的名字标明格式。

打开配置订阅标签,点添加
回到 OpenClash,点顶部的配置订阅。页面上半部分是自动更新的勾选框,下面的订阅表格还写着尚无任何配置。点表格下方蓝色的添加,进入新建订阅的页面。表格最底下的保存配置和更新配置两个按钮,等订阅加好再用。

填配置文件名和订阅地址,保存
配置文件名填个好认的名字,灰字 OpenClash.ORG 只是占位,下面提示用于区分,请勿重名。订阅地址粘贴刚复制的链接,User-Agent 保持 Clash。在线订阅转换别勾,它会把订阅交给外部转换服务。排除无效节点后面的过期时间、剩余流量几个勾选框,能把机场塞进来的提示条目筛掉。点保存配置。

看语法检查通过,再点启动 OpenClash
回到运行状态页往下翻,订阅表格里多了一行,截图这一行显示已用 72.5 GB、共 200.0 GB,到期日和剩余天数也在上面,语法检查一栏写着检查通过。再往下是 IP 地址和网站访问检查两块,百度、网易云音乐、GitHub、YouTube 都显示连接正常。确认后点左下的启动 OpenClash。

代理模式留在 Rule
表格里的代理模式一行有 Rule、Global、Direct 三个按钮。选 Rule 时,哪些网站走节点由订阅里的规则决定,国内网站照样直连,日常就用它。Global 把全部流量交给一个节点,适合临时判断是不是节点的问题。Direct 等于不走代理。旁边的运行模式截图选的是兼容,不熟悉时别改。

从三个控制面板里挑一个打开
代理模式下面并排三个按钮,Yacd、Metacubexd 和 Dashboard,都是 mihomo 的网页控制面板,功能差不多,挑一个顺眼的点。面板的登录地址、端口和密钥就是表格右边那三行,截图里端口是 9090。面板在新标签页打开,打不开先确认主程序是运行中。

在策略组里点节点完成切换
面板左边点代理,右边第一块是策略组,国外流量、Telegram、Youtube、Netflix、Steam 等各占一行,每行后面是可选的节点。点某个节点它就会高亮,这一组的流量随即改走它。下半部分的代理区列出全部节点,右上角的测速能测一遍延迟,节点名怎么读见这篇。截图面板左下角显示内核版本 v1.18.0。

用家里其他设备验证
拿一台连着这台路由器的手机或电脑,不开任何代理软件,打开一个平时要代理才能访问的网站,能加载就说明路由器在替它转发。回到运行状态页,上传、下载和活动连接的数字会跟着动起来。控制面板的连接页能看到每条连接走的是哪个节点。
这一步卡住了
启动失败,日志里有 Ruby Works Abnormally
项目文档说这是 ruby 相关的包没装好。到系统菜单的软件包页面确认 ruby、ruby-yaml 已经安装,新版还依赖 ruby-psych。装齐后重启 OpenClash。拿不准缺什么,就在运行日志页点生成日志,里面有一节依赖检查。
OpenClash 在运行,家里设备却解析不了域名
先查 dnsmasq 是不是 full 版。在 SSH 里执行 dnsmasq --version,看第一行,fw4 固件要带 nftset,老固件要带 ipset。项目文档说精简版缺这些功能,DNS 劫持会失效,要在软件包页面卸掉 dnsmasq,换装 dnsmasq-full。
内核一直下载失败
内核从 OpenClash 仓库的 core 分支下载,路由器连不上 GitHub 就会失败,日志会提示可以手动下载再上传。在电脑上下载和路由器 CPU 对应的 clash-架构名.tar.gz,到配置管理页面用文件上传传上去,上传类型选内核文件,插件会自己解压。
Hysteria2、TUIC 节点连不上或者老断流
项目文档对这类 QUIC 节点的第一条建议,是到插件设置的模式设置里打开禁用 quic-go GSO,再重启 OpenClash。文档说这是 Linux 内核 6.6 以上最常见的 QUIC 兼容问题。还不行,就生成调试日志看内核报了什么。
网页能开,游戏和语音这类 UDP 流量不走代理
nftables 固件上多半是缺 kmod-nft-tproxy,文档列的症状正是 UDP 无法代理,启动日志里会有 nft_tproxy module not found。在软件包页面装上它,重启 OpenClash。iptables 固件对应的是 iptables-mod-tproxy 和 kmod-ipt-tproxy。
关于 OpenClash 的常见问题
OpenWrt 25.12 装 OpenClash 用哪个包
用 apk。OpenWrt 从 25.12 分支起把包管理器换成了 apk,24.10 及更早的固件还是 opkg,对应 ipk。apk 装这种本地包要加 --allow-untrusted,发布说明给的安装命令里已经带着。
怎么知道路由器用的是 iptables 还是 nftables
看固件版本最直接。OpenWrt 22.03 起官方固件默认用基于 nftables 的 firewall4,更早的版本用 iptables。两种环境的依赖不同,nftables 要 kmod-nft-tproxy,iptables 要 iptables-mod-tproxy 等几个包。
OpenClash 第一次启动前要做什么
按 v0.47.156 发布说明的提醒,启动前先到插件设置页面的版本更新标签,确认内核编译版本和路由器的 CPU 架构对得上。插件本身只是管理界面,mihomo 内核放在 /etc/openclash/core 目录,架构选错了内核跑不起来。
机场只给分享链接格式的订阅,OpenClash 能用吗
OpenClash 按 Clash 的 YAML 解析订阅,分享链接格式要靠配置订阅里的订阅转换,把订阅地址交给转换后端处理成 Clash 配置。后端如果是第三方服务,等于把订阅地址交给了别人,最好先问机场有没有 Clash 格式的链接。
OpenClash 启动失败,从哪里开始查
先生成调试日志。在运行日志页面点生成日志,或者在 SSH 里执行 /usr/share/openclash/openclash_debug.sh,日志里有一节依赖检查,缺哪个包一眼能看到。项目文档列的常见原因里,dnsmasq 不是 full 版和 ruby 相关的包缺失都会让启动失败。
