在openwrt中设置自动重启wan接口
路由器刷了openwrt,由于上级路由器断网或者重启连接网络后,OpenWrt路由器不会自动重连网络,如果你想设置WAN接口在出现故障时自动重启,你可以通过几种方法来实现这一功能。
路由器偶尔会自动断网,但是进去路由器发现网络正常,网上查找资料发现应该是运营商更新了,但是路由器没有更新,网上搜了个脚本能解决这个问题,做个备忘。
下面是一些常见的方法:
方法1:使用ifupdown脚本
创建自定义脚本,创建一个自定义的ifupdown脚本来监控WAN接口的状态,并在检测到问题时重启接口。
#!/bin/sh tries=0 logger "my network watchdog start" while [[ $tries -lt 5 ]] do if /bin/ping -c 1 119.29.29.29 >/dev/null then logger "network pass, exit." exit 0 fi tries=$((tries+1)) sleep 10 done logger "network error, restart network"
保存到 root/xxx.sh xxx自己起个名字
chmod +x xxx.sh 给脚本赋予执行权限。
设置脚本定时运行:在openwrt计划任务中新建一个 然后选择自定义
*/6 * * * * sh /root/scripts/xxx.sh
我设置的每6分钟检查一次。
在openwrt中设置自动重启wan接口:你可以创建一个自定义的ifupdown脚本来监控WAN接口的状态,并在检测到问题时重启接口。
#!/bin/sh INTERFACE="wan" # 你的WAN接口名称 LOGFILE="/tmp/wan_check.log" # 检查WAN接口状态 if ! ping -c 3 119.29.29.29 > /dev/null; then echo "$(date) WAN interface down, restarting..." >> $LOGFILE ifdown $INTERFACE && ifup $INTERFACE fi
保存到 root/xxx.sh xxx自己起个名字,
chmod +x xxx.sh 给脚本赋予执行权限。
使用crontab来定时运行这个脚本。例如,每5分钟检查一次:
在openwrt计划任务中新建一个 然后选择自定义 */6 * * * * sh /root/scripts/xxx.sh 我设置的每6分钟检查一次。
方法2:使用watch命令和ifupdown
安装watchcat软件包:系统→软件包→watchcat并安装,然后配置文件 /etc/config/watchcat配置
重新启动网络接口或在ping主机失败时重新启动,或设置定期重新启动。配置文件 /etc/config/watchcat配置
你也可以使用watch命令结合ifupdown来监控接口状态。
watch -n 30 "ping -c 1 119.29.29.29 && echo 'Online' || (ifdown wan && ifup wan && echo 'Restarted WAN')"
这个命令会每30秒检查一次WAN接口的状态,并在检测到问题时重启接口。
方法3:使用fail2ban或watchdog服务
虽然fail2ban主要用于监控和封禁失败的登录尝试,但它也可以用来监控网络连接问题。你可以配置它来监控特定IP或接口的连接问题,并在检测到问题时重启接口。
安装fail2ban(如果尚未安装):
opkg update opkg install fail2ban
配置fail2ban:编辑/etc/fail2ban/jail.local来添加或修改WAN接口的监控规则。例如:
[mywan] enabled = true port = http,https,ssh,ftp # 根据需要修改端口 filter = mywanfilter # 自定义过滤器名称,需要创建此过滤器配置文件在 /etc/fail2ban/filter.d/ 下 logpath = /var/log/mywan.log # WAN日志路径,需要确保有正确的日志记录方式或工具来记录WAN接口问题到此文件 bantime = -1 # 永久封禁,实际上重启接口后会自动解封,但这里可以设置为其他值以测试封禁效果 action = iptables-multiport[name=WAN, port="http,https,ssh,ftp", protocol=tcp] iptables-allports[name=WANRESTART, actiontype=restart] # 重启WAN接口的动作定义,需要自定义此部分以实现重启功能
创建自定义过滤器:在/etc/fail2ban/filter.d/目录下创建相应的过滤器文件,例如mywanfilter.conf和mywanfilter.local。
方法4:使用网络监控工具和自动重启脚本结合使用(如Nagios)
如果你有更高级的需求,可以使用像Nagios这样的网络监控工具来监控WAN接口的状态,并在检测到问题时触发自定义脚本进行重启。这通常涉及到更复杂的配置和额外的软件安装。
结论
选择哪种方法取决于你的具体需求和OpenWrt的配置。对于简单的需求,编写一个简单的脚本并使用crontab可能是最直接的方法。如果你需要更复杂的监控和响应机制,考虑使用fail2ban或集成网络监控工具。每种方法都有其优缺点,根据你的实际情况选择最合适的方案。
提示:AI自动生成,仅供参考
发表评论