作为旁路由的笔记本电脑,偶尔会拿来临时办公用,这时怎么让主路由自动识别旁路由下线了呢?

解决思路

当然,第一个想到的就是通过检测IP地址是否能ping通,这是最简单直接的方法。

检测规则如下:

  1. ping命令检测旁路由IP是否存在?
  2. 若返回失败,说明旁路由下线!此时检测 默认网关、DNS配置 是否需要修改?
  3. 若检测网关IP旁路由IP,说明是旁路由刚下线,需要修改网关、DNS配置为旁落有IP,重启网卡生效新配置。
  4. 若检测网关IP主路由IP,说明是旁路由很久前就下线了,无需任何操作。
  5. 若返回成功,旁路由还在线!此时还要检测 默认网关、DNS配置 是否需要修改?
  6. 若检测网关IP主路由IP,说明是旁路由刚上线,需要修改网关、DNS配置为旁落有IP,重启网卡生效新配置。
  7. 若检测网关IP旁路由IP,说明是旁路由正常运行,无需任何操作。

这样,就可以通过脚本实现快速监测旁路由的上线、下线情况,省去了人工配置过程。

实现脚本

上面说了检测规则,那是理论,实际实现情况如何呢?将理论应用到实践上吧。

1.ping检测

当然很好实现,ping命令系统必备,为了让ping命令快速相应,这里ping命令格式如下:

ping -c 2 -W 1-q <旁路由ip>

ping 每次最长等待1秒,一共检测2次。

2.如何脚本实现修改默认网关和DNS配置?

经过分析华硕固件的 内部网络》DHCP配置这一个页面,了解了是通过修改两个变量并重启网卡服务实现,具体的脚本命令如下:

# 修改网关和DNS服务器IP地址
change_gateway() {
    gateway_ip="$1"
    nvram set dhcp_dns1_x=${gateway_ip}
    nvram set dhcp_gateway_x=${gateway_ip}
    nvram commit
    echo "重启网卡!!!"
    service restart_net_and_phy
}

说明:

  • dhcp_gateway_x : DHCP默认网关变量,默认情况下就是主路由IP。
  • dhcp_dns1_x : 自定义DNS服务器1,默认是没有设置的,系统自动设置为主路由地址。
  • service restart_net_and_phy : 这个服务是在web页面看到的(重启一堆服务,比重启路由器速度快多了),想了解更详细,你可以在Merlin的github代码里看到都干了些什么操作.

全部代码内容

两个关键点都有解决方法了,接下来就可以来写脚本啦!

上面讲解了原理和详细的实现方法,下面的脚本命令将这些方法串联起来,让他可以以函数方式调用。

此处内容需要评论回复后(审核通过)方可阅读

最后

本文给您分享了如何实现自动监测旁路由上线、下线过程识别方法, 其实结合vClash插件,我增加了一个操作----当旁路由下线后自动将旁路由的vClash服务启动完成科学上网工作。

为啥平时不一直开着这个vClash服务呢? 这也是为啥折腾出来旁路由的原因,主路由器性能不够而已。
有了旁路由,就相当于有了个X86_64结构的Linux系统服务器,向往里面安装什么软件命令就很简单了。