ipvsadm vip 无 ARP 响应的 keepalived vrrp 配置配合

发布时间 - 2026-01-28 00:00:00    点击率:
VIP不响应ARP请求的根本原因是vrrp_strict模式禁用免费ARP且关闭内核ARP参数自动适配,导致VIP无法通告、ARP表不更新、IPVS规则未同步;必须关闭vrrp_strict、显式配置arp_ignore/arp_announce、通过notify脚本动态管理VIP绑定与IPVS规则。

为什么 VIP 不响应 ARP 请求

Keepalived 的 VRRP 实例默认启用 vrrp_strict 模式时,会禁用非标准 VRRP 报文(包括 gratuitous ARP),同时要求所有 VRRP 配置严格符合 RFC 3768 —— 这直接导致 VIP 在主节点上无法发送免费 ARP,下游交换机/主机 ARP 表不更新,流量发不到 VIP。

更关键的是:vrrp_strict 会关闭内核的 arp_ignorearp_announce 自动适配逻辑,而 IPVS 转发依赖这些参数控制 ARP 响应行为。即使 VIP 已绑定到 lo 接口,若未显式配置 ARP 相关 sysctl,VIP 就不会对 ARP 请求做应答。

  • 检查是否启用了 vrrp_strict:在 keepalived.confglobal_defs 块中出现该指令即为开启
  • 确认 VIP 是否绑定在 lo:运行 ip addr show lo,应看到类似 inet 192.168.10.100/32 scope host 的条目
  • 验证当前 ARP 行为:sysctl net.ipv4.conf.all.arp_ignorenet.ipv4.conf.all.arp_announce 应分别为 12(否则需手动设置)

keepalived.conf 中必须关闭 vrrp_strict 并启用 notify 脚本

vrrp_strict 必须移除或注释掉,否则 VRRP 状态切换时不会触发免费 ARP,也不会调用 notify 脚本 —— 这是绝大多数“VIP 不通”问题的根源。

真正控制 ARP 响应和 IPVS 规则同步的,是 notify_master/notify_backup 脚本。Keepalived 不会自动管理 IPVS 规则,必须由脚本完成:

  • Master 上:绑定 VIP 到 lo、设置 arp_ignore=1arp_announce=2、加载 IPVS 规则(ipvsadm -A / -a
  • Backup 上:清空 VIP、清理 IPVS 规则(ipvsadm -C)、重置 ARP 参数(可选,但建议统一)
  • 脚本需有执行权限,且路径在 keepalived.conf 中写绝对路径,例如 notify_master "/etc/keepalived/notify.sh master"

示例片段:

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    # vrrp_strict ← 这行必须删除或注释
    virtual_ipaddress {
        192.168.10.100/32 dev lo label lo:0
    }
    notify_master "/etc/keepalived/notify.sh master"
    notify_backup "/etc/keepalived/notify.sh backup"
}

内核参数与 lo 接口配置缺一不可

仅靠 keepalived 绑定 VIP 到 lo

够。Linux 默认允许任何接口响应任意 IP 的 ARP 请求,这会导致 Backup 节点也响应 VIP 的 ARP,引发流量错乱。必须通过内核参数限制:

  • net.ipv4.conf.all.arp_ignore = 1:只响应目标 IP 是本接口主 IP 的 ARP 请求
  • net.ipv4.conf.all.arp_announce = 2:选择最佳本地地址(即 lo 上的 VIP)来应答 ARP
  • net.ipv4.conf.lo.arp_ignorenet.ipv4.conf.lo.arp_announce 也需设为相同值,避免被 all 设置覆盖
  • 这些参数需写入 /etc/sysctl.conf 并执行 sysctl -p 生效,不能只临时设置

另外,VIP 必须用 /32 掩码绑定到 lo(如 192.168.10.100/32),并加 label lo:0。用 /24 或绑定到物理接口会破坏 ARP 隔离逻辑。

ipvsadm 规则必须在 notify 脚本中动态管理

