当前位置:   article > 正文

主旁路由网关自动切换|主备网关_主路由网关指向旁路由

主路由网关指向旁路由

上一篇写到在dnsmasq里面增加自动两个网关地址,自动进行主备切换并未生效, 所以做了一版本的优化

我这边的设备是一台刷了梅林固件的华硕路由(192.168.50.1)和一个跑在群晖VMM上面的openwrt旁路由(192.168.50.99)

原理

华硕路由(192.168.50.1)定时探活openwrt(192.168.50.99)是否在线.并作出后面的网关/DNS切换

shell源码

  1. #!/bin/sh
  2. bypass=192.168.50.99
  3. default_ip=192.168.50.1
  4. network()
  5. {
  6. #这里比较取巧的是通过判断路由器的页面能否打开判断旁路由在不在线
  7. local timeout=2
  8. #call bypass server
  9. local ret_code=`curl -I -s -m ${timeout} ${bypass} -w %{http_code} | tail -n1`
  10. if [ "x$ret_code" = "x000" ]; then
  11. return 1
  12. else
  13. return 0
  14. fi
  15. }
  16. changeGateway()
  17. {
  18. #confirm whether default now
  19. local resp=`grep $1 /jffs/configs/dnsmasq.d/openwrt.conf|wc -l`
  20. if [ $resp -gt 0 ];then
  21. /usr/bin/logger "[bypass detect] gateway don't need to change"
  22. return 0
  23. else
  24. #need change gateway
  25. /usr/bin/logger "[bypass detect] change gateway from $2 to $1"
  26. sed -i "s/$2/$1/g" /jffs/configs/dnsmasq.d/openwrt.conf
  27. service restart_dnsmasq
  28. /usr/bin/logger "[bypass detect] change gateway to $1 success"
  29. return 0
  30. fi
  31. }
  32. network
  33. if [ $? -eq 0 ];then
  34. changeGateway $bypass $default_ip
  35. else
  36. changeGateway $default_ip $bypass
  37. fi

效果

能够达到在旁路由下线后,在探活间隔(1分钟)和DHCP租约时长(5分钟)内,客户端切换网关和DNS

 

后记

  • 参考别人的方案中还发现有通过VIP/Keepalive等方案能够更好的做切换.但我这边不准备实现了原因是:
    1. 主路由不希望增加太多复杂功能影响稳定性
    2. 固件中还没有这些软件
  • 基于目前的软件和硬件下,其实还能增加旁路由在有计划停止服务的时候通过ssh执行远程命令的方式去更新网关/DNS配置. 但由于客户端更新网关/DNS只依赖DHCP租约过期,减少旁路由探活的时间并不会大幅改善旁路由掉线时客户端的体验.
  • 虽然我这边是DHCP服务器静态分配IP,但较短的DHCP租约是否会带来其他的问题,还需要实测确认
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/675605
推荐阅读
相关标签
  

闽ICP备14008679号