keepalived双机热备依赖vrrp协议(ip协议号112、组播地址224.0.0.18),需防火墙显式放行vrrp协议而非端口,配合源地址白名单、业务端口独立管控及服务精简,实现最小权限安全防护。

Keepalived 双机热备本身依赖 VRRP 协议通信,而 VRRP 默认使用组播(224.0.0.18)和 IP 协议号 112,不走 TCP/UDP 端口。因此,保障通信安全的关键不是“开放某个端口”,而是精准放行 VRRP 流量、限制非必要访问,并配合防火墙实现最小权限原则。
必须放行 VRRP 协议(核心动作)
VRRP 是三层协议,Linux 防火墙(firewalld 或 iptables)需显式允许协议号 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) - 切勿仅开放 UDP 112 端口——VRRP 不使用 UDP 端口号,该操作无效且误导
限制 Keepalived 节点间通信范围
避免 VRRP 报文被局域网内其他设备干扰或伪造,应限定源地址:
一款AI音频处理工具,主要用于MiniMax统一媒体生成技能,用于TokenPlan工作流。当用户要求生成音频、语音、TTS、旁白、图片、插图、姿势等媒体内容时使用,适合需要提升相关任务效率的用户。
- 在 firewalld 中添加源地址白名单:
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.201.131" protocol value="vrrp" accept'
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.201.129" protocol value="vrrp" accept' - 若用 iptables,可加匹配条件:
iptables -I INPUT -s 192.168.201.131 -p 112 -j ACCEPT
iptables -I INPUT -s 192.168.201.129 -p 112 -j ACCEPT - 拒绝其他来源的 VRRP 流量(默认 DROP 策略下可省略,但显式配置更清晰)
保护 VIP 对外服务端口,与热备解耦管控
虚拟 IP 提供的服务(如 Nginx 的 80/443)应独立设置访问控制,不与 Keepalived 自身通信混为一谈:
- 只放行业务所需端口,例如:
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https - 禁止直接访问 Keepalived 节点物理 IP 的管理端口(如 22、8080),除非确有运维需要;可通过 zone 隔离,如将内网管理网卡设为 trusted,对外网卡设为 public
- VIP 流量到达后由内核自动绑定到当前 MASTER 节点,防火墙规则对 VIP 生效,无需在两台机器上分别配置不同策略
禁用无关服务,降低攻击面
双机热备节点应保持精简,避免因其他服务漏洞影响高可用稳定性:
- 停用并禁用非必需服务:
systemctl disable --now rpcbind rpc-statd nfs-server - 确认 SELinux 处于 enforcing 模式时,已启用 keepalived 相关布尔值:
setsebool -P keepalived_read_etc 1 - 定期检查监听端口:
ss -tlnp | grep -E "(112|80|443)" —— 应只看到 nginx 和 keepalived(VRRP 不显示为端口)










