写个脚本让路由器网络更可靠(基于华硕路由器)

2020-12-27 19:53:26 123点赞 1045收藏 115评论

追加修改(2021-01-24 14:20:58):
百度最近也不稳定了。已经有几次没响应然后路由器自动拨号,有需要的值友可以改成判断其他多个网站的。 或者直接在高级设置》外部网络》Internet Detection 改成ppp echo,这样路由器会测试运营商的拨号服务器是否连接正常,断联的时候会自动重新拨号,默认是关闭的,看当地运营商是否支持吧。

背景:

  家里和工作室用的路由器都是华硕或者刷了华硕(梅林)固件的,一直以来用的都挺稳,带机量在50到100左右,宽带用的是电信,路由器拨号,有公网IP。广东的电信环境是每48小时会断开会话,重新拨号获取动态的公网IP(其实准确的说是47小时55分钟)。

查看日志可以发现确实是47小时55分钟:

Nov 11 05:57:58 rt-ac1900p-e810.local pppd[505]: LCP terminated by peer

Nov 11 05:57:58 rt-ac1900p-e810.local pppd[505]: Connect time 2875.5 minutes.

在会话到期时,运营商端会强制结算断开会话,路由器端检测到连接断开会自动开始重新拨号。

运行流程大多数情况下并没有什么问题,但有时候会突然上不了网,登录路由器发现并没有死机,因为我的工作室和网络都配置了外网访问,有时候要远程办公恰好又出问题的时候,会很抓狂。而这一年刚好就出现了这么几个网络故障的场合:

1、2月份疫情期间被困老家,全靠远程访问工作室的网络办公,突然有天网络中断,因为我设置的每周一早上6点自动重启,所以一直等到第二周的周一路由器自动重启了才能重新连接到工作室的网络。

2、有一次周末在家加班访问工作室网络的时候网络中断,于是又得吭哧吭哧跑工作室检查原因。

3、周一上班的时候发现工作室没网,路由器登录不上,应该是路由器重启的时候出了bug系统假死重启不了(这个是384固件的bug,会有极小的概率在重启的时候出问题,所以在官改的软件中心里面有大佬另写了重启助手的插件)

  分析了一遍日志,出现故障的原因可能是:运营商强制结算断开pppoe拨号会话的时候,路由器端可能并不能及时响应,于是出现运营商端已经结束,但是路由器还以为原来的会话可用,也就不会重新拨号请求新的IP,但其实这时候该会话已经不可用,路由器只能等到下次重启的时候重新拨号。

  而且基于上面提到的第3点,我个人认为还是尽量避免路由器重启会比较好。

需求:

定时检测互联网是否正常连接,如果连接不上,则自动重新拨号。

这样也不用在网络出现问题的时候,还得等到下一次路由器重启了。

实现:

