本帖最后由 yofer 于 2025-3-10 22:24 编辑
20250310更新了附件中的复杂版脚本,之前文件格式上有点不正确,已修复,下载过的朋友请重新下载。复杂版加入了多重检测、接口状态验证、智能重试机制等,可添加多个检测目标,比如局域网ip,8.8.8.8,baidu.com等,优化验证机制提升检测可靠性,喜欢折腾的可以拿去玩玩、改改,以符合你的需求。
众所周知,红米路由有很多型号都存断流、断连问题,表现为不定期、不规律的发生wifi处于连接状态,但是信号图标出现感叹号,设备不能上网的问题,你需要等待2-3分钟他自己重启恢复,或者严重点,需要手动重启路由才能解决。
这种情况很难在你想查找问题的时候复现,非常的随机,对新手小白来说非常不友好,甚至搞不清楚到底是路由器的问题、光猫的问题还是家里网线的问题。
这种随机故障不论是官方固件、qsdk固件还是普通的openwrt固件都存在,并不像很多人讲的,你降低官方固件的版本就可以避免,至少我手中的这台红米ax6降级是无效的。同时路由器的工作模式也不影响此故障的出现,主路由拨号,有线中继或者主路由关dhcp,不用wan口的手动ap模式,都存在该故障。
经过摸索发现,路由器出现故障的时候,实际上是网口堵塞了,你重新插拔网线即可解决,无需重启设备,每次重启中断几分钟wifi还是比较难受的,秉持着废物利用,勤俭节约的美德,垃圾路由器还得接着用,最后写了一段脚本让设备在网口不通的时候,自动关闭、启动网口来解决问题。
具体情况我说一下,我的路由是红米ax6,家里有openwrt的软路由,这台ax6现在只作为ap来使用,官方的固件早都不更新了,功能也非常简陋,用起来不舒服,最近刚把固件刷成immortalwrt的24.10 custom U-Boot layout版(这个版实际和stock layout版是一样的),具体怎么刷固件,玩路由的都会吧,不多赘述了,下面进入正题。
openwrt固件和小米官方固件通用的简易版脚本:
游客,如果您要查看本帖隐藏内容请回复看自己的网络接口名称,“lan”是逻辑接口,“br-lan”是物理桥接设备,24.10版之后的openwrt,ifdown/ifup语句只能跟逻辑接口,老版本的op和小米官方固件可以使用br-lan等物理设备
上面脚本的的判断部分,因为ax6我是当作ap用,我的主路由ip为192.168.1.1。你要根据情况修改“192.168.1.1”部分,可以是你的主路由,也可以是公网ip,比如8.8.8.8,总之为了判断网口是否断连了。
部署方法
复制上面代码,保存为check-lan.sh,然后上传至路由器,选一个文件夹比如/usr/bin,或者/root都行;赋予执行权限,chmod +x /usr/bin/check-lan.sh,等同于给与0755权限;openwrt添加cron任务(每3分钟一次),*/3 * * * * /usr/bin/check-lan.sh,保存。也可以把/3改/1每分钟一次,恢复更快;
小米固件可以直接在ssh下运行,添加计划;echo "*/3 * * * * /usr/bin/check-lan.sh" >> /etc/crontabs/root复制代码使用下面代码,验证是否添加成功crontab -l复制代码
如果计划任务没生效,可以在终端或ssh里运行下面代码,重启计划任务。/etc/init.d/cron restart复制代码
此时,自动判断脚本已经工作,每3分钟检测一次,网口堵塞后自动暂停并启动。这个脚本比较简单,一般测测通断是够用了。