Keepalived 不感知 IPVS,也不自动同步规则。如果只靠静态 ipvsadm -A 启动一次,failover 后 Backup 成为 Master 时规则并不存在,流量进不来。

所有 IPVS 操作必须放在 notify_master 脚本里,且需幂等处理(重复执行不报错):

  • 先清空旧规则:ipvsadm -C(Backup 脚本里也要执行)
  • 添加虚拟服务:ipvsadm -A -t 192.168.10.100:80 -s rr
  • 添加真实服务器:ipvsadm -a -t 192.168.10.100:80 -r 192.168.10.11:80 -m(注意使用 -m 即 MASQUERADE 模式,避免回环路由问题)
  • 检查是否已存在再操作,可用 ipvsadm -Ln | grep -q "192.168.10.100:" 判断

别忘了在脚本开头加 #!/bin/bash,并确保 ipvsadm 在 PATH 中(或写全路径 /sbin/ipvsadm)。

ARP 不响应 + IPVS 规则缺失 + 内核参数未设,三者只要漏一个,VIP 就形同虚设。最容易被忽略的是 vrrp_strict 的全局压制效应——它会让所有其他配置都失效。


# linux  # ipad  # ai  # 路由  # 为什么  # bash  # 接口  # 绑定  # 的是  # 清空  # 这是  # 也不  # 放在  # 也要  # 就不  # 设为  # 形同虚设 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Gemini手机端怎么发图片_Gemini手机端发图方法【步骤】  高性能网站服务器部署指南:稳定运行与安全配置优化方案  Laravel怎么生成二维码图片_Laravel集成Simple-QrCode扩展包与参数设置【实战】  html5audio标签播放结束怎么触发事件_onended回调方法【教程】  C++用Dijkstra(迪杰斯特拉)算法求最短路径  如何用腾讯建站主机快速创建免费网站?  如何快速搭建高效香港服务器网站?  如何在IIS中新建站点并配置端口与IP地址?  公司网站制作价格怎么算,公司办个官网需要多少钱?  长沙做网站要多少钱,长沙国安网络怎么样?  如何在阿里云购买域名并搭建网站?  Linux系统命令中tree命令详解  教学论文网站制作软件有哪些,写论文用什么软件 ?  如何快速完成中国万网建站详细流程?  如何打造高效商业网站?建站目的决定转化率  Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置  如何在 Pandas 中基于一列条件计算另一列的分组均值  如何确认建站备案号应放置的具体位置?  移动端脚本框架Hammer.js  Claude怎样写约束型提示词_Claude约束提示词写法【教程】  如何在云虚拟主机上快速搭建个人网站?  网站建设整体流程解析,建站其实很容易!  js代码实现下拉菜单【推荐】  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  Laravel Eloquent性能优化技巧_Laravel N+1查询问题解决  昵图网官网入口 昵图网素材平台官方入口  Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】  Laravel怎么调用外部API_Laravel Http Client客户端使用  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  如何快速选择适合个人网站的云服务器配置?  如何在建站宝盒中设置产品搜索功能?  HTML 中动态设置元素 name 属性的正确语法详解  网易LOFTER官网链接 老福特网页版登录地址  如何用AI一键生成爆款短视频文案?小红书AI文案写作指令【教程】  Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程  iOS发送验证码倒计时应用  javascript中对象的定义、使用以及对象和原型链操作小结  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  nodejs redis 发布订阅机制封装实现方法及实例代码  bootstrap日历插件datetimepicker使用方法  EditPlus中的正则表达式 实战(4)  做企业网站制作流程,企业网站制作基本流程有哪些?  Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】  Laravel如何实现数据导出到CSV文件_Laravel原生流式输出大数据量CSV【方案】  javascript中数组(Array)对象和字符串(String)对象的常用方法总结  Laravel中的Facade(门面)到底是什么原理  详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南  HTML透明颜色代码怎么让下拉菜单透明_下拉菜单透明背景指南【技巧】  如何在万网利用已有域名快速建站?  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?