原有路由器是红米AX6000最开始图方便直接用了网友的ImmortalWrt18.06,其支持的OpenClash版本太低,不支持http协议。于是这次索性就直接升级一下ImmortalWrt到最新。
升级前
shell
系统
主机名 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
即可 需要注意设置完了之后,点击最下面的应用配置才行
实际上经过各种折腾之后,换了个机场就好了。也许上面的方法确实有用,但跟我此次的情况不同
升级之后
shell
主机名 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命令参数和正常的不一样
shell
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
shell
#!/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取消开机自启