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

号主:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部


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

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

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

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

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


1. BGP 邻居建立流程回顾

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

  1. 三次握手建立 TCP 连接

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

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

    • 定期发送 Keepalive 消息保持邻居状态。
  4. 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 检查路由路径是否中断
  2. 确认 TCP 179 是否通

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

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

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

    • 在路由器上:

      display tcp brief

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

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

  6. 确认 NAT 或策略路由

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

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


4. 防火墙配置注意点

  • 允许 TCP 179 双向

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

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

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

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


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

  1. 端口固定

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

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

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

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

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


6. 总结

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

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

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

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

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


原创:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值