第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 为什么默认直连

  1. 安全:限制了 BGP 连接的物理范围,防止攻击者从非直连链路建立 BGP 会话
  2. 简单:不需要额外的 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 会话安全

七、思考

  1. 为什么 eBGP 默认要求对等体直连(TTL=1)?
  2. 什么情况下需要使用 eBGP 多跳?
  3. 使用 Loopback 接口建立 eBGP 连接有哪些好处?
  4. GTSM(TTL Security)的原理是什么?如何配置?
  5. ebgp-max-hop 和 ttl-security 能否同时配置?为什么?

下篇预告:第95篇《BGP 软复位与路由刷新》——了解如何在不中断 BGP 连接的情况下更新路由策略。