核心是精准放行IP协议号112的VRRP报文并限制源地址白名单,而非开放端口;需用firewalld或iptables显式允许protocol=vrrp,配置心跳专用网卡及认证,禁用非必要服务。

保障 Keepalived 双机热备的心跳网络安全,核心是精准控制 VRRP 协议通信本身——它不走端口,而是基于 IP 协议号 112 和组播地址 224.0.0.18。防火墙若按常规“开 UDP 端口”思路处理,会完全失效。
必须显式放行 VRRP 协议(不是端口)
VRRP 是网络层协议,Linux 防火墙需识别并允许协议号 112:
- firewalld(推荐):
firewall-cmd --permanent --add-rich-rule='rule protocol value="vrrp" accept'
执行firewall-cmd --reload生效 - iptables:
iptables -I INPUT -p 112 -j ACCEPT
保存规则:iptables-save > /etc/sysconfig/iptables - 切勿执行
firewall-cmd --add-port=112/udp或类似操作——VRRP 不使用 UDP 端口号,该配置无意义且掩盖真实问题
限制心跳源地址,防止伪造与干扰
默认允许任意来源的 VRRP 报文存在风险。应只接受已知节点的组播报文:
- firewalld 白名单示例(假设主备 IP 为 192.168.201.129 和 192.168.201.131):
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.201.129" protocol value="vrrp" accept'firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.201.131" protocol value="vrrp" accept' - iptables 对应写法:
iptables -I INPUT -s 192.168.201.129 -p 112 -j ACCEPTiptables -I INPUT -s 192.168.201.131 -p 112 -j ACCEPT - 在 DROP 默认策略下,未匹配白名单的 VRRP 流量自动被拒,无需额外 reject 规则
隔离心跳网络与业务网络
物理或逻辑层面分离可大幅降低攻击面:
- 为 Keepalived 配置专用网卡(如 ens224),仅用于节点间心跳,不承载业务流量
- 心跳网段(如 192.168.201.0/24)不与对外服务网段重叠,避免路由混淆和跨网段组播泄露
- 若使用同一张网卡,可通过 firewall-cmd 的 zone 机制区分:将心跳接口绑定到 trusted zone,业务接口绑定到 public zone
启用 VRRP 认证并精简服务
基础防护之外,叠加轻量级加固手段:
- Keepalived 配置中务必启用认证:
authentication { auth_type PASS; auth_pass your_strong_password; }
密码长度建议 ≥12 位,避免弱口令 - 关闭非必要服务:禁用 ssh root 登录、停用 telnet/rlogin、卸载未使用的网络服务包(如 vsftpd、rpcbind)
- 系统时间同步:所有节点启用 chronyd 或 ntpd,确保 VRRP 超时判断准确,避免误切换


















