恩山无线论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 521|回复: 6

OpenWRT路由实现与ROS主路由之间的可靠性方案

[复制链接]
发表于 2020-7-29 02:56 | 显示全部楼层 |阅读模式
拓扑描述:

主路由是Mikrotik RouteOS路由器,不做复杂操作,高稳定性实现上网需求,即使一两年也不需要重启,IP地址为192.168.88.1,同时做DHCP服务器。

OpenWRT是单臂旁挂路由(单网口),实现去广告等高级操作,IP地址为192.168.88.2。我实际用的是虚拟机X86方案,物理软路由原理一样。不让OpenWRT做主路由是考虑稳定性等各方面原因,如果OpenWRT已经是主路由了,那么就不涉及我描述的问题,可以忽略本文。 因为贴图提示发帖超过系统限制,所以把截图都删掉了,只好使用命令行来描述了


问题现象:

主路由DHCP服务器,在通过DHCP分配IP地址的时候,指定网关为软路由192.168.88.2。
/ip dhcp-server network
add address=192.168.88.0/24 comment=defconf dns-server=192.168.88.8,192.168.88.1 gateway=192.168.88.8


当OpenWRT故障时,下面各种终端的网关仍然指向软路由192.168.88.2,而网关192.168.88.2实际不可达而无法上网。DHCP地址一旦分配完毕,DHCP服务器无法在租期内撤销已分配给终端的IP地址(DHCP协议不支持撤销动作),所以除非下面的各终端手动重新申请或因DHCP租期到期等原因,重新发起DHCP请求,申请了新的IP地址,并且把网关指向了192.168.88.1才能上网,否则持续无法联网。

方案:双路由之间运行VRRP协议

ROS与OpenWRT起VRRP协议,通过DHCP指定下一跳为虚拟网关192.168.88.8实现可靠性备份。 OpenWRT VRRP优先级高于ROS的优先级100,所以OpenWRT的虚拟网关192.168.88.8活跃,能正常转发流量,可以去广告等高级操作;当OpenWRT故障时,ROS自动升为主,虚拟网关192.168.88.8生效可以转发路由,能正常上网,但是没有高级特性了。

ROS VRRP协议配置:
ROS上配置比较简单,新建一个VRRP接口,配置好参数,然后给这个VRRP接口配置虚拟网关IP地址192.168.88.8即可。Interface是指能发现OpenWRT的接口;VRID一定要和OpenWRT保持一致,我们设置为51;Priority是决定主备的优先级,这里采用默认的一百作为备份;Interval是VRRP报文检测间隔,默认1.00s即可。注意勾选抢占模式Preemption Mode,如果不勾选这个选项,即使OpenWRT挂了,ROS也不会升级为主。认证密码建议不用填写;版本号Version是2。
ROS上给这个VRRP配置IP地址,虚拟网关192.168.88.8。如果此时ROS是主VRRP,则地址正常;如果是备VRRP,则地址是红色的。


OpenWRT VRRP协议配置:
OpenWRT上需要安装keepalived,
opkg update & opkg install keepalived
因为没有界面,所以需要使用命令行修改配置文件[size=14.6667px] [size=14.6667px]/etc/keepalived/keepalived.conf
root@OpenWrt:~# cat  /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   router_id LVS_DEVEL
}

vrrp_instance VI_1 {
  interface br-lan #指定连接ROS的接口,默认为LAN接口的桥接
  state BACKUP #默认状态是BACKUP,也可以指定为MASTER
  virtual_router_id 51 #和ROS保持一致即可
[size=14.6667px]  priority 110 [size=14.6667px]# 本机优先级为110,主路由,ROS优先级为100
  advert_int 1

  virtual_ipaddress {
    192.168.88.8 [size=14.6667px] [size=14.6667px]# 虚拟网关地址,和ROS保持一致
  }

}
root@OpenWrt:~#

修改完配置文件之后[size=14.6667px] [size=14.6667px]/usr/sbin/keepalived -n -f /etc/keepalived/keepalived.conf & 即可,理论上修改了配置文件就可以默认自动启动此服务了,也可以使用[size=14.6667px] [size=14.6667px]service keepalived enable来增加开机自动启。
[size=14.6667px]root@OpenWrt:~# ps -ef | grep keepalived
26128 root      5052 S    /usr/sbin/keepalived -n -f /etc/keepalived/keepalived.conf
26130 root      5060 S    /usr/sbin/keepalived -n -f /etc/keepalived/keepalived.conf
31895 root      1076 R    grep keepalived
root@OpenWrt:~# service keepalived status
running
root@OpenWrt:~# service keepalived enable

