what?BGP 邻居死活建不起来,最后发现是防火墙搞的鬼

小陈 的头像

0 评论

13 阅读

2,053 字,阅读时间 10 分。

hello,我是网工小陈。

BGP 是互联网骨干和大规模企业网络必用的外部路由协议。

what?BGP 邻居死活建不起来,最后发现是防火墙搞的鬼_img_1

它不像 OSPF、EIGRP 那样局限在内部网络,邻居建立失败会直接导致跨网段甚至跨运营商网络不可达。

很多新手排障第一反应是看 IP、ASN 或者接口状态,其实真正的隐形敌人往往是防火墙

只要 TCP 179 端口被阻止,BGP 邻居就无法建立,表面上看起来配置都对,但就是握手失败。

今天深入讲解 BGP 邻居建立失败的原因、排障思路,以及防火墙相关的注意点。


1. BGP 邻居建立流程回顾

BGP 使用 TCP 179 建立会话,主要步骤:

  1. 三次握手建立 TCP 连接

  • 邻居双方 TCP 三次握手完成,才能进入 BGP FSM(Finite State Machine)状态。
  • BGP Open 消息交换

    • 交换 ASN、Hold Time、能力(Capability)信息。
  • Keepalive 消息维持会话

    • 定期发送 Keepalive 消息保持邻居状态。
  • Update 消息传递路由信息

  • 如果某一步失败,邻居状态就不会变成Established。常见状态有:

    • Idle:初始状态,等待启动
    • Connect:尝试建立 TCP
    • Active:TCP 建立失败,继续尝试
    • OpenSent/OpenConfirm:TCP 成功,Open 消息交换中
    • Established:邻居成功建立,可以收发路由

    2. 防火墙对 BGP 邻居的影响

    2.1 TCP 端口阻断

    • BGP 使用TCP 179

    • 如果防火墙策略未允许 TCP 179,BGP 无法建立连接

    • 表现:

      • Active状态徘徊不前
      • Ping 通对端 IP,但 BGP 握手失败

    2.2 ACL 或策略路由

    • 防火墙可能对源 IP、目的 IP 或接口做策略限制
    • 可能只允许特定 IP 建邻居
    • 造成部分邻居无法建立,另一部分邻居正常

    2.3 NAT 影响

    • 在 NAT 环境下,如果没有静态 NAT 映射 BGP 源端口或地址,BGP 握手也可能失败

    2.4 日志观察

    • 防火墙日志可以查看 TCP 179 被阻止的情况

    • 网工常用命令:

      display firewall session
      display firewall policy

    3. 排障思路

    当 BGP 邻居建不起来时,可以按以下顺序排查:

    1. 确认接口可达

    • Ping 对端 IP 是否通
    • traceroute 检查路由路径是否中断
  • 确认 TCP 179 是否通

    • 使用telnet <BGP_neighbor_IP> 179nc -zv <IP> 179
    • 如果 TCP 握手失败,说明防火墙或 ACL 阻止
  • 检查 BGP 配置

    • ASN 是否正确
    • 邻居 IP 是否正确
    • 对端 BGP 是否启用
  • 分析防火墙策略

    • 确认防火墙允许TCP 179双向通过
    • 检查策略是否限制源/目的 IP 或接口
    • 在多层防火墙环境下,确保每一跳的策略都放行 BGP 会话
  • 查看 TCP 状态

    • 在路由器上:

      display tcp brief

      检查是否有 TCP SYN 发送但未收到 ACK

    • SYN 发出但无 ACK,一般说明中间设备(防火墙、ACL)阻断

  • 确认 NAT 或策略路由

    • BGP 建邻居时,源 IP 和端口必须保持一致
    • NAT 或策略路由可能修改源 IP,导致 TCP 握手失败
  • 日志分析

    • 路由器日志查看 BGP FSM 状态变化
    • 防火墙日志查看是否有 TCP 179 被拒绝的记录

    4. 防火墙配置注意点

    • 允许 TCP 179 双向

      • 内外网或者不同区域都必须放行
    • 保持源 IP 一致

      • 如果使用 NAT,需要静态 NAT 映射 BGP 对端 IP
    • 考虑高可用与备份链路

      • 多条链路时,每条链路都要放行 BGP 会话
    • 避免策略过细导致误杀

      • 仅放行特定端口和源 IP,避免放行过多,同时保证邻居可达

    5. 建立稳定 BGP 邻居的建议

    1. 端口固定

    • TCP 179 默认即可,不建议修改
  • 双向检查

    • 对端路由器和防火墙都要确认策略
  • 定期监控

    • 使用 SNMP 或监控工具监控 BGP 会话状态
  • 模拟断链实验

    • 提前测试防火墙策略,确保链路切换不会影响邻居
  • 文档化配置

    • 所有 BGP 邻居、ASN、防火墙策略要有详细文档,方便排障

    6. 总结

    • BGP 邻居建立失败最常见的隐形原因就是防火墙阻断 TCP 179

    • Ping 可通 ≠ BGP 成功,必须确认 TCP 三次握手是否完成

    • 排障顺序:接口可达 → TCP 179 测试 → 配置检查 → 防火墙/ACL → 日志分析

    • 稳定邻居建立依赖正确配置、防火墙放行、NAT 注意以及定期监控

    一句话总结:BGP 是 TCP 会话,TCP 不通就别谈邻居建立

    what?BGP 邻居死活建不起来,最后发现是防火墙搞的鬼_img_2
    网络工程师必备资料领取

    what?BGP 邻居死活建不起来,最后发现是防火墙搞的鬼_img_3
    添加小陈,无偿分享资料
    (回复稍慢请见谅,在当牛马)

    免责声明:本文内容来源于:

    微信公众号

    网络工程师小陈

    ,原文链接:

    http://mp.weixin.qq.com/s?__biz=Mzk0OTc0MzYxNA==&mid=2247485916&idx=1&sn=8575a79babb304757634f2c0b7d3092c&chksm=c352f34df4257a5b09a4a2ba96e101dbdefea845dbfc22999217245d5c0b1f4634da0c6d32d4#rd

    本站为个人站点,相关文章均为网络公开资料,仅出于个人学习、研究及资料整理之用途转载收集,所有版权均归原作者及原发布平台所有。文末作者信息仅用于进行本站文章的分类信息使用,不代表原作者授权或者原作者入驻等依据。
    本站不保证内容的完整性与准确性,亦不对内容承担任何法律责任。 如本文涉及版权问题,请原作者及时与我们联系,我们将在第一时间内进行删除处理。 本站尊重并遵守相关版权法规,倡导合法使用网络资源。 联系方式:[email protected]

    小陈 的头像

    60篇作品

    933总阅读量

    发表回复

    您的邮箱地址不会被公开。 必填项已用 * 标注

    更多文章

    网工通信弱电的宝藏知识网站