恩山无线论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1242|回复: 2

[AC2100(RM2100)] Padavan(老毛子)脚本自动切换网关和 DNS 服务器

[复制链接]
发表于 2022-7-30 17:35 | 显示全部楼层 |阅读模式
本帖最后由 xuezou 于 2022-7-31 14:07 编辑

家中网络连接示意图(已省略接在主路由上的光猫):

基本情况
  • 联通宽带(光猫改桥接,主路由拨号)
  • 主路由红米AC2100(RM2100) 老毛子系统(padavan  3.4.3.9-099_20200619)IP:10.0.0.1
  • NAS 蜗牛星际A款单口  群晖 7.0.1-42218   IP:10.0.0.2
  • 旁路由 群晖自带虚拟机 分配1C1G   iStoreOS (OpenWrt 21.02.1 2022042919) IP:10.0.0.21


旁路由服务
  • P***W***    科学网络
  • AdGuard Home     广告过滤
  • SmartDNS     配合AD


需求
1、NAS每晚 11:30 自动关机,此时旁路由也会关机,因为主路由的网关和DNS都是旁路由地址,旁路由关机后,其他家人使用 WiFi 无法上网。
2、平常旁路由出现突发状况掉线,WiFi 也无法上网。

解决
在主路由中创建自定义脚本,通过 Crontab 监测旁路由是否在线。
场景1:晚上 NAS 关机,旁路由关机后,主路由监测到旁路由不存在,随即将主路由的网关和 DNS 切换到自身,早上 NAS 开机后,主路由监测到旁路由上线,此时将主路由网关和 DNS 切换为旁路由地址。
场景2:主路由中实时监测旁路由是否在线,不在线时立即将主路由的网关和 DNS 切换到主路由本身,旁路由恢复在线时,随即切换回去。

Padavan自定义脚本
  1. #!/bin/bash

  2. default_gateway='10.0.0.1'  #主路由 IP
  3. auxiliary_gateway='10.0.0.21'  #旁路由 IP (需设置的主路由网关 地址)
  4. up_gateway='10.0.0.21'   #旁路由 IP (需设置的主路由 DNS 地址)

  5. check_ip_available(){  #使用 ping 命令检测旁路由是否在线
  6.     ping -c 3 $1 | grep packets | awk '{print $4}'
  7. }

  8. change_gateway_dns(){  #网关 DNS 切换
  9.    nvram set dhcp_gateway_x=$1  #设置网关
  10.    nvram set dhcp_dns1_x=$1
  11.    nvram set dhcp_dns2_x=""  #设置 DNS
  12.    nvram commit  #提交修改
  13.    rc rc_service restart_net_and_phy  #重启主路由 网络服务
  14.    restart_dns    #重启主路由 DNS
  15.    restart_dhcpd  #重启主路由 DHCP
  16.    sleep 5
  17.    #reboot  #自动修改后存在网络故障,可能需要直接重启路由器,可取消注释,等待时间较长
  18. }

  19. # If the gateway of the up close, the network is completely unusable

  20. res=`check_ip_available $up_gateway`  #检测旁路由是否存在
  21. current_gateway=`nvram get dhcp_gateway_x`  #获取主路由当前网关

  22. if [ $(($res)) -eq 0 ]; #检测结果等于 0,即旁路由不存在,应设置网关和 DNS 为主路由地址
  23. then
  24.     if [ "$current_gateway" != "$default_gateway" ]; then  #如果当前网关地址不是主路由地址
  25.         echo "up_gateway to default"
  26.         `change_gateway_dns $default_gateway`  #将网关和DNS切换为主路由地址
  27.     fi
  28.     echo "use default gateway , nothing changed"
  29.     exit 1
  30. fi
  31. if [ $(($res)) -ne 0 ]; #检测结果不等于 0,即旁路由存在,应设置网关和 DNS 为旁路由地址
  32. then
  33.     if [ "$current_gateway" != "$up_gateway" ]; then #如果当前网关地址不是主路由地址
  34.         echo "up_gateway to  auxiliary_gateway"
  35.         `change_gateway_dns $up_gateway` #将网关和DNS切换为旁路由地址
  36.     fi
  37.     echo "use auxiliary_gateway , nothing changed"
  38.     exit 1
  39. fi
复制代码


最终步骤
  • 将脚本置于 /etc/storage/
  • 设置脚本运行权限:chmod +x  /etc/storage/change_gatway.sh
  • 保存脚本,防止重启丢失:/sbin/mtd_storage.sh save
  • 自动定时运行脚本(每一分钟检测一次):
    crontab -e  加入 /1 * * * * /etc/storage/change_gatway.sh

现存问题
   自动切换以后,上网设备需要重新连接 WiFi ,网络才可用,希望大家多多指教
   觉得脚本有用的话,请购买附件给与我鼓励,谢谢。




change_gatway.zip

990 Bytes, 下载次数: 1

售价: 1 nb恩山币  [记录]

我的恩山、我的无线 The best wifi forum is right here.
发表于 2022-7-30 22:13 | 显示全部楼层
nas为啥要每天关机

点评

首先这个蜗牛星际在放满硬盘后的散热有点不太好(改造了散热,比较吵),其次,晚上用不到相关服务和内容。并且晚上关机是场景之一。  详情 回复 发表于 2022-7-31 14:06
我的恩山、我的无线 The best wifi forum is right here.
 楼主| 发表于 2022-7-31 14:06 | 显示全部楼层
824626242 发表于 2022-7-30 22:13
nas为啥要每天关机

首先这个蜗牛星际在放满硬盘后的散热有点不太好(改造了散热,比较吵),其次,晚上用不到相关服务和内容。并且晚上关机是场景之一。
我的恩山、我的无线 The best wifi forum is right here.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )|网站地图

GMT+8, 2022-8-11 19:22

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

| 江苏省互联网有害信息举报中心 举报信箱:js12377@jschina.com.cn 举报电话:025-88802724 | 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797
快速回复 返回顶部 返回列表