首页/网络/BGP 与广域网速查/next-hop-self 的使用场景
BGP 基础与邻居89 条

next-hop-self 的使用场景

IBGP 场景把下一跳改为自身:避免因下一跳不在 IGP/不可达导致路由无效,边界设备对 IBGP 邻居常用。

BGP 与广域网速查网络更新于 2026-10-13

next-hop-self 的作用

IBGP 传递路由时默认不改写下一跳:从 EBGP 学到的路由仍带着外部下一跳地址传给内网设备。如果内网设备没有到那个外部地址的路由,路由虽在 BGP 表中却无法使用。next-hop-self 让边界设备对外发布时把下一跳改成自己,从根源上消除这个问题。

基本信息

问题EBGP 学到的路由下一跳是外部地址,IBGP 不再改写
后果内网设备没有到外部下一跳的路由,路由存在但不可用
命令neighbor <ip> next-hop-self
生效方向对 IBGP 邻居的出向
替代思路让内网设备本身能到达外部下一跳
验证show ip bgp <前缀> 查看下一跳字段

典型使用场景

  • 边界设备与内网设备建立 IBGP,内网不掌握外部地址
  • 双边界双出口:让内网按 IGP 度量选择出口,而不是跟着外部下一跳走
  • 与环回口对等配合:下一跳统一指向稳定的环回地址
  • 多厂商互联时统一下一跳处理方式,减少互通问题
  • 排查「有路由但不通」时确认下一跳是否可达

配置与验证

配置与验证
router bgp 65001
 neighbor 10.0.0.5 remote-as 65001
 neighbor 10.0.0.5 update-source Loopback0
 neighbor 10.0.0.5 next-hop-self             # 对外发布时改写为自身地址
!
show ip bgp 10.1.1.0/24                     # 查看下一跳字段是否为本机地址
show ip route 10.1.1.0/24                   # 内核视角的下一跳与出接口
show ip bgp neighbors 10.0.0.5 advertised-routes | include 10.1

改与不改的取舍

做法优点代价
配置 next-hop-self内网无需掌握外部地址,可用性稳定下一跳不再反映真实出口,路径可视化变弱
保持默认下一跳属性真实,便于流量工程与可视化内网必须能到达外部下一跳,否则路由不可用
配合环回口对等下一跳稳定,链路切换不影响可用性需要 IGP 正确通告环回地址
判断路由是否真正可用,看的是下一跳可达性与主表装载结果,而不是 BGP 表里有没有这条前缀。
对所有邻居一刀切配置会削弱路径可视化能力:建议按邻居类型区分,边界设备对内部邻居启用即可。

易错点

  • 全部邻居一刀切 next-hop-self:路径可视化与流量工程受影响
  • 忽略「下一跳不可达」排查:BGP 选路完成但转发失败常源于此
  • 只在部分设备配置:不同设备对同前缀的可用性判断不一致
  • 忘记核对回程:去程下一跳改写后,回程路径仍需对端有相应路由

数据来源与参考

  • Cisco: next-hop-self 说明
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