You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Quagga未将eBGP学习前缀传播至其他eBGP邻居问题

我来帮你排查这个Quagga里eBGP路由通告失效的问题,结合你给出的配置片段,咱们一步步来分析可能的原因和解决办法:

Troubleshooting eBGP Route Advertisement in Quagga

首先先把你提供的配置片段整理出来方便分析:

router bgp 64620
bgp router-id 172.29.253.80
bgp log-neighbor-changes
network 172.29.253.80/32
timers bgp 10 30
neighbor 10.35.253.2 remote-as 64901
neighbor 10.35.253.2 next-hop-self
neighbor 10.35.253.2 soft-reconfiguration inbound
neighbor 10.47.0.254 remote-as 64621
neighbor 10.47.0.254 ebgp-multihop 255
neighbor 10.47.0.254 nex...

1. 补全不完整的邻居配置

你的配置里neighbor 10.47.0.254 nex...明显没写完,大概率是漏掉了next-hop-self参数。对于非直连的eBGP邻居(你已经开了ebgp-multihop),默认下一跳是原路由发布者的IP地址,如果这个下一跳在10.47.0.254的路由表里不可达,对方根本不会接收这条前缀。赶紧补上这行:

neighbor 10.47.0.254 next-hop-self

2. 确认Quagga确实学到了目标路由

先检查你的BGP表,确认从AS64901(10.35.253.2)学到的前缀已经存在且是最优路由:

show ip bgp

找那些来自10.35.253.2的前缀,看前面有没有*> 标记——这个标记表示这条路由是Quagga选中的最优路由,只有最优路由才会被通告给其他邻居。如果没有这个标记,得先排查为什么这条路由没被选为最优(比如优先级、MED值、AS_PATH长度等问题)。

3. 检查出口方向的路由过滤策略

默认情况下,eBGP学到的路由会自动通告给其他eBGP邻居,但如果配置了路由映射、前缀列表或者ACL,可能会把这些路由过滤掉。你可以先查看对10.47.0.254的出口路由:

show ip bgp neighbor 10.47.0.254 routes out

如果输出为空,说明有过滤规则在生效。可以临时加一个允许所有路由的策略来测试:

route-map ALLOW_ALL permit 10
neighbor 10.47.0.254 route-map ALLOW_ALL out

配置完后再查出口路由,如果能看到目标前缀了,说明之前的过滤策略有问题,需要调整。

4. 验证eBGP多跳的连通性

你配置了ebgp-multihop 255,说明这个邻居不是直连的。首先要确保你的路由器能正常ping通10.47.0.254,同时对方也能ping通你的路由器:

ping 10.47.0.254
traceroute 10.47.0.254

如果连通性有问题,先解决IP层的路由问题,BGP邻居都建立不起来的话,路由通告更无从谈起。

5. 确认BGP邻居状态是Established

用这条命令查看邻居状态:

show ip bgp neighbors

找到10.47.0.254对应的条目,看BGP state是不是Established。如果不是,先排查邻居建立失败的原因——比如AS号配置错误、缺少认证(如果对方配置了)、防火墙拦截了BGP端口(TCP 179)等。

6. 核对BGP路由通告规则

最后再确认下BGP的基本规则:eBGP学到的路由会通告给其他eBGP邻居,除非满足以下条件之一:

  • 路由不是最优路由
  • 被出口策略过滤
  • 下一跳不可达
  • AS_PATH里包含接收方的AS号(防环路)

按照上面的步骤一步步排查,应该能找到问题所在。

内容的提问来源于stack exchange,提问作者Ossar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:12:37