第94篇:eBGP 多跳与 TTL 安全
关键词
BGP、eBGP、多跳、Multihop、TTL、ebgp-max-hop、安全
一、eBGP 的默认要求
1.1 TTL=1
默认情况下,eBGP 报文的 TTL 设置为 1。这意味着 eBGP 对等体必须直连。
AS 100 AS 200
│ │
│── eBGP(TTL=1,直连)──│ ✅ 正常
│ 10.0.12.1 │
│ 10.0.12.2 │
└───────────────────────┘
1.2 为什么默认直连
- 安全:限制了 BGP 连接的物理范围,防止攻击者从非直连链路建立 BGP 会话
- 简单:不需要额外的 IGP 路由来保证下一跳可达
二、非直连 eBGP——多跳
2.1 什么场景需要 eBGP 多跳
AS 100 AS 200
│ │
│ Loopback Loopback
│ 1.1.1.1 2.2.2.2
│ │ │
│ RouterA ───── IGP ─── RouterB
│ │ 互联 IP │
└─────┴────────────────────┘
需求:使用 Loopback 接口建立 eBGP 连接(提高可靠性)
2.2 配置 eBGP 多跳
# RouterA
bgp 100
peer 2.2.2.2 as-number 200
peer 2.2.2.2 connect-interface LoopBack0 # 用 Loopback 作为源
peer 2.2.2.2 ebgp-max-hop 2 # 允许 2 跳
# RouterB
bgp 200
peer 1.1.1.1 as-number 100
peer 1.1.1.1 connect-interface LoopBack0
peer 1.1.1.1 ebgp-max-hop 2
2.3 多跳时的下一跳问题
当使用 Loopback 建立 eBGP 时,下一跳默认是 Loopback 地址。可能需要配置:
# 让 eBGP 下一跳使用直连接口(默认行为)
peer 2.2.2.2 next-hop-local # eBGP 场景下
# 或者使用直连 IP 作为更新源
peer 2.2.2.2 ebgp-max-hop 2
peer 2.2.2.2 connect-interface GigabitEthernet0/0/0
三、TTL 安全机制
3.1 TTL Security(GTSM)
GTSM(Generalized TTL Security Mechanism) 是一种 BGP 安全机制:
原理:如果对端的实际距离是 2 跳
设置 GTSM 后只接受 TTL ≥ 253(255-2)的报文
→ 攻击者若在更远处,TTL 必然小于 253
→ 拒绝攻击报文
3.2 配置 GTSM
bgp 100
peer 2.2.2.2 as-number 200
peer 2.2.2.2 ebgp-max-hop 2
peer 2.2.2.2 ttl-security hops 2 # 只接受 TTL ≥ 253 的报文
3.3 TTL 值计算
TTL Security Hops = 预计的实际跳数
允许的 TTL 下限 = 255 - hops
实际跳数 = 2 → 允许 TTL ≥ 255-2 = 253
如果攻击者在 5 跳之外 → TTL ≤ 250 → 被拒绝
3.4 注意事项
# GTSM 与 ebgp-max-hop 冲突
# 使用 ttl-security 时不能同时配置 ebgp-max-hop
四、多跳场景的典型应用
4.1 使用 Loopback 提高可靠性
AS 100 AS 200
│ │
RouterA ── Link1 ──── RouterB
│ │
└─── Link2 ────────────┘
如果 eBGP 使用直连(物理接口)建立:
Link1 故障 → BGP 中断 → 需要切换到 Link2
如果 eBGP 使用 Loopback 建立(多跳):
通过 IGP 实现链路冗余 → Link1 故障自动走 Link2
4.2 跨防火墙的 eBGP
AS 100 ── 防火墙 ── AS 200
│
需要多跳 eBGP(防火墙不运行 BGP)
4.3 多跳配置示例
# 确保 IGP 可达 Loopback
ospf 1
network 1.1.1.1 0.0.0.0 area 0
# BGP 使用 Loopback
bgp 100
peer 2.2.2.2 as-number 200
peer 2.2.2.2 connect-interface LoopBack0
peer 2.2.2.2 ebgp-max-hop 255 # 不限制跳数
五、安全建议
| 场景 | TTL 设置 | 安全建议 |
|---|---|---|
| 直连 eBGP | TTL=1(默认) | 天然安全 |
| 多跳 eBGP | TTL 较大 | 启用 GTSM |
| 公网 eBGP | TTL 较大 | 必须启用 GTSM |
| iBGP | TTL=255(默认) | 天然安全(AS 内部) |
六、总结
| 知识点 | 核心要点 |
|---|---|
| 默认 eBGP | TTL=1,必须直连 |
| ebgp-max-hop | 允许非直连 eBGP,指定最大跳数 |
| Loopback 互联 | 提高 BGP 连接的可靠性 |
| TTL Security | 只接受预期跳数范围内的 BGP 报文 |
| 安全原则 | 多跳场景必须考虑 BGP 会话安全 |
七、思考
- 为什么 eBGP 默认要求对等体直连(TTL=1)?
- 什么情况下需要使用 eBGP 多跳?
- 使用 Loopback 接口建立 eBGP 连接有哪些好处?
- GTSM(TTL Security)的原理是什么?如何配置?
- ebgp-max-hop 和 ttl-security 能否同时配置?为什么?
下篇预告:第95篇《BGP 软复位与路由刷新》——了解如何在不中断 BGP 连接的情况下更新路由策略。