[路由器] 红米AX6000 ImmortalWrt 18.06升级到24.10.2,配置npc
原有路由器是红米AX6000最开始图方便直接用了网友的ImmortalWrt18.06,其支持的OpenClash版本太低,不支持http协议。于是这次索性就直接升级一下ImmortalWrt到最新。
升级前
系统 主机名 ImmortalWrt 主机型号 Xiaomi Redmi Router AX6000 架构 ARMv8 Processor rev 4 (v8l) x 4 (40.8°C) 温度 CPU:41.0°C, 2.4G:42°C, 5G:46°C 目标平台 mediatek/mt7986 固件版本 ImmortalWrt 18.06-5.4-SNAPSHOT r11928-ae6ff3410 / LuCI openwrt-18.06-k5.4 branch (git-23.178.42687-494cc11) 内核版本 5.4.224 本地时间 Tue Sep 2 20:59:40 2025 运行时间 23h 21m 47s 平均负载 0.00, 0.08, 0.14 CPU 使用率(%) 20%
参考:ImmortalWrt从0到能正常用教程(刷机、安装、mesh组网、插件安装,以及遇到坑)-磊科无线路由器及网络设备-恩山无线论坛 - Powered by Discuz!
升级
-
下载固件:ImmortalWrt Firmware Selector
Xiaomi Redmi Router AX6000 (stock layout) (如果可用空间很小,大概率是官方布局,你需要选择当前路由器的布局)
Sysupgrade 镜像,后缀为bin
-
通过网页升级会提示
不支持所上传的映像文件格式,请选择适合当前平台的通用映像文件
根据不支持所上传的映像文件格式,请选择适合当前平台的通用映像文件,解决方法-小米无线路由器及小米网络设备-恩山无线论坛 - Powered by Discuz!解决,不过它这个是ubi后缀
-
多等一会儿,然后看看192.168.1.1是否可以访问,账号root密码是空的
软件安装
-
换源:ImmortalWrt 软件仓库镜像使用帮助 - MirrorZ Help
执行
opkg update
-
openclash:通过web界面
系统
->软件包
界面刷新软件列表后搜索 openclash然后更新。如果刷新失败,可以ssh执行opkg update
,安装失败则通过opkg install
试试如果没有看到
服务
->openclash
需要退出重新登陆给openclash添加配置文件,它会自己下载内核工作应该是正常的
-
upnp:
opkg install luci-app-upnp
然后去打开upnp开关,对bt下载和部分游戏有用
-
npc: 直接通过软件包管理安装npc即可,ssh连接后输入npc按照提示配置即可,需要cd /usr/bin 然后再注册
如果运行失败,需要修改/etc/init.d/nps*这个脚本内容,完整内容放到最下面了。
-
wifi:
网络
->无线
第四个点击编辑,设置wifi名字,加密算法和密码就行了。如果不需要2.4G,就把第二个禁用就行
遇到的断网问题
然后突然发现没有网络了,opkg update
不能执行了,经过查找可能是关于opkg update报错无法下载的解决方法(换源无效、源用浏览器可访问时)-OPENWRT专版-恩山无线论坛 - Powered by Discuz! 这个问题。
但是我操作之后不好用,或者再接口中设置一下WAN的DNS,指定一个可用的dns。参考记录 OpenWrt 执行 opkg update 命令报错 Failed to download,但是换源无效且源用浏览器可访问的解决方案 - 余独好修以为常 - 博客园
但是依旧不行,经过排查发现 /etc/resolv.conf 始终是 127.0.0.1,修改之后只要重启dnsmasq就会变回来。nslookup baidu.com后发现解析结果是 198.18.0.4,这是个保留地址,怀疑可能是openclash的问题。经过查询得知如下[Bug] 开启openclash后ping域名变成198.x.x.x · Issue #4047 · vernesong/OpenClash 切换为redir-host
即可
需要注意设置完了之后,点击最下面的应用配置才行
实际上经过各种折腾之后,换了个机场就好了。也许上面的方法确实有用,但跟我此次的情况不同
升级之后
主机名 ImmortalWrt 型号 Xiaomi Redmi Router AX6000 (stock layout) 架构 ARMv8 Processor rev 4 (v8l) x 4 温度 CPU: 40.0°C, WiFi: 42.0°C 46.0°C 目标平台 mediatek/filogic 固件版本 ImmortalWrt 24.10.2 r33247-467867283bb9 / LuCI openwrt-24.10 branch 25.175.22647~dbf5de0 内核版本 6.6.93 本地时间 2025-09-02 23:11:14 运行时间 0h 14m 21s 平均负载 0.02, 0.08, 0.08 CPU 使用率(%) 3%
NPC服务配置失败
出现,原因是因为is_running函数中使用ps命令检查对应Pid是否运行中,但是openwrt的ps命令参数和正常的不一样
root@ImmortalWrt:/etc/init.d# ./nps-client-2e435060b1 start Starting nps-client-2e435060b1 Unable to start, see /var/log/nps-client-2e435060b1.log and /var/log/nps-client-2e435060b1.err
- 原来的基础上增加
/etc/rc.common
和START
和STOP
- is_running中原先使用ps判断进程是否存在,改为kill -0
#!/bin/sh /etc/rc.common # chkconfig: - 99 01 # description: NPS 内网穿透客户端 # processname: /usr/bin/npc START=99 STOP=01 cmd="/usr/bin/npc -server=xxxx.com:xxx -vkey=cxxxxxx -debug=false -log_path=/var/log/npc-xxx.log" name="$(basename $(readlink -f $0))" pid_file="/var/run/$name.pid" stdout_log="/var/log/$name.log" stderr_log="/var/log/$name.err" [ -e "/etc/sysconfig/$name" ] && . "/etc/sysconfig/$name" get_pid() { cat "$pid_file" } is_running() { [ -f "$pid_file" ] && kill -0 "$(get_pid)" >/dev/null 2>&1 } start() { if is_running; then echo "Already started" return 0 fi echo "Starting $name" $cmd >>"$stdout_log" 2>>"$stderr_log" & echo $! >"$pid_file" sleep 1 if ! is_running; then echo "Unable to start, see $stdout_log and $stderr_log" return 1 fi } stop() { is_running || { echo "Not running"; return 0; } echo -n "Stopping $name" kill "$(get_pid)" for i in $(seq 1 10); do is_running || { echo ""; echo "Stopped"; rm -f "$pid_file"; return 0; } echo -n "." sleep 1 done echo "" if is_running; then echo "Not stopped; may still be shutting down" return 1 fi rm -f "$pid_file" } restart() { stop && start } status() { if is_running; then echo "Running" else echo "Stopped" return 1 fi }
修改完毕之后,执行./nps-client-cxxxxxxxxxx enable 实现开机自启 disable取消开机自启