BGP的配置问题?
1. BGP 邻居建立流程回顾
BGP 使用 TCP 179 建立会话,主要步骤:
- 三次握手建立 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 邻居建不起来时,可以按以下顺序排查:
- 确认接口可达
- Ping 对端 IP 是否通
- traceroute 检查路由路径是否中断
- 确认 TCP 179 是否通
- 使用 telnet <BGP_neighbor_IP> 179 或 nc -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 邻居的建议
- 端口固定
- TCP 179 默认即可,不建议修改
- 双向检查
- 对端路由器和防火墙都要确认策略
- 定期监控
- 使用 SNMP 或监控工具监控 BGP 会话状态
- 模拟断链实验
- 提前测试防火墙策略,确保链路切换不会影响邻居
- 文档化配置
- 所有 BGP 邻居、ASN、防火墙策略要有详细文档,方便排障
6. 总结
- BGP 邻居建立失败最常见的隐形原因就是 防火墙阻断 TCP 179
- Ping 可通 ≠ BGP 成功,必须确认 TCP 三次握手是否完成
- 排障顺序:接口可达 → TCP 179 测试 → 配置检查 → 防火墙/ACL → 日志分析
- 稳定邻居建立依赖正确配置、防火墙放行、NAT 注意以及定期监控
一句话总结:BGP 是 TCP 会话,TCP 不通就别谈邻居建立。
阅读剩余
版权声明:
作者:SE_YJ
链接:https://www.cnesa.cn/7550.html
文章版权归作者所有,未经允许请勿转载。
THE END