root@OpenWrt:~#


之后如果ROS上VRRP的状态标记是B(表示Backup),且其他主机ping虚拟网关192.168.88.8可以通,则设置完成。
中间可能遇到的问题:
1. keepalived在OpenWRT有两个版本,我使用的是scolate编译的2020/7/18懒人版,5.4.50内核,最新的Keepalived v2.0.20 (04/21,2020), 也有一个老的Keepalived v1.4.5版本,二者对于库的依赖关系不同。安装的时候会折腾出一些libip4tc.so.0和libip6tc.so.0等依赖性之类的问题,这个挺折腾的,如果对linux不熟悉,建议使用默认的版本。我之前一个版本折腾了好长时间,因为需要的库是libip4tc.so.0,已经安装了更新版本的libip4tc.so.2,所以尝试通过软链接解决这个问题。
root@OpenWrt:~# cd /usr/lib

root@OpenWrt:/usr/lib# ln -s libip4tc.so.2 libip4tc.so.0


//增加一个软连接,指向当前已经安装的库即可

root@OpenWrt:/usr/lib# ll /usr/lib/libip4tc*

lrwxrwxrwx    1 root     root            13 Jul 18 15:48 /usr/lib/libip4tc.so.0 -> libip4tc.so.2*



我使用的清华大学最新版本镜像,默认下载的就是最新版Keepalived v2.0.20。

src/gz openwrt_core https://mirrors.tuna.tsinghua.ed ... ets/x86/64/packages
src/gz openwrt_base https://mirrors.tuna.tsinghua.ed ... ackages/x86_64/base
src/gz openwrt_freifunk https://mirrors.tuna.tsinghua.ed ... ges/x86_64/freifunk
src/gz openwrt_luci https://mirrors.tuna.tsinghua.ed ... ackages/x86_64/luci
src/gz openwrt_packages https://mirrors.tuna.tsinghua.ed ... ges/x86_64/packages
src/gz openwrt_routing https://mirrors.tuna.tsinghua.ed ... ages/x86_64/routing
src/gz openwrt_telephony https://mirrors.tuna.tsinghua.ed ... es/x86_64/telephony









我的恩山、我的无线 The best wifi forum is right here.
发表于 2020-7-29 03:20 | 显示全部楼层
可以,你不说我居然都不知道openwrt可以用vrrp    我家双光猫 ,想做双wan多拨叠加  同一运营商   用openwrt划分vlan可以实现双wan多拨叠加网速  但是如果断电或者意外掉线后,不会自动拨号,需要人为操作。没用过ROS 不知道ROS可不可以代替OPENWRT  

点评

ROS就可以使用VRRP多拨,而且可以短线自动重播。 我之前页用ROS多拨,后来因为家里升级到500M,多拨没啥必要了,基本够用,而且还有个多链路DNS解析的问题,就没再折腾了  详情 回复 发表于 2020-7-29 18:54
来自安卓客户端来自安卓客户端
我的恩山、我的无线 The best wifi forum is right here.
发表于 2020-7-29 06:01 | 显示全部楼层
一脸懵逼
来自安卓客户端来自安卓客户端
我的恩山、我的无线 The best wifi forum is right here.
发表于 2020-7-29 08:14 | 显示全部楼层
看不懂啊,好气人
我的恩山、我的无线 The best wifi forum is right here.
发表于 2020-7-29 09:23 | 显示全部楼层
我以为这个只有那些专业的交换机路由器才有呢,没想到opendrt也可以实现
我的恩山、我的无线 The best wifi forum is right here.
 楼主| 发表于 2020-7-29 18:54 | 显示全部楼层
太逗了啊 发表于 2020-7-29 03:20
可以,你不说我居然都不知道openwrt可以用vrrp    我家双光猫 ,想做双wan多拨叠加  同一运营商   用openwr ...

ROS就可以使用VRRP多拨,而且可以短线自动重播。
我之前页用ROS多拨,后来因为家里升级到500M,多拨没啥必要了,基本够用,而且还有个多链路DNS解析的问题,就没再折腾了
我的恩山、我的无线 The best wifi forum is right here.
发表于 2020-7-31 12:36 | 显示全部楼层
ImRuYi 发表于 2020-7-29 18:54
ROS就可以使用VRRP多拨,而且可以短线自动重播。
我之前页用ROS多拨,后来因为家里升级到500M,多拨没啥 ...

可以加个联系方式吗
来自安卓客户端来自安卓客户端
我的恩山、我的无线 The best wifi forum is right here.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2020-9-22 21:08

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表