摘要:它不像 OSPF、EIGRP 那样局限在内部网络,邻居建立失败会直接导致跨网段甚至跨运营商网络不可达。
号主:老杨丨11年资深网络工程师,更多网工提升干货,
BGP 是互联网骨干和大规模企业网络必用的外部路由协议。
它不像 OSPF、EIGRP 那样局限在内部网络,邻居建立失败会直接导致跨网段甚至跨运营商网络不可达。
很多新手排障第一反应是看 IP、ASN 或者接口状态,其实真正的隐形敌人往往是防火墙。
只要 TCP 179 端口被阻止,BGP 邻居就无法建立,表面上看起来配置都对,但就是握手失败。
今天深入讲解 BGP 邻居建立失败的原因、排障思路,以及防火墙相关的注意点。
BGP 使用 TCP 179 建立会话,主要步骤:
三次握手建立 TCP 连接
邻居双方 TCP 三次握手完成,才能进入 BGP FSM(Finite State Machine)状态。BGP Open 消息交换
交换 ASN、Hold Time、能力(Capability)信息。Keepalive 消息维持会话
定期发送 Keepalive 消息保持邻居状态。Update 消息传递路由信息
如果某一步失败,邻居状态就不会变成 Established。常见状态有:
Idle:初始状态,等待启动Connect:尝试建立 TCPActive:TCP 建立失败,继续尝试OpenSent / OpenConfirm:TCP 成功,Open 消息交换中Established:邻居成功建立,可以收发路由防火墙日志可以查看 TCP 179 被阻止的情况
网工常用命令:
display firewall sessiondisplay firewall policy
当 BGP 邻居建不起来时,可以按以下顺序排查:
确认接口可达
Ping 对端 IP 是否通traceroute 检查路由路径是否中断确认 TCP 179 是否通
使用 telnet 179 或 nc -zv 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 被拒绝的记录端口固定
TCP 179 默认即可,不建议修改双向检查
对端路由器和防火墙都要确认策略定期监控
使用 SNMP 或监控工具监控 BGP 会话状态模拟断链实验
提前测试防火墙策略,确保链路切换不会影响邻居文档化配置
所有 BGP 邻居、ASN、防火墙策略要有详细文档,方便排障来源:网络工程师俱乐部一点号