原有路由器是红米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取消开机自启
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |