爱折腾的大伙都知道,ALLinONE 软路由一旦发生崩溃,便会造成全家断网(ALLinBOOM)。

解决这一问题的思路在于,把路由功能与扩展功能进行解耦处理,也就是采用“主路由 + 旁路由”这一架构。在常见的旁路由方案当中,要么需要客户端手动把网关指向旁路由(一旦旁路由故障,每个设备都要手动改回主路由),要么在旁路由上开启强制 DHCP 功能(旁路由宕机之后,DHCP 服务随之失效,新设备将无法获取 IP 地址)。这两种方式在自动化方面均有所欠缺,一旦遇到断网,全家人就要给你上压力了。

更为省心的做法是,引入 VRRP (虚拟路由冗余协议),让主路由与旁路由共同使用一个虚拟网关 IP 地址。在正常状态下,旁路由会作为 MASTER 角色来接管流量;一旦旁路由发生故障,主路由会在数秒内自动接替其工作,整个切换过程对客户端而言完全无感。

下面给出基于 VRRP 协议的具体配置方法。整个方案需要借助两台设备来完成:其中一台作为主路由,负责拨号、NAT 以及 DHCP 服务,其 VRRP 角色为 BACKUP ;另一台作为旁路由,负责处理特殊流量(例如去广告、科学上网等),其 VRRP 角色为 MASTER 。同时,还需要设置一个虚拟网关 IP ( VIP ),以此作为客户端统一的网关地址,并由 VRRP 协议动态地对其进行接管。

以下配置以具体的硬件设备为例(可以将其任意更换为手头其他支持 OpenWrt 系统的设备):
主路由:H3C NX30 Pro ( LAN 口 IP 地址为 10.0.0.1 ,默认网关指向运营商侧)
旁路由:斐讯 N1 ( IP 地址为 10.0.0.3 ,默认网关为 10.0.0.1 ,并关闭 DHCP 服务)
VIP 虚拟网关地址:10.0.0.254/24

配置步骤基础准备:两台设备均已刷入 OpenWrt 系统,并且主路由的 WAN 口能够正常上网。
对旁路由进行静态 IP 地址的设置:IP 地址为 10.0.0.3 ,网关为 10.0.0.1 ,同时关闭其 DHCP 服务。

安装 keepalived 软件包
opkg update && opkg install keepalived
编写配置文件
旁路由( MASTER )的配置文件路径为 /etc/keepalived/keepalived.conf ,其内容如下:
global_defs {
router_id N1_MASTER
}
vrrp_instance VI_1 {   state MASTER   interface br-lan   virtual_router_id 51   priority 150   advert_int 1   virtual_ipaddress { 10.0.0.254/24 }}
主路由( BACKUP )的配置文件路径同样为 /etc/keepalived/keepalived.conf ,其内容如下:
global_defs { router_id NX30Pro_BACKUP }vrrp_instance VI_1 {   state BACKUP   interface br-lan   virtual_router_id 51   priority 100   advert_int 1   virtual_ipaddress { 10.0.0.254/24 }}

解决 OpenWrt 系统中 UCI 配置覆盖的问题
在两台设备上分别创建 /etc/config/keepalived 文件,并写入以下内容:
config globals 'globals'
option alt_config_file '/etc/keepalived/keepalived.conf'
启动 keepalived 服务并设置开机自启动
/etc/init.d/keepalived
enable/etc/init.d/keepalived start

通过 DHCP 向客户端下发虚拟网关地址
在主路由的 LuCI 管理界面中,依次进入:网络 → 接口 → LAN → DHCP 服务器 → 高级设置 → DHCP-选项,然后填入 3,10.0.0.254 。

验证方案效果
正常状态下的验证:在旁路由上执行 ip addr show br-lan 命令,可以看到 10.0.0.254/24 地址存在,而主路由上则没有该 IP 地址。
客户端自动获取网关地址的验证:客户端能够自动获得网关地址 10.0.0.254 。
模拟旁路由故障的验证:执行 keepalived stop 命令停止旁路由的 keepalived 服务,3 秒之内主路由便会接管 VIP 地址。
恢复旁路由的验证:执行 keepalived start 命令重新启动旁路由的 keepalived 服务,VIP 地址会自动切换回旁路由。
重启测试的验证:将两台设备分别重启,重启之后 VIP 地址仍然位于旁路由上,客户端的网关地址也保持正确。

完成上述配置之后,一旦旁路由发生故障,系统会自动切换至主路由,用户几乎感觉不到断网的发生。这样一来,既能够放心地折腾各种插件功能,又不会影响到全家人的正常上网。虽然该配置过程相比手动修改网关的方式要稍微复杂一些,但是配置完成之后便可以实现一劳永逸的效果。

标签: none

添加新评论