在家庭折腾软路由的小伙伴,几乎都经历过下面这个极其窒息的场景:

上班时间正忙着,突然收到家里的微信弹窗:“家里的 Wi-Fi 怎么又断了?电视看不了,扫地机器人也连不上,你搞的那堆破路由又炸了?!”
你只能在公司干着急,远程又连不上家里的局域网,只能指导家人去手动拔掉小主机的电源插头。

这就是玩单台软路由(AIO)最大的痛点——缺乏高可用(High Availability)备灾机制。

软路由虽然功能强大,但无论是 OpenWrt 插件内存泄露、系统内核更新重启,还是硬件小主机偶尔发热死机,都会导致整个家庭网络的物理中断。

如何做到:主软路由一旦死机,备用路由器在 1 秒钟内自动顶上,全家设备上网没有任何卡顿或感知?

本文用大白话带你搞懂 VRRP 高可用协议,手把手教你搭建一套双路由无缝故障转移系统!


一、一句话搞懂:什么是 VRRP 与虚拟网关?

在传统的单路由网络中,你家所有手机和电视的网关 IP 都死死地指向那台唯一的软路由(比如 192.168.1.1)。只要它死了,全网就瘫痪了。

而高可用方案引入了一个协议叫 VRRP(虚拟路由冗余协议),它的原理非常直观:

PLAINTEXT
                    ┌─────────────────────────┐
                    │  虚拟网关: 192.168.1.1   │ (全家设备都认这个 IP)
                    └────────────┬────────────┘
                                 │
                 ┌───────────────┴───────────────┐
                 │ (平时对外工作)                 │ (平时心跳监视)
        ┌────────▼────────┐             ┌────────▼────────┐
        │  主软路由 (Master)│             │  备路由 (Backup)│
        │  IP: 192.168.1.2 │             │  IP: 192.168.1.3│
        └─────────────────┘             └─────────────────┘
  1. 两台路由器分别拥有自己的物理 IP(主路由 192.168.1.2,备路由 192.168.1.3)。
  2. 它们共同对外维护一个虚拟网关 IP(比如 192.168.1.1)。全家所有的手机、电视、智能家居,网关都填写这个虚拟 IP。
  3. 平时主路由拿着这个虚拟 IP 响应全家设备,并不断给备路由发送“我还活着”的心跳包。
  4. 一旦主路由死机或挂掉,备路由连续 1 秒收不到心跳包,会瞬间接管 192.168.1.1 这个虚拟 IP!全家设备上网完全不受影响!

二、主备切换的两大实战部署模式

根据你手头的硬件条件,可以自由选择以下两种架构:

方案 A:双软路由模式(强强联合)

方案 B:软路由 + 普通硬路由模式(安全兜底,最推荐)


三、Keepalived 极简配置实战

在 Linux / iStoreOS / OpenWrt 系统上,我们通常使用 Keepalived 工具来实现 VRRP 协议。

1. 主路由器配置 (192.168.1.2)

在主路由的 /etc/keepalived/keepalived.conf 文件中写入:

TEXT
vrrp_instance VI_1 {
    state MASTER            # 声明为主路由
    interface br-lan        # 监听的局域网网卡名称
    virtual_router_id 51    # 主备路由必须一致
    priority 100            # 优先级,数字越大越优先
    advert_int 1            # 1 秒发送一次心跳包

    authentication {
        auth_type PASS
        auth_pass 12345678  # 主备通信密钥
    }

    virtual_ipaddress {
        192.168.1.1/24      # 对外提供的虚拟网关 IP
    }
}

2. 备路由器配置 (192.168.1.3)

在备路由的 /etc/keepalived/keepalived.conf 文件中写入:

TEXT
vrrp_instance VI_1 {
    state BACKUP            # 声明为备用路由
    interface br-lan
    virtual_router_id 51    # 与主路由保持一致
    priority 90             # 优先级低于主路由 (90 < 100)
    advert_int 1

    authentication {
        auth_type PASS
        auth_pass 12345678
    }

    virtual_ipaddress {
        192.168.1.1/24      # 抢占同一个虚拟网关 IP
    }
}

配置完成后,分别在两台路由器上启动 Keepalived 服务: systemctl start keepalived 并且设置为开机自启。


四、故障排查与常见报错速查表

在部署主备切换时,遇到问题请按下表对照自救:

现象 / 报错 大概率的原因 解决办法
局域网中出现 IP 冲突弹窗 主备路由器的 priority 优先级设成了一样,或者心跳包被防火墙拦截,导致两台路由器都在抢占 192.168.1.1。 1. 确认主路由优先级(如 100)高于备路由(如 90);
2. 在防火墙中允许 VRRP 协议流量(IP 协议号 112)。
主路由拔掉网线后,备路由没有接管 网卡接口名称写错(比如写成了 eth0,实际上是 br-lan)。 在终端运行 ip a 命令,确认你局域网 IP 绑定的真实网卡名称,并修改 interface 字段。
切换后能上网,但无法科学上网 备路由没有配置相应的代理分流插件,或者代理节点未启动。 确保备路由上也配置了可以正常工作的代理节点与 PassWall / OpenClash 插件。

五、怎么验证主备切换真的成功了?

按照以下三步验证你的无感容灾系统:

  1. 在电脑终端开启持续 ping 虚拟网关:ping 192.168.1.1 -t。
  2. 直接伸手拔掉主软路由的电源线或网线。
  3. 观察 ping 输出:通常只会在第 1-2 秒丢失一个包,随后立刻恢复响应。此时尝试用手机刷网页,完全顺畅无卡顿!

六、一句话总结

真正的极客家庭网络,稳定高于一切! 通过 Keepalived + VRRP 构建虚拟网关,只需一台闲置的旧设备做备用包工头,就能彻底告别“软路由一死、全家断网被吐槽”的噩梦!

关注 易邦科学上网,及时获取最近更新:

X : https://x.com/rozmiarek760575

版权声明

作者: 易邦

链接: https://blog.e8k.net/posts/soft-router-ha-failover-guide/

许可证: 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。