在家庭折腾软路由的小伙伴,几乎都经历过下面这个极其窒息的场景:
上班时间正忙着,突然收到家里的微信弹窗:“家里的 Wi-Fi 怎么又断了?电视看不了,扫地机器人也连不上,你搞的那堆破路由又炸了?!”
你只能在公司干着急,远程又连不上家里的局域网,只能指导家人去手动拔掉小主机的电源插头。
这就是玩单台软路由(AIO)最大的痛点——缺乏高可用(High Availability)备灾机制。
软路由虽然功能强大,但无论是 OpenWrt 插件内存泄露、系统内核更新重启,还是硬件小主机偶尔发热死机,都会导致整个家庭网络的物理中断。
如何做到:主软路由一旦死机,备用路由器在 1 秒钟内自动顶上,全家设备上网没有任何卡顿或感知?
本文用大白话带你搞懂 VRRP 高可用协议,手把手教你搭建一套双路由无缝故障转移系统!
一、一句话搞懂:什么是 VRRP 与虚拟网关?
在传统的单路由网络中,你家所有手机和电视的网关 IP 都死死地指向那台唯一的软路由(比如 192.168.1.1)。只要它死了,全网就瘫痪了。
而高可用方案引入了一个协议叫 VRRP(虚拟路由冗余协议),它的原理非常直观:
┌─────────────────────────┐
│ 虚拟网关: 192.168.1.1 │ (全家设备都认这个 IP)
└────────────┬────────────┘
│
┌───────────────┴───────────────┐
│ (平时对外工作) │ (平时心跳监视)
┌────────▼────────┐ ┌────────▼────────┐
│ 主软路由 (Master)│ │ 备路由 (Backup)│
│ IP: 192.168.1.2 │ │ IP: 192.168.1.3│
└─────────────────┘ └─────────────────┘
- 两台路由器分别拥有自己的物理 IP(主路由
192.168.1.2,备路由192.168.1.3)。 - 它们共同对外维护一个虚拟网关 IP(比如
192.168.1.1)。全家所有的手机、电视、智能家居,网关都填写这个虚拟 IP。 - 平时主路由拿着这个虚拟 IP 响应全家设备,并不断给备路由发送“我还活着”的心跳包。
- 一旦主路由死机或挂掉,备路由连续 1 秒收不到心跳包,会瞬间接管
192.168.1.1这个虚拟 IP!全家设备上网完全不受影响!
二、主备切换的两大实战部署模式
根据你手头的硬件条件,可以自由选择以下两种架构:
方案 A:双软路由模式(强强联合)
- 硬件配置:一台高性能 N100 小主机(主路由,带科学上网插件)+ 一台便宜的闲置 N2840 / 树莓派(备路由,带基础代理)。
- 体验:主路由死机后,备路由接管,全家依然能保持科学上网。
方案 B:软路由 + 普通硬路由模式(安全兜底,最推荐)
- 硬件配置:一台软路由(主路由,处理复杂分流)+ 家里现有的普通硬路由(备路由,仅提供基础直连上网)。
- 体验:平时享受软路由的强大代理功能;一旦软路由升级或崩溃,硬路由立刻接管,保障全家至少能正常打开国内网页、看电视,绝对不会“全家断网”!
三、Keepalived 极简配置实战
在 Linux / iStoreOS / OpenWrt 系统上,我们通常使用 Keepalived 工具来实现 VRRP 协议。
1. 主路由器配置 (192.168.1.2)
在主路由的 /etc/keepalived/keepalived.conf 文件中写入:
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 文件中写入:
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 插件。 |
五、怎么验证主备切换真的成功了?
按照以下三步验证你的无感容灾系统:
- 在电脑终端开启持续 ping 虚拟网关:
ping 192.168.1.1 -t。 - 直接伸手拔掉主软路由的电源线或网线。
- 观察 ping 输出:通常只会在第 1-2 秒丢失一个包,随后立刻恢复响应。此时尝试用手机刷网页,完全顺畅无卡顿!
六、一句话总结
真正的极客家庭网络,稳定高于一切! 通过 Keepalived + VRRP 构建虚拟网关,只需一台闲置的旧设备做备用包工头,就能彻底告别“软路由一死、全家断网被吐槽”的噩梦!