这是给「装不了插件」的设备准备的方案。
OpenClash 和 Nikki 都是 LuCI 插件,前提是你的路由器刷了 OpenWrt 系固件、opkg 源还活着。老设备往往两条都不满足:固件停更、源无人维护、内存也不够。ShellCrash 绕开这一整层——它就是一套 shell 脚本,任何能 SSH + root 的 Linux 设备都能跑,路由器本身、X86 小主机、刷了 Armbian 的盒子都行。
四个方案,先对号入座
本站主力协议是 mieru,只有 mihomo 内核认它。所以选方案的第一条铁律:内核必须是 mihomo。
PassWall / PassWall2✗ 内核是 Xray / sing-box,跑不了 mieru,导入后节点几乎全被过滤掉——调 MTU 也没用,不是配置问题OpenClash✓ mihomo 内核,功能最全、教程最多。但重:低配路由可能装不上或卡到没法用Nikki✓ 同样 mihomo,轻得多。但挑固件:要 OpenWrt / ImmortalWrt 24.10+(firewall4 / nftables),老固件装不了 → Nikki 教程ShellCrash✓ 不是插件,是 shell 脚本。不挑固件、不要 LuCI、不依赖 opkg 源,能 SSH 就能跑。老设备的救命方案
前提条件
只有两条,比插件方案宽松得多:
- 一台能 SSH 登录、有 root 权限的 Linux 设备。可以是路由器本身(OpenWrt 系、小米、网件等二次开发固件都行)、X86 小主机、刷了 Armbian 的电视盒子、或者一台常开的 Debian / CentOS 服务器。
- 剩余存储 ≥ 50MB。内核 + GeoIP / GeoSite 数据库要占地方。路由器闪存紧张的话,可以挂 U 盘后把 ShellCrash 目录指过去。
一键安装
SSH 连上设备,按设备类型选一条执行(都以 root 身份):
A · 路由器设备(OpenWrt 及各类二次开发固件):
export url='https://testingcf.jsdelivr.net/gh/juewuy/ShellCrash@master' \
&& sh -c "$(curl -kfsSl $url/install.sh)" \
&& . /etc/profile &> /dev/null
B · 通用 Linux 设备(X86 小主机、Armbian 盒子、VPS):
export url='https://testingcf.jsdelivr.net/gh/juewuy/ShellCrash@master' \
&& wget -q --no-check-certificate -O /tmp/install.sh $url/install.sh \
&& bash /tmp/install.sh \
&& . /etc/profile &> /dev/null
wget,所以用 curl 直接管进 sh;通用 Linux 反过来。装错了也不要紧,报错就换另一条。最后那句 . /etc/profile 是让 crash 命令立刻生效。如果之后敲 crash 提示找不到命令,重新登录一次 SSH 即可。
选内核 · 必须 mihomo
ShellCrash 支持 mihomo 和 sing-box 两种内核,本站节点必须选 mihomo。首次运行会让你挑内核并自动下载:
crash
内核版本建议用 mihomo 1.19.4 或更新——mieru 的 UDP over TCP 支持是这个版本才补全的,更旧的版本可能只有 TCP 能走。
手动下载后放进 /etc/ShellCrash/,文件名必须改成 CrashCore,再给执行权限:
chmod 755 /etc/ShellCrash/CrashCore
GeoIP / GeoSite 数据库同理,手动丢进同一个目录即可。内核从 mihomo Releases 按设备架构下载(路由器多为 arm64 或 mipsle,X86 小主机为 amd64)。
基础设置
敲 crash 进菜单,选 2 · 功能设置,按下面四项设定就行,其余保持默认:
- 路由模式:Tproxy——透明代理的现代做法,TCP / UDP 都能接管。
- DNS 设置:默认 mix 即可,不用改。
- 启用域名嗅探:ON——开了之后分流规则才能按域名生效,不开会有一部分规则形同虚设。
- IPv6:家里是双栈网络就 ON,不确定就保持关闭。开了之后 v4 / v6 都会走代理。
添加订阅 · 最关键的一步
在 crash 菜单里选添加 / 更新订阅,粘贴时必须在订阅链接末尾加上 ?flag=clashmeta:
https://你的订阅链接?flag=clashmeta
?flag=clashmeta 起头。写成 &flag=clashmeta 会直接报 404 Not Found。🔑 只有当你的链接里本来就有
? 时,才把它换成 &。
这个参数为什么不能省? ShellCrash 拉订阅时发出的标识不含「clash」字样,机场默认会返回分享链接格式,内核解析后节点全空。加上 ?flag=clashmeta 才会强制返回 mihomo 能读的 YAML 配置——这是必需,不是可选优化。
订阅链接?flag=clashmeta✓ 正常返回配置,节点齐全订阅链接&flag=clashmeta✗ 404 Not Found不加参数直接粘贴✗ 导入后节点为空
装个网页面板
命令行里切节点太别扭,装个本地面板。回到 crash 主菜单:
然后浏览器打开(把 IP 换成你设备的实际地址):
http://192.168.x.x:9999/ui
面板里能看节点延迟、切节点、看连接日志。设置还是得回 crash 菜单改,面板只管日常使用。✔️
crash 菜单里状态是「运行中」),再确认你的电脑和设备在同一个局域网。:9999 只监听内网,外网访问不到——这是好事,别去开放它。让家里其它设备也走代理
ShellCrash 装在哪台设备上,那台就是网关。两种用法:
- 只让个别设备走:手动把那台设备的网关和 DNS 都指向 ShellCrash 设备的 IP。适合先小范围试。
- 让全家自动走:在主路由的 DHCP 设置里,把下发的网关 / DNS 改成 ShellCrash 设备的 IP。之后连上 WiFi 的设备自动生效,不用一台台配。
常见问题
面板里一个节点都没有 / 只剩零星几个?
两个可能:第 2 步内核选成了 sing-box(mieru 节点会被全丢),或 第 4 步的 ?flag=clashmeta 没加、误写成了 &。先查内核。
安装脚本卡住 / 下载失败?
GitHub 不通。回第 1 步:趁旧代理还活着时装。手机开热点给设备联网也是个办法。
敲 crash 说找不到命令?
重新登录一次 SSH,或手动执行 . /etc/profile。
装完之后能上网,但没走代理?
检查第 3 步的路由模式是不是 Tproxy;再检查设备的网关 / DNS 有没有指到 ShellCrash 那台(第 6 步)。
想卸掉?
crash 菜单里有卸载项,一路确认即可,不留残余。这也是它比刷机方案友好的地方——试错成本低。
PassWall2 上真的一点办法都没有?
没有。它的内核只有 Xray / sing-box,而 sing-box 不支持 mieru,这是内核层面的缺失,插件本身改不了。别再折腾 MTU 和分流规则了,换内核是唯一出路。
原始资料 / 延伸阅读: