本帖最后由 joyanhui 于 2024-3-19 18:16 编辑
各位友好,分享一种新的旁路路由自动切换的方案 实现免重启免重连 免爱快的快速启动切换方案
传统dhcp切换网关的方式相应速度慢,掉线时间长。爱快分流方案虽然可以无感切换但是需要一个x86设备运行不开源有过黑历史的爱快。 于是想到想到了一个新的方案,我姑且称之为 主路由自动切换ip接位网关方案 旁路由自动切换方案目前主要有两种
- 传统的旁网关形式,内外设备单独配置一个网关设备。在这个网关设备失效的后,通过自动脚本配合dhcp等方式实现切换,需要下游设备断开重连,或重启主路由相应时间和切换时间较长。这是最传统也是效果最糟的自动切换方案。
- 主路由用爱快然后根据ip域名等规则分流方案,也就是[ikuai-bypass分流] 方案。使用体验上要比上一种方式好非常多,不存在短时断网,堪称完美,但是需要x86做主路由并刷闭源的爱快。切换时间最少1分钟,但是切换期间不会导致断网。如果您用 [ikuai-bypass分流] 方案,也期待能给我点一个star
新方案使用主路由和旁路由 ip轮替的方式,原理:
旁路由用桥接或别名或虚拟网卡的方式配置两个ip 第一个ip我们暂且称之为工作ip,第二个ip姑且叫辅助ip。 主路由不断ping旁路由的第二个ip,如果ping不通,那么主路由把自己的ip修改为旁路有工作ip接替旁路由的工作。旁路路由正常再把自己改回去。这样就实现免重连切换。
新方案优点
原理简单维护也简单。切换速度快(3-10秒以内),不需要内网设备断网后重联,主路由不需要是x86设备,不需要闭源的爱快。
各方面体验远高于dhcp切换网关方案,缺点是不如ikuai-bypass分流的完全无缝切换,切换期间会有3-10秒断网。
切换和配置
为了便于理解和管理,我们干脆给两个设备规划4个ip,分别为: 主路由 默认IP(10.1.1.1) 主路由辅助ip(10.1.1.11 用于管理主路由的web界面) 旁路由 工作IP(10.1.1.2) 旁路由辅助ip(10.1.1.22 用于主路由检测旁路由状态)
主路由负责dhcp并是网内唯一的dhcp服务器,旁路由关闭dhcp。主路由dhcp指定下游设备的网关均为 旁路由 工作IP(10.1.1.2)。
下文以openwrt为例(文末附padavan实现方法),主路由arm硬路由和 旁路由x86虚拟机 内核均为5.15.148 版本 git-25.050.75038-257d60d 使用 openwrt.ai 的在线编译固件 感谢supes
双ip的实现
openwrt网络-接口面板,新建一个接口也桥接 br-lan 然后静态ip配置为另外一个ip即可。 /etc/config/network 中lan部分 排版半天出错了,回帖后看吧。
截图如下 主路由 单wan 双桥接lan 工作在硬路由 旁路由 无wan 双桥接lan 工作在虚拟机
openwrt 配置dhcp网关
主路由openwrt 配置dhcp服务分配给下游设备的网关为10.1.1.2 ,ssh登录到主路由运行 - uci add_list dhcp.lan.dhcp_option="3,10.1.1.2"
- uci commit dhcp
复制代码完成后重启dhcp重连下游设备,或干脆重启一下路由器。 dhcp_option的含义以及指定的下游设备通过dhcp分组分段或根据mac地址配置独立网关功能,本文不扩展
检查状态
此时 下游设备dhcp分配的网关应该是10.1.1.2 在旁路由正常的情况下,下游被分配到10.1.1.2网关的设备应该都可以正常低调上网。
此时和传统旁路方案完全一致。旁路由断开后,下游设备无法上网,需要通过dhcp断开重连或手动修改下游设备网关 才可以恢复网络。谈不上优雅,只能说凑合可用。 下面实现在旁路由下线后,主路由自动接替旁路由工作,并在旁路由上线后实现网络自愈。
openwrt 和 padavan的 自动切换接替旁路由 程序
因为论坛不支持md语法 排版困难 反复编辑好多次都错乱。
|