MD5 认证不一致的表现
BGP 的 TCP 层认证(常见实现是 RFC 2385 定义的 MD5 摘要)在 TCP 连接建立阶段就生效:每个报文段的头部都参与计算,校验不过的报文会被直接丢弃。这个特性决定了它的故障表现非常有辨识度——不一致时不会出现 BGP 层面的错误报文(因为连接根本建立不起来),而是表现为 TCP 连接超时或被重置,日志里往往只有连接失败或对端无响应,抓包能看到 SYN 发出却收不到 SYN-ACK,或者收到 RST。因此在确认「可达性没问题但邻居建不起来」时,认证不一致应当列为高优先级怀疑项。
基本信息
| 原理 | TCP MD5 签名,RFC 2385 定义 |
|---|---|
| 症状 | 连接超时或被重置,无 BGP 报文交互 |
| Cisco 配置 | neighbor <地址> password <口令> |
| 华为配置 | peer <地址> password cipher <口令> |
| 演进方向 | TCP-AO(RFC 5925)逐步替代 MD5 |
| 核对方式 | 两端口令逐字符比对,含大小写与特殊字符 |
典型使用场景
- 邻居建不起来且可达性正常:优先核对认证配置
- 割接后邻居异常:确认新设备是否配置了口令
- 安全加固:为 eBGP 邻居增加认证
- 排障时区分认证问题与 ACL 拦截:抓包看是否有 BGP 报文
- 定期巡检:确认实际配置与密码管理记录一致
配置核对
配置核对
# Cisco:查看是否配置了口令(口令本身通常不回显)
show ip bgp neighbors 203.0.113.2 | include password
show running-config | include neighbor 203.0.113.2 password
# 抓包判断:无 SYN-ACK 或收到 RST 属典型表现
tcpdump -ni eth0 'host 203.0.113.2 and tcp port 179'
# 华为侧对照
display bgp peer 203.0.113.2 verbose现象区分
| 现象 | 倾向原因 | 验证方式 |
|---|---|---|
| 无任何 BGP 报文 | 认证不一致或 ACL 拦截 | 抓包看是否有通过校验的报文 |
| SYN 无回应 | 对端未配置或口令不同 | 两端同时抓包对比 |
| 收到 RST | 对端校验失败后重置 | 核对口令内容 |
| 单方向可建 | 一侧未配置认证 | 逐端检查配置 |
| 日志只报超时 | TCP 层被丢弃 | 以抓包结论为准 |
口令变更属于两端联动操作:建议在同一窗口内先改一端并保持旧口令可用,或明确约定切换时刻,避免中间出现长时间不可用。
部分平台在配置文件中对口令加密存储,因此不能靠配置文件比对判断是否一致,需以实际口令来源为准。