【RouterOS(ROS)】在 ROS、OpenWrt 上 设置 VRRP
本文基于 ROS 7.18.2、ImmortalWrt 24.10.1、keepalived 2.3.1-r1 编写
简单的记录一下 RouterOS 和 OpenWrt 上的 VRRP 设置
RouterOS 设置
VRRP 接口设置
左侧 Interfaces → VRRP,新建一个接口
- interface: bridge1 # 选择桥接接口名称,或网口名称
- VRID: 51 # 填写一个数字,一会需要和 OpenWrt 上的保持一致,这里填写了 51
- Priority: 100 # 权重,这里使用了默认
其余设置保持默认即可:
- Authentication: 认证方式
- Password: 密码
- Preenption Mode:是否允许从低优先级设备中接管虚拟 IP
- version: 如果这里使用了默认的版本3,在 OpenWrt 中需要保持一致
VRRP 地址设置
左侧 IP → Addresses,新建一个 IP 地址(下图 IP 显示红色是因为当前虚拟 IP 被 OpenWrt 接管)
- Address:192.168.1.2/24 # 填入你想要使用的 IP
- Network:192.168.1.0 # Address 填入掩码时会自动计算,不用管
- Interface: vvrp1 # 选择刚刚新建的 VRRP 接口,因为刚刚没有修改,默认名称为 vvrp1
防火墙设置
如果虚拟 IP 可以 ping 通没有网络(如 nslookup 192.168.1.2 时无法响应、设置为网关时无法上网)
检查防火墙中是否设置了拒绝流量,如这里的 defconf: drop all not from LAN
,
如果存在类似的规则,在其上方新增一条 input 规则,允许 vvrp1 接口的流量通过
OpenWrt 设置
安装 keepalived
- 命令行
opkg update
或者在软件包中更新列表后,安装 keepalived,这里不推荐安装 luci-app-keepalived,其实用配置文件更方便( 最主要的是查找教程方便 ) - 大部分的 OpenWrt 不会专门为了 VRRP 功能修改内核参数,使用前需要修改
/etc/sysctl.conf
文件,添加如下设置并重启,否则无法绑定虚拟 IP
1 | net.ipv4.conf.all.arp_announce = 2 |
- 重启后修改
/etc/config/keepalived
文件为以下内容,作用为忽略/etc/config/keepalived
文件内容,使用 keepalived.conf,因为使用标准的 .conf 文件更方便查找教程:
1 | config globals 'globals' |
- 修改
/etc/keepalived/keepalived.conf
文件,这是一份最简化并可用的配置内容
1 | ! Configuration File for keepalived |
- 在系统 → 启动项 中重启 keepalived,或者使用命令
/etc/init.d/keepalived restart
现在可以观察 VRRP 的运行情况了,停止 keepalived 进程或重启 OpenWrt,观察虚拟 IP 是否成功飘动,如果未成功运行,尝试 logread | grep -i keepalived
查看日志输出