Keepalived 不直接防御 ARP 欺骗,但通过配置 VRRP 行为、内核参数(arp_ignore/arp_announce)、VIP 绑定 lo 接口、VRRP 认证、接口绑定及防火墙策略,可有效防范 VIP 劫持与流量错发。

Keepalived 本身不直接防御 ARP 欺骗,但在高可用(HA)架构中,通过合理配置 VRRP 行为、内核参数和网络策略,可显著降低因 ARP 欺骗导致的 VIP(虚拟 IP)劫持、流量错发或脑裂等风险。
禁用非主节点响应 VIP 的 ARP 请求
默认情况下,备节点(BACKUP)内核仍会响应针对 VIP 的 ARP 请求,攻击者可伪造 ARP 响应诱导客户端将流量发往错误节点。需确保只有主节点(MASTER)对外宣告 VIP 的 ARP 信息:
- 在 Keepalived 配置的 vrrp_instance 块中添加:
nopreempt(如需严格主备) + preempt_delay 30(防抖) - 关键:设置 advert_int 为较小值(如 1),加快主节点抢占和状态同步
- 在所有节点执行:
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
这使内核仅对本机真实 IP 回复 ARP,且 ARP 广播使用最佳本地地址源
绑定 VIP 到 loopback 接口并禁用其 ARP 应答
将 VIP 配置在 lo(loopback)而非物理网卡上,并关闭该地址的 ARP 响应能力,是防止 ARP 欺骗最有效的实践之一:
- Keepalived 配置中指定:
virtual_ipaddress {
192.168.1.100/32 dev lo label lo:0
} - 同时在系统级禁用 lo 上该 VIP 的 ARP:
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce - 这样 VIP 不会出现在物理网卡的 ARP 表中,外部无法直接向其发送 ARP 请求,彻底规避欺骗前提
启用 VRRP 报文认证与接口绑定
VRRP 协议本身无加密,但支持简单认证,可防止未授权设备冒充 VRRP 路由器参与选举:
- 在 vrrp_instance 中强制配置:
authentication {
auth_type PASS
auth_pass MySecurePass123
} - 明确指定监听接口:
interface eth0(避免绑定到 all 或模糊接口) - 配合防火墙限制 VRRP 组播地址(224.0.0.18)仅允许 HA 节点间通信,例如:
iptables -A INPUT -d 224.0.0.18 -i eth0 -s 192.168.1.10 -j ACCEPT
iptables -A INPUT -d 224.0.0.18 -j DROP
结合静态 ARP 与交换机端口安全(可选加固)
在可控局域网环境中,可进一步收紧 ARP 行为:
- 在客户端或网关上配置静态 ARP 条目:
arp -s 192.168.1.100 00:11:22:33:44:55(绑定 VIP 到主节点 MAC) - 在接入交换机启用:
– 端口安全(Port Security)限制 MAC 学习数量
– DHCP Snooping + Dynamic ARP Inspection(DAI),验证 ARP 报文合法性 - 注意:Keepalived 主备切换时 MAC 不变(VRRP 使用虚拟 MAC:00:00:5e:00:01:{VRID}),因此静态 ARP 可长期有效,无需随切换更新

















