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

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

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

    熬了一个通宵,在爱快软路由 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 条附言  ·  3 天前
    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 条附言  ·  2 天前
    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 条附言  ·  1 天前
    本帖发布后收到 iKuai 官方团队的联系,双方已就内容中涉及的安全细节进行了友好沟通。出于负责任的安全研究原则,相关可操作性较强的技术细节和下载链接已移除。

    后续相关安全发现将通过私下渠道反馈给 iKuai 团队,不再公开披露。感谢关注。
    95 条回复    2026-04-22 23:25:18 +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  
       3 天前
    大佬牛逼!
    Kinnice
        9
    Kinnice  
       3 天前 via Android
    ikuai 的老版本因为内核低,实际性能并不如新版 op ,有看下 4.0 有什么提升吗
    Nyarime
        10
    Nyarime  
    OP
       3 天前 via Android
    @imnpc 你得传我做的 bin 上去升级... 官方版的就是 rc.console
    lcy630409
        11
    lcy630409  
       3 天前
    大佬 你这个会被官方远程格式化么
    Nyarime
        12
    Nyarime  
    OP
       3 天前
    @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  
       3 天前
    佬能补下 tproxy 吗,残缺手动补了启动就噶了
    Nyarime
        14
    Nyarime  
    OP
       3 天前
    @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  
       3 天前 via iPhone
    大佬最近有在玩 4.0 不 4.0 也是差不多的搞 root 方法吗
    domingocbk
        16
    domingocbk  
       3 天前
    大佬牛逼
    Nyarime
        17
    Nyarime  
    OP
       3 天前   ❤️ 1
    @beck8 nyarc 是可以拆 4.0 的
    我在修补 v69 后发了一个详版,你可以使用工具自己组装定制自己的爱快
    https://forum.naixi.net/thread-11395-1-1.html
    beck8
        18
    beck8  
       3 天前 via iPhone
    @Nyarime 我好像反应过来了,我还关注你推特了。naixi 请问邀请码我应该从哪获取呢?
    Nyarime
        19
    Nyarime  
    OP
       3 天前
    @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  
       2 天前
    @Nyarime 能直接把 ikuai 的域名直接改成 baidu 么?直接从代码上替换掉?
    lcy630409
        30
    lcy630409  
       2 天前
    @Nyarime 看到最新的 naixi_v13 了,是 iptables 阻断特定 ip ,这个感觉不是很可靠
    最起码要实时查询域名的 ip 再阻断,ip 这东西修改太容易了
    Gipserr
        31
    Gipserr  
       2 天前
    汇报一下 v70v5 的那个 bin 的使用情况。
    yun.ikuai8.com 的后台还能看到路由器在线
    但是信息(客户端)上报的情况停留在系统启动 5 秒以内。
    Gipserr
        32
    Gipserr  
       2 天前
    过了五六分钟以后又全量终端信息上报到云平台了。看来隔绝的还没搞定。
    Nyarime
        33
    Nyarime  
    OP
       2 天前 via Android
    @Gipserr 除了 ik_rc_client 我们处理了,你说的采集上报连的是 dis.ikuai8.com:1853 ,这个我更新后喊您
    今天目标就是把这个处理掉,然后完善 luci
    Nyarime
        34
    Nyarime  
    OP
       2 天前 via Android
    @s1oz iKuai 内核 5.10.194 没编译 xt_TPROXY.ko

    问题是我没法加内核模块,除非:编译一个匹配 5.10.194 的 xt_TPROXY.ko (需要 iKuai 的内核源码 那几乎不可能
    Nyarime
        35
    Nyarime  
    OP
       2 天前 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
       2 天前 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
       2 天前
    @Gipserr 目前 v71v11 已经彻底解决
    https://dl.naixi.net/ikuai-naixi/iKuai8_x64_3.7.19_Naixi_v71v11.bin
    # 执行阻断
    naixi ikuaiyun 2
    Gipserr
        38
    Gipserr  
       2 天前
    @Nyarime 谢谢.目前最新版本的状况:
    1.yun 还是显示这个路由器在线
    2.终端用户会在启动后上报一次,然后就不再更新了,可能是启动过程中抢先上报了.
    已经很有曙光了,以后再慢慢研究.
    lcy630409
        39
    lcy630409  
       2 天前
    @Nyarime
    如果能修改域名 直接随便改,改成 ikuai9.com 都行,只要不给到 ikuai ,
    看下大佬有没有空 修改一个改了域名的 我可以测试 我的 ikuai 是 esxi 里的

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

    按时间顺序

    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  
       2 天前
    @Gipserr dns 223.5.5.5 114 是 ikuai dns 设置里的默认 dns 么?可以修改这个 dns 测试么?如果这个 dns 是可以设置的 那么可以做一个假 dns 来应答 ikuai8.com 域名
    Gipserr
        45
    Gipserr  
       2 天前
    @lcy630409 可能可以内置一个 dns ,这个是写到 resolv 的 dns 。
    sghsgh
        46
    sghsgh  
       2 天前
    谢谢,终于可以 IK 上跑个楼梯了
    a56143575
        47
    a56143575  
       2 天前
    大佬牛逼!这个只是适合在 X86 机器上吧?
    lxxiil
        48
    lxxiil  
       2 天前
    请问大佬,那个 sk5 分流插件可以去掉授权吗,300 元真的好贵
    Nyarime
        49
    Nyarime  
    OP
       2 天前
    @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  
       1 天前
    @lcy630409 codex “帮我去 [email protected] 看看 /tmp/ikpkg/下面我同事设置的 docker 自动启动的条件是什么,我忘了。”

    /tmp/ikpkg 里面的包是 /etc/log/packages 里面开机解压的
    lcy630409
        77
    lcy630409  
       1 天前
    ....没有了 是被制裁了?
    Gipserr
        78
    Gipserr  
       1 天前
    ## 我做了什么

    ### 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  
       1 天前
    大佬牛逼,不用也先支持大佬。
    earpiece5631
        80
    earpiece5631  
       1 天前
    完结撒花,还好下了个最新版
    Rinndy
        81
    Rinndy  
       1 天前 via iPhone
    推特上推荐经常出现你。。话说你和那个机场有关系吗
    Nyarime
        82
    Nyarime  
    OP
       1 天前 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  
       1 天前
    膜拜,玩过 ikuai 的系统。
    6AbK2rj2vLBD
        84
    6AbK2rj2vLBD  
       1 天前   ❤️ 1
    @Nyarime 观察了几天,楼主的人品和技术都很优秀,从楼主的逆向分析来看,爱快问题挺多。但是不得不承认,爱快就是成功了,哪怕新出一个更安全更高效的路由器系统,也不一定能做到爱快这样。爱快正在做 4.0 的研发,我看了下还是有些问题的,无论是功能、界面、还有使用逻辑上更不用说安全了,都有不小的问题,给我的感觉是“迷失了方向”。既然楼主跟爱快联系上了,如果他们态度还不错的话,真心希望楼主能帮助他们在新系统上把把关,比如专业网关系统(只专注安全和性能的官方硬件的专业系统),开放路由系统(带有类似飞牛一样的开放插件平台的社区版本路由系统)这些方向有没有可以做的。让大家能用上一款安全、好用的系统,也是很大的贡献。
    mm2x
        85
    mm2x  
       23 小时 50 分钟前
    大佬 你的固件 404 无法下载啊?
    mm2x
        86
    mm2x  
       23 小时 45 分钟前
    大佬 文章里的爱快固件能发送一份研究下吗? 感谢
    [email protected]
    lxxiil
        87
    lxxiil  
       21 小时 44 分钟前
    @earpiece5631 #80 [email protected] 老哥求个固件谢谢
    Tink
        88
    Tink  
    PRO
       21 小时 23 分钟前
    有点厉害了
    lxxiil
        89
    lxxiil  
       13 小时 20 分钟前
    @Gipserr #70 [email protected] 老哥求个固件谢谢
    wu0lei
        90
    wu0lei  
       12 小时 57 分钟前
    老哥求个固件谢谢 6552189@ gmail.com
    simplove
        91
    simplove  
       12 小时 18 分钟前
    @lxxiil 上面的链接可以用迅雷离线,但是电脑端迅雷下载不了,会提示违规。 用手机版迅雷可以成功下载。
    得益于迅雷的缓存服务器。 手机下载后传给电脑就行啦
    earpiece5631
        92
    earpiece5631  
       11 小时 21 分钟前
    @Gipserr 我只备份了 75v2,求兄弟给个你最后改好的固件 heyxmx - gmail
    lxxiil
        93
    lxxiil  
       10 小时 32 分钟前 via iPhone
    @earpiece5631 老哥,最新是什么版本
    yzm157
        94
    yzm157  
       8 小时 44 分钟前
    @earpiece5631 大哥,能给个 V75V2 的版本么,yzm157 gmail
    lxxiil
        95
    lxxiil  
       7 小时 27 分钟前 via iPhone
    @yzm157 [超级会员 V9] 通过百度网盘分享的文件:iKuai8_x....bin
    链接: https://pan.baidu.com/s/1XGJNyM0kVPJAqm3KVZrvaA?pwd=6Xwj
    提取码:6Xwj
    复制这段内容打开「百度网盘 APP 即可获取」
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   1089 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 110ms · UTC 22:52 · PVG 06:52 · LAX 15:52 · JFK 18:52
    ♥ Do have faith in what you're doing.