V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
OpenWrt 是一个专门面向嵌入式设备的 Linux 发行版。你可以将 OpenWrt 支持的型号的嵌入式设备,比如各种路由器上的系统,换成一个有更多可能性可以折腾的 Linux 系统。
OpenWrt 官方网站
Nyarime
V2EX  ›  OpenWrt

在 iKuai 爱快软路由上原生运行 OpenWrt 软件包

  •  
  •   Nyarime · 3 天前 · 3464 次点击

    熬了一个通宵,在爱快软路由 iKuaiOS 系统上实现了 musl 兼容层,使整个 OpenWrt 的软件包生态可以原生运行在爱快上,不需要虚拟机、Docker 装 OpenWrt ,总之也是 https://www.v2ex.com/t/1206925 闲鱼插件哥给的灵感,不过 iKuai 的国内用户量是真的很大,稳定性和多 IPv6 线路、流控能力都广受好评,那么好的系统连一个 root 都没有,生态封闭得爱快云上只有一个 Docker 插件,想装个 htop 、tcpdump 都不行。

    大概研究了下,iKuai 的 binary 用的是 uClibc ,而新的 OpenWrt 用的是 musl libc ,因此两者不兼容直接跑会报错。得益于 OpenWrt 有 20k+的软件包,我从一开始补 opkg 、chroot openwrt 到最后的 musl 支持,向各位 V 友汇报。

    不过爱快都在搞 4.0 了,3.7.x 本身就没在维护了,就当 EOL 前的狂欢吧。


    正文

    核心发现

    Linux 内核支持同时运行多种 libc的程序,每个 ELF 二进制文件在 header 里指定了自己的动态链接器( interpreter ):

    uClibc 程序: /lib/ld64-uClibc.so.0
    musl 程序:   /lib/ld-musl-x86_64.so.1
    glibc 程序:  /lib64/ld-linux-x86-64.so.2
    

    内核根据 ELF header 自动选择对应的 linker 。只要把 musl 的 linker 放到 iKuai 上,musl 程序就能跑。

    实现步骤

    1. 放置 musl 动态链接器

    # 从 OpenWrt rootfs 中获取 musl linker
    # ld-musl-x86_64.so.1 实际上就是 musl libc.so 的 symlink
    ln -sf /path/to/musl/libc.so /lib/ld-musl-x86_64.so.1
    

    2. 配置库搜索路径

    musl 的 linker 使用/etc/ld-musl-x86_64.path(类似 glibc 的ld.so.conf):

    echo "/path/to/musl/libs" > /etc/ld-musl-x86_64.path
    echo "/path/to/musl/usr/lib" >> /etc/ld-musl-x86_64.path
    echo "/usr/lib" >> /etc/ld-musl-x86_64.path
    

    3. 安装 opkg 包管理器

    opkg 是 OpenWrt 的包管理器。我们使用了一个glibc 静态编译版本( 680KB ),可以在 iKuai 上原生运行:

    opkg update    # 更新 6 个 OpenWrt 仓库
    opkg install --force-depends --force-space --force-checksum htop
    

    4. 验证

    $ /usr/bin/htop --version
    htop 3.3.0
    
    $ /usr/bin/tcpdump --version  
    tcpdump version 4.99.4
    libpcap version 1.10.4
    

    musl 程序和 uClibc 程序在同一个 iKuai 系统上和平共处!


    为什么这样做?

    不用 Docker

    Docker 在软路由上需要额外资源(内存、存储),而且官方 Docker 插件版本老旧。很多时候你只是想装个小工具,不值得开 Docker 。

    不用 chroot

    最初我们尝试了 chroot 方案(下载一个 mini OpenWrt rootfs ,chroot 进去用)。可以工作,但:

    • 需要手动管理 mount bind
    • 每次进出 chroot 很麻烦
    • 服务管理复杂

    不用刷 OpenWrt

    有些人直接刷 OpenWrt 。但 iKuai 的多 WAN 、流控、行为管理是 OpenWrt 做不到的。

    musl 兼容层是最轻量的方案:一个 symlink + 一个 path 文件 = 整个 OpenWrt 生态。


    Naixi 项目

    我们把这些工作整合成了Naixi——一个 iKuai 增强固件:

    Naixi Plugin Manager
    
    插件管理:
      naixi list                 列出所有插件
      naixi install <file|url>   安装插件(tar.gz)
      naixi enable <name>        启用插件
      naixi disable <name>       禁用插件
    
    OpenWrt 兼容层:
      naixi opkg install <包名>  安装 OpenWrt 包(原生运行)
      naixi opkg update          更新包列表
      naixi opkg list            列出可用包
      # https://dl.naixi.net/ikuai-naixi/naixi_latest.sh
    

    已安装组件展示

    === 已安装组件 ===
      ✓ docker v202102031900  [naixi]   运行中
      ✓ lucky v1.1.16         [naixi]   运行中
      ✓ opkg v1.0.0           [naixi]   运行中
      ✓ shell v202306081801   [pmd]     运行中
      · htop 3.3.0-1          [opkg]    已安装
      · tcpdump 4.99.4-1      [opkg]    已安装
    
    云平台控制: Level 2
    musl 兼容层: ✓ 已初始化 (12.6M)
    opkg 原生环境: ✓ 已初始化 (opkg version 0.7.0)
    

    四种来源的组件统一管理:

    • [naixi] — Naixi 插件( tar.gz 格式,支持 enable/disable )
    • [pmd] — 爱快官方插件( pmd 管理,WebUI 可见)
    • [opkg] — OpenWrt 包( opkg 安装,musl 原生运行)
    • [musl] — chroot 环境中的包(可选)

    重启持久化

    iKuai 的 rootfs 在内存中,重启后 opkg 装的包会丢失。Naixi 通过 boot 脚本自动恢复:

    # 安装时自动记录
    opkg list-installed > /etc/log/naixi/opkg-installed.txt
    
    # 重启时自动恢复
    opkg update && cat opkg-installed.txt | awk '{print $1}' | xargs opkg install --force-*
    

    技术细节

    iKuai 用的是 uClibc ,不是 glibc

    很多人以为 iKuai 基于标准 Linux 发行版( glibc )。实际上 iKuai 使用的是uClibc

    $ /lib/ld-musl-x86_64.so.1 --list /usr/sbin/tcpdump
      /lib/ld64-uClibc.so.0 (0x7f4b1e325000)
      libc.so.0 => /lib/ld64-uClibc.so.0
    

    这意味着:

    • 旧版 OpenWrt ( 15.05/17.01 )的 uClibc 包可以直接原生运行
    • 新版 OpenWrt ( 18.06+)的 musl 包需要 musl 兼容层
    • glibc 程序(大部分 Linux 发行版)需要额外适配

    overlay 持久化

    iKuai 自带 overlay filesystem 在/usr上:

    overlay on /usr type overlay (rw,relatime,lowerdir=/usr,upperdir=/overlay/upper,workdir=/overlay/work)
    

    opkg 安装的文件通过 overlay 写入,但/overlay/upper在 tmpfs 中。Naixi 通过记录+重装方式解决持久化。

    可用的 OpenWrt 包

    理论上 OpenWrt x86_64 仓库的所有包都能安装。已验证:

    包名 版本 状态
    htop 3.3.0
    tcpdump 4.99.4
    opkg 0.7.0
    curl - 待测试
    python3 - 待测试
    luci - 需要 ubus ,受限

    下载安装

    • 安装任意官方爱快 ISO ,由于是 rootfs 系统随便装个3.7.x 版本就行

    • Naixi v61v3 (3.7.19): 下载固件并升级

    • 启动 SSH ,前往系统设置-->登录管理-->远程访问-->远程维护:

      undefined

    用户名:sshd ,密码就是你设置的那个远程维护密码,登录后就是 root 权限。

    安装 OpenWrt 运行环境

    1. 安装 opkg 插件:naixi install https://dl.naixi.net/ikuai-plugin/opkg.tar.gz

    2. 开始使用:opkg update && opkg install htop

    3. 执行htop可见 ik_rc_client 等爱快进程

    4. 插件可通过 naixi list查询列表及运行状态


    安全声明

    仅用于探索 iKuai 系统的可扩展性,使用naixi指令前请了解:

    • 修改固件可能影响稳定性

    • 云控阻断可能影响官方功能更新

    • 建议在测试环境验证后再用于生产

    • 启动时,将会由naixi_boot进行挂载,可使用cat /tmp/naixi_boot.log查看日志

      undefined


    关于

    • 项目使用的文件: https://dl.naixi.net/ikuai-naixi
    • 分析工具:Nyarc — 固件逆向工程控制台
    • 仅用于学习用途,资源仅限个人学习、研究使用,不得用于商业运营、传播或非法用途;版权归爱快公司所有;使用者应在合理范围内使用,24 小时内删除
    第 1 条附言  ·  2 天前
    v69 更新( 2026-04-20 )

    新版本:iKuai8_x64_3.7.19_Naixi_v69.bin
    md5: 3fd0997a81149c1e4949aaa5e8431f33
    🔗 https://dl.naixi.net/ikuai-naixi/iKuai8_x64_3.7.19_Naixi_v69.bin

    🆕 OpenWrt 兼容层(全新)
    • 一键安装:naixi openwrt init
    自动装 opkg + musl chroot ,4MB 的合并包搞定
    • 直接装 OpenWrt 包:opkg install nano htop vim —— 任何 OpenWrt 的 ipk 包都能装,自动落到独立目录不污染 rootfs ,重启不丢
    • 命令直接用:nano 、htop 等装完即可执行( boot 时自动 symlink )
    第 2 条附言  ·  1 天前
    iKuai 的 pmd 一直在不断下新的 ik_rc_client ,目前 v71v11 已经彻底解决
    https://dl.naixi.net/ikuai-naixi/iKuai8_x64_3.7.19_Naixi_v71v11.bin
    # 执行阻断
    naixi ikuaiyun 2
    # 改用替身术
    for f in ik_rc_client cre dtalkd; do
    rm -f /usr/sbin/$f
    cat > /usr/sbin/$f << 'EOF'
    #!/bin/sh
    while true; do sleep 86400; done
    EOF
    chmod +x /usr/sbin/$f
    done
    pkill -9 ik_rc_client cre dtalkd 2>/dev/null
    把 binary 替换成一个什么都不干的假脚本,monitor 看到进程在跑就不会拉起真的,pmd 创建的 symlink 也会被我们覆盖,进程实际只是 sleep ,不连任何服务器
    第 3 条附言  ·  19 小时 45 分钟前
    本帖发布后收到 iKuai 官方团队的联系,双方已就内容中涉及的安全细节进行了友好沟通。出于负责任的安全研究原则,相关可操作性较强的技术细节和下载链接已移除。

    后续相关安全发现将通过私下渠道反馈给 iKuai 团队,不再公开披露。感谢关注。
    88 条回复    2026-04-22 09:28:39 +08:00
    Cooky
        1
    Cooky  
       3 天前
    大佬牛逼
    xiaowowo
        2
    xiaowowo  
       3 天前
    大佬牛逼,这种操作官方不会找麻烦吗?
    Nyarime
        3
    Nyarime  
    OP
       3 天前
    @xiaowowo 1 没收钱 2 资料来自于网上 3 那些闲鱼收钱的官方应该先去找 4 留后门 sm 答毕
    laminux29
        4
    laminux29  
       3 天前
    倒反天罡了。

    之所以买 iKuai 的硬件,因为要跑有授权的 iKuai ,这玩意某些功能比 OpenWRT 要方便得多,但因为这个原因,iKuai 的硬件的性价比,比闲鱼上的 x86 或 Arm 的迷你小主机低得多。

    如果你想跑 OpenWRT ,应该自己去买 x86 或 Arm 的迷你小主机,这样性价比更高。
    Nyarime
        5
    Nyarime  
    OP
       3 天前
    @laminux29 其实免费版和企业版就 5KB 差距,一个 sed 命令就能变企业版:
    sed -i 's/FIRMWAREID=10001/FIRMWAREID=10002/' /etc/release
    imnpc
        6
    imnpc  
       3 天前
    ssh 登陆后好像不能运行命令行?只能 选择 ikuai 操作菜单?
    mikj
        7
    mikj  
       3 天前
    大佬厉害
    jxlpjdh88
        8
    jxlpjdh88  
       2 天前
    大佬牛逼!
    Kinnice
        9
    Kinnice  
       2 天前 via Android
    ikuai 的老版本因为内核低,实际性能并不如新版 op ,有看下 4.0 有什么提升吗
    Nyarime
        10
    Nyarime  
    OP
       2 天前 via Android
    @imnpc 你得传我做的 bin 上去升级... 官方版的就是 rc.console
    lcy630409
        11
    lcy630409  
       2 天前
    大佬 你这个会被官方远程格式化么
    Nyarime
        12
    Nyarime  
    OP
       2 天前
    @lcy630409 已经 hook 掉了,如果你要自己解包组装 bin 可以用下 nyarcPro
    # 0. 装工具:xz-utils + e2fsprogs
    apt install xz-utils e2fsprogs # Debian/Ubuntu

    # 1. 看一眼是啥版本
    nyarc --fw-detect iKuai8_x64_3.7.19.bin
    nyarc --ikuai-header iKuai8_x64_3.7.19.bin

    # 2. 解密 rootfs (自动判断 fixed/dynamic key )
    nyarc --ikuai-decrypt iKuai8_x64_3.7.19.bin rootfs.xz

    # 3. 解压成 ext2 镜像并挂载
    xz -d rootfs.xz # → rootfs (ext2)
    mkdir -p /tmp/rootfs
    mount -o loop rootfs /tmp/rootfs

    # 4. 改你想改的(示例:改 root 密码 / 加开机脚本 / 屏蔽云控)
    sed -i 's|^root:[^:]*:|root:$1$naixi233$AgpY4n3TdEDVt/AjLuM/y.:|' /tmp/rootfs/etc/shadow
    sed -i 's/59.110.6.135/127.0.0.1/g' /tmp/rootfs/usr/ikuai/script/client.sh

    # 5. 改完卸载
    umount /tmp/rootfs

    # 6. 重新 XZ 压缩(必须 CRC32 !内核不认 CRC64 )
    xz -6 --check=crc32 rootfs # → rootfs.xz

    # 7. 加密回去
    nyarc --ikuai-encrypt rootfs.xz rootfs.enc fixed
    # 3.7.22+/4.x 是 dynamic key:
    # nyarc --ikuai-encrypt rootfs.xz rootfs.enc dynamic <对应版本 key>

    # 8. 整包打回 .bin (自动算 hash + 拼 header )
    nyarc --ikuai-repack <unpack-dir> iKuai8_x64_3.7.19_modded.bin
    s1oz
        13
    s1oz  
       2 天前
    佬能补下 tproxy 吗,残缺手动补了启动就噶了
    Nyarime
        14
    Nyarime  
    OP
       2 天前
    @s1oz 目前在更新 v62 处理掉 vim 、nano 这类安装问题,已推送到 dl 可自行更新(老版本卸载 openwrt 环境时会把整个 libc 都移除导致 ikuai 无法进入,只能到控制台( rc.console )执行 6 恢复,或者使用官方免费版 ISO 引导保留配置升级
    # v69 升级包
    https://dl.naixi.net/ikuai-naixi/iKuai8_x64_3.7.19_Naixi_v69.bin
    # 升级后在 SSH 执行
    naixi openwrt uninit # 卸载原先的分包
    naixi openwrt init # 获取最新的
    注:如果在国内请自行下载 https://dl.naixi.net/ikuai-plugin/naixi-compat-x86_64.tar.gz 然后使用直链
    naixi openwrt init <url>
    # 案例:安装 nano 、vim
    opkg install nano
    opkg install vim

    尽量迭代(因为 ikuai 的配置分区是保持的,所以不管 rootfs 用哪个版本的都会保留读取
    也修复了应用列表里的 naixi list ,如果要装 proxy 类插件可能确实是需要适配一下的
    beck8
        15
    beck8  
       2 天前 via iPhone
    大佬最近有在玩 4.0 不 4.0 也是差不多的搞 root 方法吗
    domingocbk
        16
    domingocbk  
       2 天前
    大佬牛逼
    Nyarime
        17
    Nyarime  
    OP
       2 天前   ❤️ 1
    @beck8 nyarc 是可以拆 4.0 的
    我在修补 v69 后发了一个详版,你可以使用工具自己组装定制自己的爱快
    https://forum.naixi.net/thread-11395-1-1.html
    beck8
        18
    beck8  
       2 天前 via iPhone
    @Nyarime 我好像反应过来了,我还关注你推特了。naixi 请问邀请码我应该从哪获取呢?
    Nyarime
        19
    Nyarime  
    OP
       2 天前
    @beck8 你直接找我 t.me/BaiPiaoZhenXiang 就好,v 站好像没私信功能
    jhsunnyshine
        20
    jhsunnyshine  
       2 天前
    大佬,太牛逼了,你们这群貂毛为什么这么雕👍🏻
    lcy630409
        21
    lcy630409  
       2 天前
    @Nyarime
    大佬, 更新你的固件后,在 ikuai 云里 还是显示在线呢
    “在线
    未分组
    4513a501d96e4b0a99843b4518f044dc
    普通 ()
    59.174.1.1 (中国 湖北 武汉)
    3.7.19 x64 Enterprise Build202504071143” 这样一下就知道了....
    lcy630409
        22
    lcy630409  
       2 天前
    可能是需要设置 naixi ikuaiyun 2 才不会显示?我先试试
    lcy630409
        23
    lcy630409  
       2 天前
    设置 ikuaiyun=2 重启后 ikuai 后台还是显示在线,不知道是 ikuai 显示有问题 还是 没屏蔽到
    有点怀疑 ikuai 没有用到自身的 host 文件

    本来想学教程 NyarcPro iKuai 固件操作教程操作固件 将所有 script 中的所有 sh 文件的 ikuai 域名进行替换,但是 xz 总是报错 换了好几台机器 ubuntu 和 centos 都试过了...停住了,等 op 起床 再来看看吧
    [root@localhost ikuaii]# nyarc --ikuai-decrypt iKuai8_x64_3.7.19_Build202504071142.bin d.xz
    Decrypting iKuai rootfs: iKuai8_x64_3.7.19_Build202504071142.bin -> d.xz
    🔑 Mode: fixed (key=77b1fa93742cb39d3383553e848a5291)
    ⚠️ Hash mismatch: calc=0xD50DA3DB stored=0x03200000 (may still be valid)
    ✅ Decrypted: d.xz (40.7MB)
    ✅ Decrypted: d.xz (40.7MB)
    [root@localhost ikuaii]# ls
    d.xz iKuai8_x64_3.7.19_Build202504071142.bin
    [root@localhost ikuaii]# xz -d d.xz
    xz:d.xz: 无法识别文件格式
    lcy630409
        24
    lcy630409  
       2 天前
    [root@localhost ikuaii]# nyarc --ikuai-decrypt iKuai8_x64_3.7.22_Build202603301146.bin 22.xz
    Decrypting iKuai rootfs: iKuai8_x64_3.7.22_Build202603301146.bin -> 22.xz
    🔑 Mode: fixed (key=77b1fa93742cb39d3383553e848a5291)
    ⚠️ Hash mismatch: calc=0xAFF36B3F stored=0x03200000 (may still be valid)
    ✅ Decrypted: 22.xz (41.0MB)
    ✅ Decrypted: 22.xz (41.0MB)

    测试 3722 版本 好像不能识别到 key ?提示中 key 还是使用的 77b1 ?
    bncfbb
        25
    bncfbb  
       2 天前
    --ikuai-repack 好像用不了 没任何输出
    Nyarime
        26
    Nyarime  
    OP
       2 天前
    @lcy630409 感谢反馈,目前还是存在不少 bug ,待我 debug 后推送新版本
    Nyarime
        27
    Nyarime  
    OP
       2 天前
    @lcy630409 我们的版本是做了免格的,不过 ikuaiyun 2 的阻断没做好,实在抱歉
    打算在脚本中加 iptables 阻断,看了下二进制是不走 hosts 的也就是硬编码内容在这些服务不生效
    ik_rc_client → as1.ikuai8.com:9443
    as2.ikuai8.com:9443 (远程控制/云管理,这是主要的云在线连接)
    ik_wpa_ppsk → yun.ikuai8.com
    脚本:
    client.shcoll.ikuai8.com:2016 (数据采集)
    wecom.shiapi.ikuai8.com:21422
    upgrade.sh → 云自动升级
    webman.lua → yun.ikuai8.com/api/v3/router_bind/

    等于说,我在测试 htop 兼容性的时候就看到 ik_rc_client ,这个也需要 kill 就是了
    你也可以装个 htop 看下是哪个进程在通信,这个 level2 在设计上确实是要阻断的
    Gipserr
        28
    Gipserr  
       2 天前
    ping ikuai8.com 会跳到 catl.com 这个也要屏蔽吧。
    lcy630409
        29
    lcy630409  
       1 天前
    @Nyarime 能直接把 ikuai 的域名直接改成 baidu 么?直接从代码上替换掉?
    lcy630409
        30
    lcy630409  
       1 天前
    @Nyarime 看到最新的 naixi_v13 了,是 iptables 阻断特定 ip ,这个感觉不是很可靠
    最起码要实时查询域名的 ip 再阻断,ip 这东西修改太容易了
    Gipserr
        31
    Gipserr  
       1 天前
    汇报一下 v70v5 的那个 bin 的使用情况。
    yun.ikuai8.com 的后台还能看到路由器在线
    但是信息(客户端)上报的情况停留在系统启动 5 秒以内。
    Gipserr
        32
    Gipserr  
       1 天前
    过了五六分钟以后又全量终端信息上报到云平台了。看来隔绝的还没搞定。
    Nyarime
        33
    Nyarime  
    OP
       1 天前 via Android
    @Gipserr 除了 ik_rc_client 我们处理了,你说的采集上报连的是 dis.ikuai8.com:1853 ,这个我更新后喊您
    今天目标就是把这个处理掉,然后完善 luci
    Nyarime
        34
    Nyarime  
    OP
       1 天前 via Android
    @s1oz iKuai 内核 5.10.194 没编译 xt_TPROXY.ko

    问题是我没法加内核模块,除非:编译一个匹配 5.10.194 的 xt_TPROXY.ko (需要 iKuai 的内核源码 那几乎不可能
    Nyarime
        35
    Nyarime  
    OP
       1 天前 via Android
    @lcy630409 回答你的两个问题
    1 )直接二进制改成 baidu
    改字符串其实是可以的,但是长度要跟原本的域名一样,另外 ikuai 如果有校验改了会崩系统
    2 )上报解决的事情
    1. 二进制重命名,由 naixi_boot 考虑是否加载,换句话说,你进程都没了,你还怎么上报? ik_rc_client/cre/dtalkd 根本跑不起来
    2.对 monitor_process.sh patch 他那个守护进程也拉不起来
    3. hosts 屏蔽 但是你知道他有一段硬编码已经写到了自己的二进制里,那个 IP 我已经改掉了
    4. iptables 是兜底,或者说他们公司会一直续费这个 IP 所对应的服务器
    补充:我没有卖过钱,都是免费开放用于 v 友研究,并且目前 ikuai 最新版是 4.0 而不是 3.7 这已经是老版本了
    Nyarime
        36
    Nyarime  
    OP
       1 天前 via Android
    @Gipserr 至于这个问题,你可以进 ssh 定位下 monitor_process.sh ,这是个死循环

    start() {
    sleep 60 # 开机等 60 秒
    while : ; do
    # 检查每个进程是否存活
    if ! __get_process_status ik_rc_client; then
    cgroup_exec ik_rc_client & # 没了就拉起
    fi
    if ! __get_process_status cre; then
    cgroup_exec cre &
    fi
    # ... 其他 20+个进程
    sleep 30 # 每 30 秒轮询一次
    done
    }
    Nyarime
        37
    Nyarime  
    OP
       1 天前
    @Gipserr 目前 v71v11 已经彻底解决
    https://dl.naixi.net/ikuai-naixi/iKuai8_x64_3.7.19_Naixi_v71v11.bin
    # 执行阻断
    naixi ikuaiyun 2
    Gipserr
        38
    Gipserr  
       1 天前
    @Nyarime 谢谢.目前最新版本的状况:
    1.yun 还是显示这个路由器在线
    2.终端用户会在启动后上报一次,然后就不再更新了,可能是启动过程中抢先上报了.
    已经很有曙光了,以后再慢慢研究.
    lcy630409
        39
    lcy630409  
       1 天前
    @Nyarime
    如果能修改域名 直接随便改,改成 ikuai9.com 都行,只要不给到 ikuai ,
    看下大佬有没有空 修改一个改了域名的 我可以测试 我的 ikuai 是 esxi 里的

    期待 nyarc pro 的修复版
    lcy630409
        40
    lcy630409  
       1 天前
    @Gipserr
    我测试 上面哪个 iKuai8_x64_3.7.19_Naixi_v71v11.bin ,ikuai 云中 已经显示离线了
    Nyarime
        41
    Nyarime  
    OP
       1 天前
    @lcy630409 v72 主要在写 openwrt 兼容层,目前 ikuai 缺少的东西有点多,luci 上去都报错
    Gipserr
        42
    Gipserr  
       1 天前
    @lcy630409 重启马上去 yun 看是在线的,过一会才离线.
    Gipserr
        43
    Gipserr  
       1 天前
    手工重启抓包:

    按时间顺序

    1. 21:48:14
    192.168.2.250 先向 223.5.5.5:53 查 packages.ikuai8.com 的 AAAA/A 。
    随后连 113.113.100.48:443 ,我从 ClientHello 里弱提取到了 SNI=packages.ikuai8.com
    2. 21:48:51
    再次向 114.114.114.114:53 查 packages.ikuai8.com
    随后明文访问 113.113.100.48:80 ,这个是这次最硬的证据:
    GET /cre/3/cre_123.3.x86_64.ikp HTTP/1.1
    Host: packages.ikuai8.com
    3. 21:48:52 到 21:48:56
    连续多次向 114.114.114.114:53 查 dis.ikuai8.com
    紧接着发起了 6 次到 47.94.237.123:1853 的短 TCP 会话,都是几百字节到一千多字节的二进制 payload ,时序上很像跟 dis.ikuai8.com 同一条链路。
    这一条我判断为“高疑似爱快自家调度/分发链路”,但域名和目标 IP 没法在这份 WAN 侧样本里完全坐实。
    4. 21:48:52
    查了两次 time6.aliyun.com ,随后向 203.107.6.88:123 发了两次 NTP 请求。
    这条更像标准时间同步,不像异常验证。
    5. 21:48:58 到 21:49:04
    连续多次向 114.114.114.114:53 查 downloads.openwrt.org
    随后建立了 6 次到 146.75.114.132:443 的 TLS 连接,我从 ClientHello 里弱提取到了 downloads.openwrt.org
    这条可以认为是爱快主动访问 OpenWrt 下载源。
    6. 21:49:01
    有 1 次到 123.57.179.21:1863 的短 TCP 二进制会话,payload 约 952 字节。
    这条没有直接域名证据,只能标成“未知自定义连接”。
    7. 21:49:35
    向 114.114.114.114:53 查 www.ip138.com ,随后访问 120.39.215.140:80:
    GET / HTTP/1.1
    Host: www.ip138.com
    User-Agent: Mozilla/5.0 (Linux; iKuaiOS; x86) AppleWebKit/537.36 (KHTML, like Gecko)
    8. 21:50:05
    同样又来了一次 www.ip138.com 检测,请求内容和 User-Agent 一样。
    9. 21:50:13
    只有 1 个到 220.202.27.130:443 的单独 RST 包,没有看到这次抓包内对应的建连过程,这条不能拿来下结论。

    这次能坐实的主动外发

    - packages.ikuai8.com
    证据最强,既有 DNS ,也有 TLS SNI ,还有明文 HTTP GET /cre/3/cre_123.3.x86_64.ikp
    - downloads.openwrt.org (这个可能是你的 opkg 升级)
    有 DNS ,也有 TLS SNI
    - www.ip138.com
    有 DNS 、明文 Host ,还有明确的 iKuaiOS User-Agent
    - time6.aliyun.com -> 203.107.6.88:123
    标准时间同步

    这次最值得盯的可疑点

    - dis.ikuai8.com 查询后,连续打 47.94.237.123:1853
    - 123.57.179.21:1863 的单次二进制短连接


    (ip138.com 是我测活的 http 设定)
    lcy630409
        44
    lcy630409  
       1 天前
    @Gipserr dns 223.5.5.5 114 是 ikuai dns 设置里的默认 dns 么?可以修改这个 dns 测试么?如果这个 dns 是可以设置的 那么可以做一个假 dns 来应答 ikuai8.com 域名
    Gipserr
        45
    Gipserr  
       1 天前
    @lcy630409 可能可以内置一个 dns ,这个是写到 resolv 的 dns 。
    sghsgh
        46
    sghsgh  
       1 天前
    谢谢,终于可以 IK 上跑个楼梯了
    a56143575
        47
    a56143575  
       1 天前
    大佬牛逼!这个只是适合在 X86 机器上吧?
    lxxiil
        48
    lxxiil  
       1 天前
    请问大佬,那个 sk5 分流插件可以去掉授权吗,300 元真的好贵
    Nyarime
        49
    Nyarime  
    OP
       1 天前
    @sghsgh 你想跑就跑吧,更新最新的 v72v4
    https://dl.naixi.net/ikuai-naixi/iKuai8_x64_3.7.19_Naixi_v72v4.bin
    然后初始化一下,直接 naixi install https://dl.naixi.net/ikuai-plugin/naixi-compat-x86_64.tar.gz 就行了
    于是你的 9090 端口就出现了 LuCI ,密码跟你的维护密码一样( SSH 密码同)
    Gipserr
        50
    Gipserr  
       1 天前
    @Nyarime 爱快牛逼,更新了这个版本,安装 naixi-compact 重启以后,我爱快的配置全丢了。
    云绑定被解除,内外网配置的配置页面打不开,一片空白,网卡绑定刷新一下配置页面就变回空白,重启以后也是这样。
    然后再上传 bin 提示:错误: 无法识别这个文件。
    是不是被爱快遥测干掉了配置。还好是个用来测试的系统。
    Nyarime
        51
    Nyarime  
    OP
       1 天前
    @Gipserr 你确定是 v72v4 造成的吗,让我 debug 一下
    Gipserr
        52
    Gipserr  
       1 天前
    测试了一下爱快命令行的重置功能,重置以后的结果是:
    1.重置以后要重新设置 web 密码/IP
    2.进去以后在 web 内外网还是无法配置
    3.ssh 连接要重新启用,要自己设置 sshd 的密码,不能共用 web 的了
    4.ssh 上去以后,naixi 的系统和配置还在
    5.还是无法上传 bin 更新系统
    Gipserr
        53
    Gipserr  
       1 天前
    @Nyarime 不确定,我是挂了一晚,回来看到你有更新,更新了以后出现这样的结果。不知道是不是爱快已经提前做了手脚了。因为更新 v72v4 以后我马上刷了爱快云,这个服务器还是显示在线和有客户端的。因为昨天抓包提示启动的时候会访问 packages ikuai com 抓一个 /cre/3/cre_123.3.x86_64.ikp ,它也可以抓其他东西。
    Gipserr
        54
    Gipserr  
       1 天前
    @Nyarime 我重新做了一个 3.7.17 的干净系统,不配置 wan ,只配置了 lan ,用 v72v4 更新进入系统,版本号是 3.7.19 ,各项配置都正常,也能重新用 v72v4 的 bin 再次升级,没有报 “无法识别这个文件“ 。 证明 ikuai 肯定做了手脚。
    Nyarime
        55
    Nyarime  
    OP
       1 天前
    @Gipserr 请提供下版本号,我们在 debug compat 层安装确实是遇到了这个问题,并且也 v72v4 修复后观察了一阵子,可能你需要详细的说明下情况,我自己 debug 后先推个 v72v5 给你,实测装完 compat 后是没这个问题的
    当时遇到那个问题我们虚拟机就恢复快照了,而且重置、rc.console 选 6 也没法修复,最后回滚。然后后续测试就没有再发现这个问题。我先回退到官方版的免费版环境,一步一步来试试,应该就能排除掉问题

    顺带一提,使用 naixi ikuaiyun clean 清除云平台信息、再用 naixi ikuaiyun 2 阻断全部,最后重启
    试试全新安装上 v73: https://dl.naixi.net/ikuai-naixi/iKuai8_x64_3.7.19_Naixi_v73.bin
    sddyzm
        56
    sddyzm  
    PRO
       1 天前
    大佬
    lcy630409
        57
    lcy630409  
       1 天前
    @Gipserr
    我昨晚测试 iKuai8_x64_3.7.19_Naixi_v71v11.bin 后 到现在还能正常使用,我在帖子中都贴了 GWID 。如果说要处理 应该不会放过我吧...
    Gipserr
        58
    Gipserr  
       1 天前
    早前装完 compat 以后我的确也没见到 9090 起来。
    现在我在干净的系统装了 v73 ,clean 了云平台,阻断了 2 ,挂久一点看看会不会被改啥,谢谢。
    另:开机会连接 packages.ikuai8.com ,为什么 hosts 没有加这个域名呢?@Nyarime
    Gipserr
        59
    Gipserr  
       1 天前
    @lcy630409 你这个 ikuai 有绑定他们云平台吗?
    Nyarime
        60
    Nyarime  
    OP
       1 天前
    @lcy630409 v71v11 里面我默认是 ikuaiyun2 ,甚至是运行进程里没有 ik_rc_console ,它怎么可能抹你机器。大概是我写了一个 bug ,这个会在 v74 修复,大概根因是 naixi_boot 脚本的 "opkg restored from cache" 步骤——往满的 rootfs 写 opkg 文件导致破坏,然后你会发现 iKuai 重启后就不正常了
    lcy630409
        61
    lcy630409  
       1 天前
    @Gipserr 绑定了的,阻断问题 大佬应该处理差不多了
    不过我还是固执的认为 阻断固定 ip 不妥当,还是应该尝试获取域名的实时 IP 去阻断
    我看大佬 好像已经把 monitor_process 处理了
    if [ -f /usr/ikuai/script/utils/monitor_process.sh ] && ! grep -q "NAIXI_BLOCK_RC" /usr/ikuai/script/utils/monitor_process.sh; then
    sed -i '/ik_rc_client/i\# NAIXI_BLOCK_RC\nreturn 0' /usr/ikuai/script/utils/monitor_process.sh 2>/dev/null
    fi
    lcy630409
        62
    lcy630409  
       1 天前
    @Nyarime 按照原理来说 应该是不会被远控了

    大佬对这个开心版 有什么计划么?想做到什么程度
    lcy630409
        63
    lcy630409  
       1 天前
    还有 我不太建议 把 ipv6 的设置 直接集成,只提供其他功能 比如 root
    修改让使用者自己弄

    ipv6 的数量 确实是 ikuai 官方的一个盈利点,这样直接带破解 容易引起官司
    Gipserr
        64
    Gipserr  
       1 天前
    @lcy630409 做到小米那种 root 模式我觉得就好了,尽量不要对原来的系统功能覆盖太多,自己用 AI 编程跑几个服务在上面,减少一些外部机器的依赖。我看来 ikuai 原来的缺点就是不能跑高权限的 docker ,不能跑 wireguard 服务器端(付费的可以跑客户端)。我用 ikuai 不用 openwrt 的原意就是 openwrt 的升级/依赖/dns/端口映射/防火墙这些搞得我很不爽。
    Nyarime
        65
    Nyarime  
    OP
       1 天前
    @Gipserr 我在 v74 版本拿了 43 字节的假文件做替身,可以说云平台实际上是根除了
    至于后门问题,已经云控组件物理删除( ik_rc_client/cre/dtalkd/ik_wecom ),换句话说 pmd 下载了 cre 的 pkg 也释放不出来(被替身脚本占位)
    cat /usr/sbin/ik_rc_client
    cat /usr/sbin/cre
    这 43 字节:#!/bin/sh\nwhile true; do sleep 86400; done\n

    另外我解释一下为什么会出现无法识别、web 爆炸,经过一上午的排除,得出一个结论:往一个即将塞满的 rootfs 塞入 runtime 是不合适的,最后重构了一下,从我最后一条回复到现在埋头苦干
    固件: https://dl.naixi.net/ikuai-naixi/iKuai8_x64_3.7.19_Naixi_v75v2.bin
    安装:升级后执行 naixi openwrt init

    该版本实现:
    LuCI 中文管理界面(:9090 )
    opkg 包管理器(安装到持久化分区)
    零 rootfs 写入(不破坏 iKuai Web UI )
    自动安装:naixi openwrt init 一键搞定
    至于插件适配,该放我去睡觉了...
    Nyarime
        66
    Nyarime  
    OP
       1 天前
    @lcy630409 ipv6 你修改都无所谓的,因为 /etc/mnt 本就是持久化分区
    我的脚本只会作为一个 OpenWrt 运行兼容层存在,不喜欢你可以不装 又或者利用我开发的 Nyarc 自行解包、组装,总而言之工具已经放出来了,想怎么做是你的自由
    至于说我特地选择 3.7.19 而不是最新的 3.7.22 或 4.0 ,就是为了避免官司问题 其次我并没有进行贩卖
    单纯就是看闲鱼那帮 或者是前阵子发 3.7.14 (带 root )那帖的人不爽,我看评论区格了不少人

    至于 iKuai 系统,最新的 v4.0 自己拆包看吧,组装方法我就不放了避免法律问题
    敢用 iKuai 官方的人,甚至是买爱快 OEM 路由器的,那都是艺高人胆大
    https://dl.naixi.net/nyarc/report/4024_audit_report_cn.html
    Nyarime
        67
    Nyarime  
    OP
       1 天前
    @lcy630409 分 4 步
    1 )杀进程,然后 pmd 会接着下载 ikp 接着释放,最后直接 43 字节码住
    2 )杀守护,就你说的 monitor_process.sh 我已经处理过了
    3 ) hosts 屏蔽,可你知道人家硬编写了( hardcode )有啥用
    4 )阻断 IP ,你说的对,但这些 IP 基本上很少见得到,又或者是可能误杀 CDN 节点
    -------------------------------------------------------------------
    至于我下说的是,1 、2 已经可以食用了,3 、4 单纯就是多余的步骤、求保险
    至于说官方干啥了自己解包自行研究吧,本文仅供学习交流,严禁用于商业用途,请于 24 小时内删除。请支持正版!
    Gipserr
        68
    Gipserr  
       1 天前
    @Nyarime 牛逼,互联网精神与你同在。
    earpiece5631
        69
    earpiece5631  
       1 天前
    我也是昨晚 3 点过看到 72V4 就刷了,也是界面出问题了,起床后才起来重置的。
    Gipserr
        70
    Gipserr  
       1 天前
    继续反馈一下:我刚才升级了 v75v2 ,默认登录进去,wg/docker 都是没有的(我原来 iso 全新安装,没有给硬盘分区)。

    然后我给硬盘分区,重启以后,发现/tmp/ikpkg 下载了一些软件:

    app_show docker docker-bin ik_host netboard nginx_conf pmd pre_cdn_stats shell

    ik_host 里面有可以遥测增加的 IP:
    cre_host
    dis.ikuai8.com:1853
    59.110.171.18:1853
    47.94.237.123:1853
    59.110.171.18:2016
    47.94.237.123:2016
    pmd_host 里面有:
    cat pmd_host
    123.57.179.21:1863
    123.57.179.21:15602
    pkgmanager.ikuai8.com:15602
    59.110.6.135:1863
    59.110.6.135:1560

    shell 里面看来是个云备份工具
    下载的 docker 也没有搞清楚怎么运行起来(因为后台是云平台操纵启用的,我没有绑定云平台)
    lcy630409
        71
    lcy630409  
       1 天前
    @Gipserr
    看来 还是修改域名最靠谱了 将 ikuai8.com 改为 ikuai9.com 之类的
    6AbK2rj2vLBD
        72
    6AbK2rj2vLBD  
       1 天前
    @Gipserr 看你说的,这个意思就是无论登不登录云平台或者账号,都会自动从官方服务器下载一些组件
    Gipserr
        73
    Gipserr  
       1 天前
    @lcy630409 这玩意真像病毒,想尽一切办法给自己保活。禁止写/tmp/ikpkg 不知道行不行。
    s1oz
        74
    s1oz  
       1 天前
    我直接一了百了,ik_rc_client/pmd/cre/ikaudit_update/ikaudit_update 之类全干掉,monitor_process 删掉相关的,然后手动加个 lib 的规则更新,最后给个假的绑定码伪绑定开机自动载入 docker😈
    lcy630409
        75
    lcy630409  
       1 天前
    @s1oz 大哥 docker 怎么启动 之前用的 docker 断掉云控之后 就没显示了
    Gipserr
        76
    Gipserr  
       21 小时 59 分钟前
    @lcy630409 codex “帮我去 [email protected] 看看 /tmp/ikpkg/下面我同事设置的 docker 自动启动的条件是什么,我忘了。”

    /tmp/ikpkg 里面的包是 /etc/log/packages 里面开机解压的
    lcy630409
        77
    lcy630409  
       19 小时 43 分钟前
    ....没有了 是被制裁了?
    Gipserr
        78
    Gipserr  
       19 小时 38 分钟前
    ## 我做了什么

    ### 1. 修复了 Docker 的持久启动链

    这台机器不是普通 Linux 根盘,而是 `RAM root`。很多运行时文件重启后会丢,所以不能把修复写在 `/tmp` 或 `/usr` 的 RAM 层,必须写到持久层。

    我把最小修复落在:

    ```text
    /etc/log/naixi/compat/boot.sh
    ```

    作用是:

    - 开机时把 `/etc/log` 挂成 Docker 的持久工作盘映射
    - 自动补 `/docker` 和 `/usr/sbin/docker`
    - 如果系统恢复了原来的 `docker_server`,就走原链路
    - 如果重启后只恢复了 `docker-bin`、没恢复 `docker` 脚本包,就直接用 `dockerd` fallback 起引擎

    ## 2. 清掉了高风险包和自恢复链

    已删除并持续阻断的对象包括:

    - `pmd`
    - `cre`
    - `ik_rc_client`
    - `ik_host`
    - `shell`
    - `pre_cdn_stats`
    - `ikaudit`
    - `monitor_process.sh`

    对应的持久包、运行目录、入口文件和 RAM root 自恢复脚本都已经清理,并写进了开机清理逻辑。

    ## 3. 封死了高风险云拉取 / 外联链

    现场最危险的链路是:

    ```text
    update_hosts.sh
    -> 从 302.ikuai8.com 获取主机列表
    -> submit.lua 拉取 submit3
    -> 本地直接执行
    ```

    这条链现在的处理方式是:

    - 开机强杀 `update_hosts.sh` / `submit.lua` / `async.lua`
    - 删除 `/tmp/iktmp/ik_hosts` 和 `/tmp/iktmp/submit`
    - 把 `/usr/ikuai/script/utils/update_hosts.sh` 改写成 no-op
    - 把 `/usr/ikuai/script/utils/submit.lua` 改写成空壳

    同时保留 `Naixi cloud level 2` 的原有阻断:

    - `/etc/hosts` 将一批 `ikuai8.com` 云域名 sinkhole 到 `127.0.0.1`
    - `iptables OUTPUT` 对多个 `iKuai` 云 IP 做 `DROP`

    ## 4. 现场验证结果

    本次整改后,我已经做过两次 reboot 后现场复核,确认以下结论成立:

    - `Docker` 第二次 reboot 后已能自动起来
    - `docker info` 正常
    - 高风险的 `update_hosts.sh` / `submit.lua` / `async.lua` 没有复活
    - `pmd/cre/ik_rc_client/ik_audit/monitor_process` 相关进程没有复活
    - `/tmp/iktmp/ik_hosts` 和 `/tmp/iktmp/submit` 没有复活
    - `netstat -anp | grep ESTABLISHED` 现场未看到新的云端已建立连接
    Ne
        79
    Ne  
       19 小时 37 分钟前
    大佬牛逼,不用也先支持大佬。
    earpiece5631
        80
    earpiece5631  
       18 小时 22 分钟前
    完结撒花,还好下了个最新版
    Rinndy
        81
    Rinndy  
       15 小时 43 分钟前 via iPhone
    推特上推荐经常出现你。。话说你和那个机场有关系吗
    Nyarime
        82
    Nyarime  
    OP
       13 小时 10 分钟前 via Android   ❤️ 1
    @Rinndy 并没有关系,我也从来没有开过什么机场,我上外网用的是我 5 年前办的中国电信澳门的电话卡,而且用的是我自己的实名,我不用机场的

    至于这篇帖子,只供学习参考吧,听爱快的老师说他们的 CTO 也换人了,也承诺不会再去做格机这种事情,希望大家也能监督就行。至于说他们的 4.0 也做了插件支持,如果能跟 os 研发的老师聊一聊,看看能不能做一些插件适配,提升一下产品的自由度,我觉得都是很不错的事情,也利于他们企业的未来发展方向

    Nyarc 基本上把国内的嵌入式固件全部都学了一遍,我本人一直维护着一个数据库,包括加密的构建分析 rootfs 自动化解包。这个工具一直都没放出来,算是第一次,或者说直接把人家 ikuai 固件的底裤扒光,换做是 251 那就直接吃国家饭了。得亏是人家爱快公司格局大,不然我估计第二天睡醒,条子就在我家门口了


    至于说,公开披露太过头了,确实是我的责任。我就像个小孩子一样,就想说干脆把这些事情全部都弄出来,毕竟之前论坛上面也有 3.7.14 带 root 的,本身那些 mTLS 私钥基本上都内置好了,不管是以前的版本还是现在最新的 4.0 ,其实都还是那一套 agent 。我能看到他们硬件的成功,包括我自己也有 Q6000 ,希望说未来别那么封闭吧

    还是感谢爱快的 Ethan
    itnoob
        83
    itnoob  
       12 小时 24 分钟前
    膜拜,玩过 ikuai 的系统。
    6AbK2rj2vLBD
        84
    6AbK2rj2vLBD  
       11 小时 12 分钟前   ❤️ 1
    @Nyarime 观察了几天,楼主的人品和技术都很优秀,从楼主的逆向分析来看,爱快问题挺多。但是不得不承认,爱快就是成功了,哪怕新出一个更安全更高效的路由器系统,也不一定能做到爱快这样。爱快正在做 4.0 的研发,我看了下还是有些问题的,无论是功能、界面、还有使用逻辑上更不用说安全了,都有不小的问题,给我的感觉是“迷失了方向”。既然楼主跟爱快联系上了,如果他们态度还不错的话,真心希望楼主能帮助他们在新系统上把把关,比如专业网关系统(只专注安全和性能的官方硬件的专业系统),开放路由系统(带有类似飞牛一样的开放插件平台的社区版本路由系统)这些方向有没有可以做的。让大家能用上一款安全、好用的系统,也是很大的贡献。
    mm2x
        85
    mm2x  
       9 小时 59 分钟前
    大佬 你的固件 404 无法下载啊?
    mm2x
        86
    mm2x  
       9 小时 55 分钟前
    大佬 文章里的爱快固件能发送一份研究下吗? 感谢
    [email protected]
    lxxiil
        87
    lxxiil  
       7 小时 53 分钟前
    @earpiece5631 #80 [email protected] 老哥求个固件谢谢
    Tink
        88
    Tink  
    PRO
       7 小时 32 分钟前
    有点厉害了
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   5628 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 417ms · UTC 09:01 · PVG 17:01 · LAX 02:01 · JFK 05:01
    ♥ Do have faith in what you're doing.