如何通过分析 Keepalived 的 auth_pass 长度限制解决双机通信失败

舞姬之光

舞姬之光

2026-05-23

908人浏览

原创

keepalived的auth_pass实际有效长度为8字节,超出部分被截断;主备端必须字节级一致,否则因md5摘要不匹配导致认证失败、心跳中断、vip不漂移。

如何通过分析 keepalived 的 auth_pass 长度限制解决双机通信失败

Keepalived 的 auth_pass 并没有严格意义上的“长度限制”,但它的实际有效性高度依赖于 VRRP 协议的认证机制和底层实现——它只取前 8 字节作为认证密钥,超出部分会被截断。若主备节点配置的密码字面长度不同、或包含不可见字符(如空格、换行、制表符),极易导致认证失败,表现为心跳中断、状态卡在 INIT、VIP 不漂移等现象。

为什么 auth_pass 超长或不一致会通信失败

VRRP 协议规范(RFC 3768)规定 PASS 认证使用固定 8 字节密钥参与 MD5 摘要计算。Keepalived 实现中会自动截断或补零至 8 字节,但**截断逻辑对两端必须完全一致**。常见陷阱包括:

  • 主节点配 auth_pass 123456789(9位),备节点配 auth_pass 12345678(8位)→ 实际都取前 8 字节,看似一致,但若备节点配置文件末尾有隐藏空格(如 12345678 ),则截断后变成 12345678 vs 12345678(含空格),MD5 值不同
  • 使用特殊字符(如中文、$、@)时,若编码不统一(UTF-8 vs Latin-1),同样导致字节序列不一致
  • 密码含前导/尾随空格,keepalived -t 不报错,但运行时认证静默失败

快速验证 auth_pass 是否真正匹配

不要仅靠肉眼比对配置文件,应通过以下方式交叉确认:

  • 在两台机器上分别执行:
    echo -n "your_auth_pass_here" | od -An -t x1 | tr -d ' '
    对比输出的 16 进制字节流是否完全一致(必须是 16 个字符,即 8 字节)
  • 检查配置文件实际内容是否含不可见字符:
    cat -A /etc/keepalived/keepalived.conf | grep auth_pass
    ^I 表示 Tab,$ 表示行尾, (空格)需特别注意
  • 启用 Keepalived 调试日志,在 vrrp_instance 块中加入:
    log_detail
    重启后查看 journalctl -u keepalived -n 50,搜索 authbad auth 关键词

安全又兼容的 auth_pass 配置建议

为规避截断与编码风险,推荐采用以下实践:

  • 统一使用 8 位纯 ASCII 字符:如 auth_pass Keep2026auth_pass HA8bytes,避免数字+字母混合以外的符号
  • 禁止使用引号包裹密码(auth_pass "123" 是错误写法,引号会被当作密码一部分)
  • 配置后务必执行语法检查:
    keepalived -t -f /etc/keepalived/keepalived.conf
    即使通过,也不代表认证有效,仍需抓包验证
  • 配合抓包确认认证是否生效:
    tcpdump -i eth0 -nn -v port 112 | grep -i "auth"
    正常应看到 Authentication Type: Simple Password (1) 且无 Auth Failure

当 auth_pass 疑似失效时的替代方案

如果反复验证仍无法定位问题,可临时绕过认证环节快速判断是否为根本原因:

  • 将两端 auth_type 改为 NOPASS(仅限内网可信环境测试)
  • 或改用 auth_type AH(IPSec 认证头,更安全但需内核支持,且配置复杂度上升)
  • 更推荐的做法是切换为单播模式(unicast_src_ip + unicast_peer),既避开组播干扰,也弱化对 auth_pass 的强依赖

本质上,auth_pass 不是“长度问题”,而是“字节一致性问题”。盯住那 8 个字节,比盯着密码有多长更管用。

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

355

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

618

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

1216

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

429

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

324

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

190

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

1033

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

1850

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

323

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.4万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 131.8万人学习