ShellCrash · mihomo · 不用刷机

老路由器 也能跑

OpenClash 太卡、Nikki 又嫌你固件太旧?那就都不用装。ShellCrash 只要设备能 SSH 进去、有 root,就能把 mihomo 内核跑起来——不挑固件、不用 LuCI、不依赖 opkg 源。

这是给「装不了插件」的设备准备的方案。

OpenClash 和 Nikki 都是 LuCI 插件,前提是你的路由器刷了 OpenWrt 系固件、opkg 源还活着。老设备往往两条都不满足:固件停更、源无人维护、内存也不够。ShellCrash 绕开这一整层——它就是一套 shell 脚本,任何能 SSH + root 的 Linux 设备都能跑,路由器本身、X86 小主机、刷了 Armbian 的盒子都行。

行前三问 · Pre-flight
  1. 设备能 SSH 登录、且是 root 吗?这是唯一的硬门槛 → 第 0 步
  2. 装的时候能翻墙吗?安装源在 GitHub,得趁旧梯子还活着装 → 第 1 步
  3. 内核务必选 mihomo,订阅末尾务必加 ?flag=clashmeta → 第 2 步

四个方案,先对号入座

本站主力协议是 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 就能跑。老设备的救命方案
固件够新 → 用 Nikki(最省事) · 固件太旧 / 装不了插件 / OpenClash 卡 → 用 ShellCrash(本文)
一句话选:能装 Nikki 就装 Nikki,装不了才来 ShellCrash。ShellCrash 更自由,代价是全程在命令行里选菜单,没有网页设置界面(面板只用来看节点、切节点)。
0

前提条件

只有两条,比插件方案宽松得多:

  • 一台能 SSH 登录、有 root 权限的 Linux 设备。可以是路由器本身(OpenWrt 系、小米、网件等二次开发固件都行)、X86 小主机、刷了 Armbian 的电视盒子、或者一台常开的 Debian / CentOS 服务器。
  • 剩余存储 ≥ 50MB。内核 + GeoIP / GeoSite 数据库要占地方。路由器闪存紧张的话,可以挂 U 盘后把 ShellCrash 目录指过去。
不需要刷机。这是 ShellCrash 和另外三个方案最大的区别——它不碰固件、不装 LuCI 插件,只往系统里放一套脚本和一个内核二进制。
1

一键安装

⚠️ 先装后停 · 顺序别反 安装源在 GitHub,国内直连不通。请在旧的代理(OpenClash / 手机热点 / 任何能翻墙的方式)还可用的状态下执行安装,装完再停。已经把 OpenClash 停掉的,先回去开起来再装。

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
两条命令的区别只在下载工具:路由器的 BusyBox 环境常常没有完整 wget,所以用 curl 直接管进 sh;通用 Linux 反过来。装错了也不要紧,报错就换另一条。

最后那句 . /etc/profile 是让 crash 命令立刻生效。如果之后敲 crash 提示找不到命令,重新登录一次 SSH 即可。

2

选内核 · 必须 mihomo

ShellCrash 支持 mihomo 和 sing-box 两种内核,本站节点必须选 mihomo。首次运行会让你挑内核并自动下载:

crash
⚠️ 选错内核 = 一个节点都看不到 选了 sing-box 的话,订阅能拉下来,但 mieru 节点会被全部丢掉,面板里空空如也——现象和「订阅坏了」一模一样,极容易误判。官方 sing-box 至今不支持 mieru(社区提交的支持 PR 已被上游驳回),这不是版本旧的问题,换新版也没用。

内核版本建议用 mihomo 1.19.4 或更新——mieru 的 UDP over TCP 支持是这个版本才补全的,更旧的版本可能只有 TCP 能走。

内核自动下载失败?

手动下载后放进 /etc/ShellCrash/,文件名必须改成 CrashCore,再给执行权限:

chmod 755 /etc/ShellCrash/CrashCore

GeoIP / GeoSite 数据库同理,手动丢进同一个目录即可。内核从 mihomo Releases 按设备架构下载(路由器多为 arm64mipsle,X86 小主机为 amd64)。

3

基础设置

crash 进菜单,选 2 · 功能设置,按下面四项设定就行,其余保持默认:

  • 路由模式:Tproxy——透明代理的现代做法,TCP / UDP 都能接管。
  • DNS 设置:默认 mix 即可,不用改。
  • 启用域名嗅探:ON——开了之后分流规则才能按域名生效,不开会有一部分规则形同虚设。
  • IPv6:家里是双栈网络就 ON,不确定就保持关闭。开了之后 v4 / v6 都会走代理。
域名嗅探为什么重要?透明代理拿到的往往只是 IP,没有域名,分流规则(哪些走代理、哪些直连)就没法匹配。嗅探会从流量里把域名还原出来,规则才准。
4

添加订阅 · 最关键的一步

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
  • 不加参数直接粘贴 导入后节点为空
5

装个网页面板

命令行里切节点太别扭,装个本地面板。回到 crash 主菜单:

9 · 更多设置 → 4 · 安装本地 Dashboard 面板 → 返回 → 启动

然后浏览器打开(把 IP 换成你设备的实际地址):

http://192.168.x.x:9999/ui

面板里能看节点延迟、切节点、看连接日志。设置还是得回 crash 菜单改,面板只管日常使用。✔️

面板打不开?先确认服务起来了(crash 菜单里状态是「运行中」),再确认你的电脑和设备在同一个局域网。:9999 只监听内网,外网访问不到——这是好事,别去开放它。
6

让家里其它设备也走代理

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 和分流规则了,换内核是唯一出路。

原始资料 / 延伸阅读:

本文是转述整理,思路来源于社区教程(频道「xzの小站」的 ShellCrash 实践),配置项按本站节点的实际需要做了补充和校订——尤其是内核必须 mihomo 这条,原教程没有强调,但对我们的节点是决定性的。
· 完 ·