Welcome to Yumao′s Blog.
自動更新了OP1907之後
經常發生PPPoE連接5760分鍾的自動重連後
發現沒有網絡可用
接口顯示已經獲取到IP地址
然後查詢路由表發現默認路由未添加
只添加了網關的路由
那就直接加一個cron狗來保證網絡正常
> nano /root/pppdog.sh #!/bin/sh . /lib/netifd/netifd-proto.sh INTERFACE=wan DEFAULTROUTE=`route -n |grep ^0.0.0.0 |grep pppoe-$INTERFACE$` PINGIP=1.2.4.8 if [ -z "$DEFAULTROUTE" ] then if [ -n "$GATEWAYIP" ] then echo "`date '+%Y-%m-%d %H:%M:%S'` - PPPDog No Route Reload Route" >> /root/pppdog.log # IPv4 Route ip route add `ifstatus wan |jsonfilter -e '@["route"][0].nexthop'` dev pppoe-$INTERFACE ip route add default via $GATEWAYIP dev pppoe-$INTERFACE # IPv6 Init json_init json_add_string name "${INTERFACE}_6" json_add_string ifname "@${INTERFACE}" json_add_string proto dhcpv6 json_add_string zone "wan" json_close_object ubus call network add_dynamic "$(json_dump)" sleep 10s # IPv6 Route ip -6 route add `ifstatus wan_6 |jsonfilter -e '@["route"][0].target'`/`ifstatus wan_6 |jsonfilter -e '@["route"][0].mask'` dev pppoe-$INTERFACE proto static metric `ifstatus wan_6 |jsonfilter -e '@["route"][0].metric'` pref medium ip -6 route add default from `ifstatus wan_6 |jsonfilter -e '@["route"][1].source'` via `ifstatus wan_6 |jsonfilter -e '@["route"][1].nexthop'` dev pppoe-$INTERFACE proto static metric `ifstatus wan_6 |jsonfilter -e '@["route"][1].metric'` pref medium ip -6 route add default from `ifstatus wan_6 |jsonfilter -e '@["route"][2].source'` via `ifstatus wan_6 |jsonfilter -e '@["route"][2].nexthop'` dev pppoe-$INTERFACE proto static metric `ifstatus wan_6 |jsonfilter -e '@["route"][2].metric'` pref medium else echo "`date '+%Y-%m-%d %H:%M:%S'` - PPPDog No Route Reset Interface" >> /root/pppdog.log ifdown $INTERFACE ifup $INTERFACE fi else PINGTEST=`ping $PINGIP -c 1` PINGEXIT="$?" if [ "$PINGEXIT" == "1" ] then echo "`date '+%Y-%m-%d %H:%M:%S'` - PPPDog Ping Error Reset Interface" >> /root/pppdog.log ifdown $INTERFACE ifup $INTERFACE else PINGLOSS=`ping $PINGIP -c 4 |grep 100%` if [ -n "$PINGLOSS" ] then echo "`date '+%Y-%m-%d %H:%M:%S'` - PPPDog Ping Loss Reset Interface" >> /root/pppdog.log ifdown $INTERFACE ifup $INTERFACE fi fi fi exit 0 > nano /etc/crontabs/root 0 * * * * /root/pppdog.sh > /etc/init.d/cron restart
每小時檢測一次網關是否存在
不存在的話添加
存在的話測試網絡(Ping)是否通暢
不通暢則重啓目標接口