openwrt lan口未知原因断网的修补方案记录
前言:
由于openwrt出现莫名故障,暂未查明具体原因,临时写了个脚本进行补救,该文对此进行记录。
故障描述:
主要硬件信息:
cpu:N3150
网卡:
root@OpenWrt:~# lspci|grep -i 'eth'
01:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 07)
02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 07)
故障表现:
lan口随机出现断网情况,拔插lan口连接ap的网线即可再次正常工作,并且日志中并无故障相关信息,暂未找到实际原因。
怀疑过系统问题,刷了多个版本的openwrt后故障依然存在。怀疑过与ap不兼容,在lan口加交换机后连接ap,依然会出现该问题。拔插交换机-op段的网线可恢复,拔插交换机-ap段的网线无效。
解决思路:
由于并未找到实际原因,以及拔插lan口后可以恢复网络,打算暂时写个脚本让主路由能正常工作。具体逻辑是通过循环ping ap的ip判断内网是否通畅,不通畅则重启lan口。
ping -c 1 -W 1 ip;ping检测命令,超时判断减少为1s
ifup lan;#重启lan口命令
初始代码:
ip=192.168.3.2;#此处填内网验证ip
for((i=0;i<10;i=(i)))#勿吐槽,随便写了个死循环
do
/bin/ping -c 1 -W 1 $ip
if [ $? -eq 0 ]; then
echo "ping $ip success!"
else
echo "ping $ip fail!"
logger "lan error, restart lan"
ifup lan
sleep 6;
fi
sleep 1;
done
该代码能实现基本要求,但是考虑到有一定几率杀后台,所以需要加入守护。这里我偷个懒,直接用crontab每几分钟调用一次,脚本只需要判断是否有脚本在运行即可,如果没有运行则继续运行。
info=`ps | grep /root/ping_test.sh | grep -v grep | cut -d " " -f 1`;#用于检测是否已经运行,路径填完整防止与其他冲突
info=($info)#转成数组,方便判断有几个后台在运行。
最终代码:
#!/bin/bash
info=`ps | grep /root/ping_test.sh | grep -v grep | cut -d " " -f 1`;
info=($info)
#echo $info
#echo ${#info[@]}
ip=192.168.3.2;#此处填内网验证ip
if [ ${#info[@]} = 2 ];then #有两个结果则开始运行
for((i=0;i<10;i=(i)))
do
/bin/ping -c 1 -W 1 $ip
if [ $? -eq 0 ]; then
echo "ping $ip success!";
else
echo "ping $ip fail!";
logger "lan error, restart lan!";
ifup lan;
sleep 6;
fi
sleep 1;
done
else
echo "still running";
fi
将文件保存为ping_test.sh,保存在/root/路径下,之后再crontab中写入计划任务,可每分钟执行一次,自行调整。
1 * * * * /bin/bash /root/ping_test.sh &
或者
1 * * * * nohup /bin/bash /root/ping_test.sh >/dev/null 2>&1 &
执行结果日志:
ip信息已删除
Sun Feb 19 06:37:07 2023 daemon.info watchcat[25546]: Could not reach 8.8.8.8 for 60. Rebooting after reaching 21600
此处成功发现内网已经断开,将lan口重启
Sun Feb 19 06:38:48 2023 user.notice root: lan error, restart lan!
Sun Feb 19 06:38:48 2023 daemon.notice netifd: Interface 'lan' is now down
Sun Feb 19 06:38:48 2023 daemon.info avahi-daemon[3771]: Withdrawing address record for 240e:::::1 on eth0.
Sun Feb 19 06:38:48 2023 daemon.notice ttyd[19019]: [2023/02/19 06:38:48:4523] N: rops_handle_POLLIN_netlink: DELADDR
Sun Feb 19 06:38:48 2023 daemon.info avahi-daemon[3771]: Registering new address record for fe80:::::4e24 on eth0.*.
Sun Feb 19 06:38:48 2023 daemon.info avahi-daemon[3771]: Registering new address record for 240e:::::1 on eth0.*.
Sun Feb 19 06:38:48 2023 daemon.info avahi-daemon[3771]: Withdrawing address record for 192.168.3.1 on eth0.
Sun Feb 19 06:38:48 2023 daemon.info avahi-daemon[3771]: Leaving mDNS multicast group on interface eth0.IPv4 with address 192.168.3.1.
Sun Feb 19 06:38:48 2023 daemon.notice ttyd[19019]: [2023/02/19 06:38:48:5212] N: rops_handle_POLLIN_netlink: DELADDR
Sun Feb 19 06:38:48 2023 daemon.notice ttyd[19019]: [2023/02/19 06:38:48:5213] N: rops_handle_POLLIN_netlink: DELADDR
Sun Feb 19 06:38:48 2023 daemon.notice ttyd[19019]: [2023/02/19 06:38:48:5214] N: rops_handle_POLLIN_netlink: DELADDR
Sun Feb 19 06:38:48 2023 daemon.notice netifd: Interface 'lan' is disabled
Sun Feb 19 06:38:48 2023 daemon.notice netifd: Network device 'eth0' link is down
Sun Feb 19 06:38:48 2023 daemon.notice netifd: Interface 'lan' has link connectivity loss
Sun Feb 19 06:38:48 2023 daemon.info avahi-daemon[3771]: Interface eth0.IPv4 no longer relevant for mDNS.
Sun Feb 19 06:38:48 2023 daemon.info avahi-daemon[3771]: Interface eth0.IPv6 no longer relevant for mDNS.
Sun Feb 19 06:38:48 2023 daemon.info avahi-daemon[3771]: Leaving mDNS multicast group on interface eth0.IPv6 with address 240e:::1.
Sun Feb 19 06:38:48 2023 daemon.info avahi-daemon[3771]: Withdrawing address record for fe80:::4e24 on eth0.
Sun Feb 19 06:38:48 2023 daemon.info avahi-daemon[3771]: Withdrawing address record for fd1a:::1 on eth0.
Sun Feb 19 06:38:48 2023 daemon.info avahi-daemon[3771]: Withdrawing address record for 240e:::::1 on eth0.
Sun Feb 19 06:38:48 2023 kern.info kernel: [97420.894078] eth0: 0xffffc9000006d000, 00:00:00:00:00:00, IRQ 119
Sun Feb 19 06:38:48 2023 daemon.notice netifd: Interface 'lan' is enabled
Sun Feb 19 06:38:48 2023 daemon.notice netifd: Interface 'lan' is setting up now
Sun Feb 19 06:38:48 2023 daemon.info avahi-daemon[3771]: Joining mDNS multicast group on interface eth0.IPv4 with address 192.168.31.1.
Sun Feb 19 06:38:48 2023 daemon.info avahi-daemon[3771]: New relevant interface eth0.IPv4 for mDNS.
Sun Feb 19 06:38:48 2023 daemon.info avahi-daemon[3771]: Registering new address record for 192.168.31.1 on eth0.IPv4.
Sun Feb 19 06:38:48 2023 daemon.info avahi-daemon[3771]: Joining mDNS multicast group on interface eth0.IPv6 with address 240e:::1.
Sun Feb 19 06:38:48 2023 daemon.info avahi-daemon[3771]: New relevant interface eth0.IPv6 for mDNS.
Sun Feb 19 06:38:48 2023 daemon.notice netifd: Interface 'lan' is now up
Sun Feb 19 06:38:48 2023 daemon.info avahi-daemon[3771]: Registering new address record for 240e:::::1 on eth0.*.
Sun Feb 19 06:38:48 2023 daemon.info avahi-daemon[3771]: Registering new address record for fd1a::::1 on eth0.*.
Sun Feb 19 06:38:49 2023 daemon.err odhcpd[2637]: Failed to send to ff02::1%lan@eth0 (Address not available)
Sun Feb 19 06:38:50 2023 daemon.info samba4-server: io_uring module found, enabling VFS io_uring. (also needs Kernel 5.4+ Support)
Sun Feb 19 06:38:50 2023 daemon.info samba4-server: io_uring module found, enabling VFS io_uring. (also needs Kernel 5.4+ Support)
Sun Feb 19 06:38:50 2023 daemon.info samba4-server: io_uring module found, enabling VFS io_uring. (also needs Kernel 5.4+ Support)
Sun Feb 19 06:38:50 2023 daemon.info samba4-server: io_uring module found, enabling VFS io_uring. (also needs Kernel 5.4+ Support)
Sun Feb 19 06:38:52 2023 kern.info kernel: [97425.132501] r8168: eth0: link up
Sun Feb 19 06:38:52 2023 kern.info kernel: [97425.134542] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
Sun Feb 19 06:38:52 2023 daemon.notice netifd: Network device 'eth0' link is up
Sun Feb 19 06:38:52 2023 daemon.notice netifd: Interface 'lan' has link connectivity
愿你眼里的星星温柔泛
校验提示文案
值友8856691024
去看看
校验提示文案
ptsa
/root/ping_test.sh: line 6: $'\r': command not found
/root/ping_test.sh: line 8: syntax error near unexpected token `$'\r''
'root/ping_test.sh: line 8: `for((i=0;i
校验提示文案
ptsa
校验提示文案
ptsa
校验提示文案
ptsa
/root/ping_test.sh: line 6: $'\r': command not found
/root/ping_test.sh: line 8: syntax error near unexpected token `$'\r''
'root/ping_test.sh: line 8: `for((i=0;i
校验提示文案
值友8856691024
去看看
校验提示文案
愿你眼里的星星温柔泛
校验提示文案