直连会话的 TTL 防护
TTL 安全机制的核心思路是:直连邻居之间报文只经过一跳,发送方把初始 TTL 设为最大值 255,接收方校验收到的 TTL 是否等于最大值减去约定跳数。攻击者伪造源地址发来的报文经过多跳后 TTL 会明显偏小,从而被识别并丢弃。这个机制对防伪造源地址的会话干扰有效,但前提是两端都启用、跳数设置与实际拓扑一致。它只适用于直连或固定跳数的场景,多跳会话套用同样的校验口径会导致正常报文也被丢弃。
基本信息
| 原理 | 发送端 TTL 设为最大值,接收端校验递减后的预期值 |
|---|---|
| 适用场景 | 直连或固定跳数的邻居会话 |
| 配套能力 | 常与单跳快速检测机制搭配使用 |
| 两端要求 | 双方都需启用且跳数配置一致 |
| 平台差异 | Cisco 与华为的命令名称与视图不同 |
典型使用场景
- 直连 EBGP 会话加固:防止伪造源地址的报文干扰
- 互联网出口:降低被伪造源地址攻击的风险
- 巡检核对:确认两端安全配置是否存在单边
- 安全加固方案:与其他防护措施组合使用
- 故障定位:会话在加了安全配置后起不来时确认跳数设置
配置对照
配置对照
# Cisco:直连一跳场景
neighbor 203.0.113.2 ttl-security hops 1
# 华为
# peer 203.0.113.2 valid-ttl-hops 1
# 查看生效情况
show ip bgp neighbors 203.0.113.2 | include ttl
# 华为
display bgp peer 203.0.113.2 verbose | include ttl配置与判断
| 配置状态 | 结果 | 排查方向 |
|---|---|---|
| 两端都启用且跳数一致 | 会话正常,防伪造生效 | 无需处理 |
| 单边启用 | 一个方向校验失败,会话反复中断 | 补齐对端配置或统一关闭 |
| 跳数设置偏小 | 正常报文被丢弃,会话无法建立 | 按实际跳数修正 |
| 多跳会话套用单跳参数 | 校验口径不符,会话不稳定 | 改用与拓扑匹配的参数 |
排查时先确认实际路径跳数,可以用路径追踪观察报文经过几跳;配置值与实际不一致是这类机制最常见的失败原因。
两端能力不一致时,若对端不支持该机制,不要只在一端启用,否则会出现单向丢弃并造成会话反复重建。