目前路由器本身没有这个功能,那就自己写个脚本实现吧(其实是找的别人脚本自己改的写个脚本让路由器网络更可靠(基于华硕路由器)

既然做了就共享出来,万一大家有一样的需求呢。

实现是在ssh登录路由器下实现的,自己找方法ssh登录路由器哈,这个很简单我就不写了。

脚本1:重新拨号的脚本

# 刷的官改固件,脚本可以放到/koolshare/scripts 下,重启的话也不会丢失,官方固件的话可以放到/jffs 下

vi /koolshare/scripts/repppd.sh

#!/bin/sh

/usr/bin/logger -c "断开拨号连接"

killall pppd

/usr/bin/logger -c "延时10秒"

sleep 10

/usr/bin/logger -c "重新拨号"

pppd file /tmp/ppp/options.wan0 >/dev/null 2>&1 &

脚本2:检测脚本

# 检测百度是否可以连接,5秒超时,两次检测,间隔1分钟,如果两次检测都无法连接百度则执行脚本1重新拨号。具体参数看懂了自己改哦很简单的。

vi /koolshare/scripts/checknetwork.sh

#!/bin/sh

#检测网络链接畅通

function network()

{

#超时时间

local timeout=5

#目标网站

local target=www.baidu.com

#获取响应状态码

local ret_code=`curl -I -s --connect-timeout ${timeout} ${target} -w %{http_code} | tail -n1`

if [ "x$ret_code" = "x200" ]; then

#网络畅通

return 1

else

#网络不畅通

return 0

fi

return 0

}

#第1次检测

network

first_check=$?

#睡眠60秒

sleep 60

#第2次检测

network

second_check=$?

if [[ $first_check -eq 0 && $second_check -eq 0 ]];then

/usr/bin/logger -c "无法连接互联网,准备重新拨号!"

#执行脚本1重新拨号

/bin/sh /koolshare/scripts/repppd.sh

exit -1

fi

/usr/bin/logger -c "网络正常"

exit 0

脚本3:开机添加定时任务脚本

# 因为路由器重启后,crontab的定时任务会被清空,所以需要在开机时用命令添加定时检测任务, /jffs/scripts/这个目录下的脚本在重启后都会重新执行。我写的是每10分钟执行一次网络检测的脚本。

vi /jffs/scripts/services-start.sh

#!/bin/sh

#添加定时任务,每10分钟检测网络一次

/usr/sbin/cru a checknetwork "*/10 * * * * /bin/sh /koolshare/scripts/checknetwork.sh"

#每周一早上6点05分,重新拨号

/usr/sbin/cru a repppd "5 6 * * 1 /bin/sh /koolshare/scripts/repppd.sh"

折腾完成,可以重启路由器,ssh登录后,crontab -l 命令查看一下定时任务时候正常

写个脚本让路由器网络更可靠(基于华硕路由器)

脚本执行后,在系统记录可以看到执行情况,其实这个对于很多人并没有需求,做了就给大家参考参考,折腾嘛无非就是自个给自个找事瞎忙活写个脚本让路由器网络更可靠(基于华硕路由器)

写个脚本让路由器网络更可靠(基于华硕路由器)

展开 收起

ASUS 华硕 RT-BE88U 双频7200M 家用Mesh无线路由器 Wi-Fi 7 黑色 单个装

ASUS 华硕 RT-BE88U 双频7200M 家用Mesh无线路由器 Wi-Fi 7 黑色 单个装

1999元起

ASUS 华硕 天选 TX-AX6000 双频6000M 家用千兆Mesh无线路由器 Wi-Fi 6 黑色 单个装

ASUS 华硕 天选 TX-AX6000 双频6000M 家用千兆Mesh无线路由器 Wi-Fi 6 黑色 单个装

689元起

ASUS 华硕 RT-AX86U Pro 双频5700M 家用千兆Mesh无线路由器 黑色 单个装

ASUS 华硕 RT-AX86U Pro 双频5700M 家用千兆Mesh无线路由器 黑色 单个装

1167.55元起

ASUS 华硕 RT-AX57 双频3000M 家用级千兆Mesh无线路由器 Wi-Fi 6 黑色

ASUS 华硕 RT-AX57 双频3000M 家用级千兆Mesh无线路由器 Wi-Fi 6 黑色

274.55元起

ASUS 华硕 RT-AX57青春版 双频3000M 家用Mesh无线路由器 Wi-Fi 6 银色 单个装

ASUS 华硕 RT-AX57青春版 双频3000M 家用Mesh无线路由器 Wi-Fi 6 银色 单个装

279元起

ASUS 华硕 RT-AX57 双频3000M 家用千兆Mesh无线路由器 Wi-Fi 6 黑色 单个装

ASUS 华硕 RT-AX57 双频3000M 家用千兆Mesh无线路由器 Wi-Fi 6 黑色 单个装

267元起

ASUS 华硕 RT-AX88U Pro 双频6000M 家用千兆Mesh无线路由器 Wi-Fi 6 黑色 单个装

ASUS 华硕 RT-AX88U Pro 双频6000M 家用千兆Mesh无线路由器 Wi-Fi 6 黑色 单个装

1547.55元起

ASUS 华硕 ROG 八爪鱼7 三频13000M 家用万兆Mesh无线路由器 Wi-Fi 6 黑色 单个装

ASUS 华硕 ROG 八爪鱼7 三频13000M 家用万兆Mesh无线路由器 Wi-Fi 6 黑色 单个装

4999元起

ASUS 华硕 TUF GAMING电竞特工系列 小旋风 双频3000M 家用千兆Mesh无线路由器 单个装 黑色

ASUS 华硕 TUF GAMING电竞特工系列 小旋风 双频3000M 家用千兆Mesh无线路由器 单个装 黑色

420元起

ASUS 华硕 TUF小旋风PRO 双频4200M 家用千兆Mesh无线路由器 Wi-Fi 6 黑色 单个装

ASUS 华硕 TUF小旋风PRO 双频4200M 家用千兆Mesh无线路由器 Wi-Fi 6 黑色 单个装

550.05元起

ASUS 华硕 RT-AX86U 双频5700M 家用千兆无线路由器 WiFi 6

ASUS 华硕 RT-AX86U 双频5700M 家用千兆无线路由器 WiFi 6

599元起

ASUS 华硕 RT-AX82U 双频5400M 千兆Mesh无线家用路由器 WiFi 6 单个装 黑色

ASUS 华硕 RT-AX82U 双频5400M 千兆Mesh无线家用路由器 WiFi 6 单个装 黑色

349元起

ASUS 华硕 天选路由器电竞AP功能中央路由器WiFi6穿墙王游戏电竞加速双2.5G口疾速6000M

ASUS 华硕 天选路由器电竞AP功能中央路由器WiFi6穿墙王游戏电竞加速双2.5G口疾速6000M

暂无报价

ASUS 华硕 TUF GAMING AX5400 双频5400M 家用千兆无线路由器 Wi-Fi 6 黑色 单个装

ASUS 华硕 TUF GAMING AX5400 双频5400M 家用千兆无线路由器 Wi-Fi 6 黑色 单个装

599元起

华硕RT-AX57热血版/青春版 WiFi6全千兆电竞无线路由器 随心组路由 游戏加速居家办公 双频路由器 RT-AX57青春版

华硕RT-AX57热血版/青春版 WiFi6全千兆电竞无线路由器 随心组路由 游戏加速居家办公 双频路由器 RT-AX57青春版

293元起

ASUS 华硕 RT-AC86U 双频2900M 家用千兆Mesh无线路由器 Wi-Fi 5

ASUS 华硕 RT-AC86U 双频2900M 家用千兆Mesh无线路由器 Wi-Fi 5

823.68元起
115评论

  • 精彩
  • 最新
  • 我是二个ac68一个66b1组成的mesh,有时候无线连接能连上但不能上网,奇怪。

    校验提示文案

    提交
    这么说看不出是啥问题,要结合实际情况分析的呢

    校验提示文案

    提交
    最近我家的路由器也是隔几个礼拜上不了网,重新拨号后就好……ac56u……

    校验提示文案

    提交
    还有14条回复
    收起所有回复
  • 作者有木有测试过,ac68u内网可以跑满千兆,外网千兆宽带只能跑到650m左右,直连光猫就能跑满千兆!

    校验提示文案

    提交
    因为内网走的交换机。外网要经过nat,并且PPPoE开销大,68U开ctf性能也一般。所以跑不满千兆。

    校验提示文案

    提交
    另外不要小瞧现在运营商hgu的性能,都带hwnat很厉害的

    校验提示文案

    提交
    还有7条回复
    收起所有回复
  • [皱眉] 内网登录不上路由器跟外网没什么关系吧,估计是固件有点小毛病。

    校验提示文案

    提交
    我说的是内网可以登录但是外网上不了的情况重新拨号呢。内网都登录不上那就是路由器长时间运行出问题了,这种还没遇到过。

    校验提示文案

    提交
    收起所有回复
  • 请问你现在这个脚本用的怎样?之前我经常ping百度久了,就被百度拉黑名单了后面ping都是超时

    校验提示文案

    提交
    挺好的啊。用了一个多月了没问题。而且怎么拉黑名单呀,IP一直在变的呢 [无语]

    校验提示文案

    提交
    好的,非常感谢!

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 有个弊端,万一哪天百度挂了,哈哈

    校验提示文案

    提交
    那就换腾讯,一个个把巨头干倒 [抽烟]

    校验提示文案

    提交
    收起所有回复
  • 纯属瞎搞,字数补丁

    校验提示文案

    提交
    大佬教训的是 [大囧] [大囧] [大囧]

    校验提示文案

    提交
    收起所有回复
  • asus 一代mesh 糟心的狠…

    校验提示文案

    提交
    ac68u的aimesh 有2.0 了,听说好很多了

    校验提示文案

    提交
    听说过,不过没时间折腾了。双十一噜了AX6,现在68U+AX6(AP),小复式 5G全覆盖~电信500M最差的位置也能跑到300多,知足了。

    校验提示文案

    提交
    收起所有回复
  • 路由器断线重拨不是几十元的TPLINK都有的功能吗?

    校验提示文案

    提交
    断线重播肯定会,但是问题就在于有时候已经断线了但是路由器认为他自己没断。这个相当于一个拨号服务的守护者。

    校验提示文案

    提交
    梅林表示没有遇到过 [抽烟]

    校验提示文案

    提交
    还有2条回复
    收起所有回复
  • 这货还能带100台机? [皱眉]

    校验提示文案

    提交
    没说100个办公电脑呀,我这30多个手机,10来个台式机笔记本,还有虚拟机和docker占用,加起来差不多六七十个IP,没啥问题,当然大部分数据量很小。

    校验提示文案

    提交
    了解了,谢谢

    校验提示文案

    提交
    收起所有回复
  • 请教一下作者华硕的使用官方固件没有crontab怎么办?自己找个linux 的传过去吗?

    校验提示文案

    提交
    你看我脚本3,cru就是你要的功能

    校验提示文案

    提交
    收起所有回复
  • 还需要脚本?我的路由器几年都不关机,除非停电。

    校验提示文案

    提交
    我20几块钱的tplink路由器也可以几年不断电的 [抠鼻孔]

    校验提示文案

    提交
    那为什么要写脚本?

    校验提示文案

    提交
    还有3条回复
    收起所有回复
  • 你好,我用的也是广东电信。我看你提到重拨时间是47小时55分,我想问下你有遇到重拨时间一直提前吗?比如说第一次拨号是12点,而重拨是47小时55分,那么两天后重拨时间就变成了11点55分,再过两天又变成11点50分这样子。
    我设置了凌晨5点重启路由器,后来把自动重启关闭了。当时我以为重拨时间是48小时,每过两天凌晨5点又会自动重拨,也没有去留意路由器日志。直到有一天早上8点多的时候突然断网,上路由器看日志才发现似乎每次重拨都会延后5分钟,也就是48小时05分。当时已经有一段时间没有重启路由,从第一次凌晨5点拨号到我发现断网重拨足足推后了3个小时。
    所以我想了解下你有没有碰到类似的问题?

    校验提示文案

    提交
    这个重拨时间是不确定,我这是大部分是47小时55分,但是也偶尔会出现50多小时,60多小时才重拨的情况,所以你不如干脆就定时凌晨重拨

    校验提示文案

    提交
    收起所有回复
  • 请教一下,shh重播可以直接重播吗?还是一定要先断开再重播?
    爱快我看他们用ssh登录后用/sbin/ifup wan可以实现一键重播,不知道华硕的有没有类似的。
    因为我想实现的是用py脚本,远程创建一个ssh然后运行重启指令,这样快捷一点。
    再咨询一下华硕ssh这些指令哪边能详细查到?感谢感谢!!!

    校验提示文案

    提交
    不懂你的意思,什么叫直接重播?重播都是断开再连接的,还有直接间接的说法?ifup没有先down直接up有作用?

    校验提示文案

    提交
    谢谢,我照抄可以了,当时看代码是先杀掉pppd进程,所以以为最后一句就是重启的意思,所以才这样问的。再请教一下这些ssh的华硕指令哪边还能查到。

    校验提示文案

    提交
    收起所有回复
  • 卖了3个68U水货,买了3865U软路由,2个矿渣7621,还剩下钱了。

    校验提示文案

    提交
    该不会是新3

    校验提示文案

    提交
    竟斗云。。。。。。。。。

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 软路由拨号,68U纯粹作为AP用,稳得一批,上一次软路由开机200多天遇到停电,现在又无故障运行100多天了!

    校验提示文案

    提交
  • 以前经常出现你这种情况,是自带ddns插件的原因,重新拨号不能及时解析。换个全功能脚本就没问题了,稳定运行一年。

    校验提示文案

    提交
  • 我去年入的矿渣刷官方原版op,除了停电和欠费就没断过网 [皱眉]

    校验提示文案

    提交
    我旧路由也是刷了Op,用了一个礼拜了 挺稳的 比AC68好用。

    校验提示文案

    提交
    收起所有回复
  • 一看就是运维打工人 [喜极而泣]

    校验提示文案

    提交
  • shell?没折腾过路由。

    校验提示文案

    提交
  • 我们这里都是光猫拨号 好像很稳定的样子

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关好价推荐
查看更多好价

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
1.0K
扫一下,分享更方便,购买更轻松