BGP基础配置实验总结

一、实验拓扑与背景介绍

最近在复习 BGP 多自治域组网,搭了一套包含 3 个 AS 的拓扑,目标是实现 AS100、AS200、AS300 的全网互通,同时在 AS200 内部通过 OSPF 实现 IGP 打通,让 iBGP 邻居能正常建立。

拓扑结构概览

表格

设备 AS 号 关键接口与地址
R1 AS100 GE0/0/0:12.1.1.1/24,LoopBack0:1.1.1.1/32
R2 AS200 GE0/0/0:12.1.1.2/24,GE0/0/1:23.1.1.2/24,LoopBack0:2.2.2.2/32
R3 AS200 GE0/0/0:23.1.1.3/24,GE0/0/1:34.1.1.3/24,LoopBack0:3.3.3.3/32
R4 AS200 GE0/0/0:34.1.1.4/24,GE0/0/1:45.1.1.4/24,LoopBack0:4.4.4.4/32、LoopBack1:10.4.4.4/32
R5 AS300 GE0/0/0:45.1.1.5/24,LoopBack0:5.5.5.5/32、LoopBack1:10.5.5.5/32

核心设计思路

  1. AS 间路由 :R1 与 R2 建立 eBGP 邻居,R4 与 R5 建立基于环回口的 eBGP 邻居(需要ebgp-max-hop支持);
  2. AS 内路由:AS200 内通过 OSPF 实现所有直连网段和环回口的 IGP 打通,同时把 BGP 路由引入 OSPF,保障内部路由可达;
  3. 默认路由兜底:R1 配置默认路由指向 R2,R5 配置默认路由指向 R4,保证非直连网段的流量转发。

二、初始配置与问题初现

按照拓扑完成所有基础配置后,发现了几个典型问题:

  1. R1 ping 不通 R5 的 5.5.5.5,也无法 ping 通 R4 的 4.4.4.4;
  2. R4 与 R5 的 BGP 邻居建立失败,一直处于 Idle/Connect 状态;
  3. AS200 内部 R2 无法 ping 通 R4 的 LoopBack0,iBGP 邻居虽然配置了,但状态异常。

三、分步排错与解决过程

1. 先解决 AS200 内部 OSPF 路由问题

首先排查 IGP,因为 iBGP 的建立依赖 AS 内路由可达。

  • 检查 R3 的配置,发现 R3 的 OSPF 没有配置router-id,虽然华为设备会自动选举,但还是建议手动配置,避免选举异常;
  • 检查 R2 的 OSPF 配置,ospf 1 router-id 2.2.2.2import-route bgp是正确的,但network命令没有宣告 GE0/0/0 的 12.1.1.2 网段?不,这里是对的,因为 12.1.1.0/24 是 AS 间链路,不需要在 OSPF 里宣告,R2 和 R1 建立 eBGP,只需要保证 R2 到 R4 的路由可达即可。
  • 关键问题:R4 的 OSPF 配置中,network 45.1.1.4 0.0.0.0宣告了,但 R3 和 R4 的 OSPF 邻居已经建立,但 R4 的 LoopBack0 4.4.4.4 在 R2 的路由表中是否存在?排查发现 R3 的 OSPF 配置中,ospf 1没有配置router-id,而且 R4 的 OSPF 配置中,import-route bgp已经配置,但 R2 和 R4 的 iBGP 邻居是否正常?

2. 解决 R2 与 R4 的 iBGP 邻居问题

R2 配置了peer 4.4.4.4 as-number 200connect-interface LoopBack0,R4 也配置了peer 2.2.2.2 as-number 200connect-interface LoopBack0,但邻居一直无法建立。

  • 第一步:检查 R2 到 4.4.4.4 的路由,display ip routing-table 4.4.4.4,发现 R2 通过 OSPF 学到了 4.4.4.4/32,下一跳是 23.1.1.3(R3),路由是通的;
  • 第二步:检查 BGP 的peer 4.4.4.4 enable是否配置,两边都配置了,没问题;
  • 第三步:检查 R2 的 BGP 配置,peer 4.4.4.4 next-hop-local,这个配置是正确的,用来把 eBGP 路由的下一跳改为自己,发给 iBGP 邻居;
  • 关键问题:R4 的 OSPF 配置中,import-route bgp是正确的,但 R2 的 BGP 配置中,network 1.1.1.1 255.255.255.255是 R1 的路由,R2 从 R1 学到后,会通过 iBGP 发给 R4,R4 会收到,但是 R4 的 OSPF 引入 BGP,会把这些路由发布到 AS200 内部,R2 也会收到,不影响,但问题不在这;
  • 最终发现:R3 的 OSPF 配置中,没有宣告34.1.1.3?不,配置里写了network 34.1.1.3 0.0.0.0,是对的。哦,原来 R2 和 R4 的 iBGP 邻居是建立成功的,只是因为没有收到足够的路由,一开始误以为不通,实际是 R1 的路由在 R4 的 BGP 表中,只是需要确认。

3. 解决 R4 与 R5 的 eBGP 邻居问题

R4 配置了peer 10.5.5.5 as-number 300connect-interface LoopBack1ebgp-max-hop 255;R5 配置了peer 10.4.4.4 as-number 200connect-interface LoopBack1ebgp-max-hop 2,但邻居一直无法建立。

  • 第一步:检查 R4 到 10.5.5.5 的路由,R4 配置了ip route-static 10.5.5.5 255.255.255.255 45.1.1.5,R5 配置了ip route-static 10.4.4.4 255.255.255.255 45.1.1.4,静态路由是双向的,ping 一下:R4 ping 10.5.5.5,发现是通的,说明底层 IP 可达;
  • 第二步:检查 BGP 配置,两边的peer x.x.x.x enable都配置了,没问题;
  • 第三步:检查ebgp-max-hop,R4 配置了 255,足够大,R5 配置了 2,也足够,因为两个环回口之间只经过一跳物理链路,TTL 减 1,所以没问题;
  • 关键问题:R5 的 BGP 配置中,peer 10.4.4.4 as-number 200,这里的 AS 号写对了吗?R4 在 AS200,所以是对的;R4 的peer 10.5.5.5 as-number 300也是对的;
  • 哦!发现了!R4 的 LoopBack1 地址是 10.4.4.4/32,R5 的 LoopBack1 地址是 10.5.5.5/32,R4 的静态路由是10.5.5.5/32 45.1.1.5,R5 的静态路由是10.4.4.4/32 45.1.1.4,是对的。那为什么邻居建立不了?排查 BGP 的 debug 信息,发现 R4 发送的 BGP 报文,源地址是 LoopBack1 的 10.4.4.4,目的地址是 10.5.5.5,R5 收到后,会检查是否配置了peer 10.4.4.4,R5 确实配置了,那为什么?哦!R5 的peer 10.4.4.4 as-number 200,R4 的 BGP 进程号是 200,是对的,但是 R5 的 BGP 配置中,ipv4-family unicast下,peer 10.4.4.4 enable是配置了的,没问题。最后发现:R4 的peer 10.5.5.5 connect-interface LoopBack1,配置正确;R5 的peer 10.4.4.4 connect-interface LoopBack1,也正确。原来只是因为实验环境中设备反应慢,多等了一会,邻居就建立起来了,属于 "假故障"。

4. 解决全网互通问题

邻居都建立后,发现 R1 ping 不通 R5 的 5.5.5.5,排查路由:

  • R1 的路由表:默认路由指向 12.1.1.2(R2),BGP 学到了 R2 发来的路由,包括 R5 的 5.5.5.5;
  • R2 的路由表:BGP 学到了 R1 的 1.1.1.1 和 R4 发来的 R5 的 5.5.5.5,同时 OSPF 学到了 R4 的路由;
  • R4 的路由表:BGP 学到了 R2 发来的 R1 的 1.1.1.1 和 R5 的 5.5.5.5,OSPF 学到了 AS200 内的所有路由;
  • R5 的路由表:默认路由指向 45.1.1.4(R4),BGP 学到了 R4 发来的 R1 的 1.1.1.1;
  • 关键问题:R2 向 R1 发送 BGP 路由时,下一跳是自己,R1 收到后,会把下一跳设为 12.1.1.2,所以 R1 访问 5.5.5.5 时,会发给 R2,R2 发给 R4,R4 发给 R5,R5 返回时,根据默认路由发给 R4,R4 再发给 R2,R2 发给 R1,理论上是通的。但实际 ping 不通,排查发现 R1 的 BGP 配置中,network 1.1.1.1 255.255.255.255是正确的,R1 把自己的环回口宣告进 BGP,R2 收到后,会通过 iBGP 发给 R4,R4 发给 R5,R5 的路由表中会有 1.1.1.1 的 BGP 路由,下一跳是 10.4.4.4(R4 的 LoopBack1),R5 的静态路由里有 10.4.4.4/32 指向 45.1.1.4,所以路由是通的。最后发现是 R1 的默认路由配置正确,但 ping 的时候,R5 的返回流量,R4 发给 R2,R2 发给 R1,R1 收到后,会回复,只是因为实验中设备的 ARP 缓存问题,清一下 ARP 缓存就通了。

四、关键配置与避坑总结

1. iBGP 邻居基于环回口建立的注意事项

  • 必须保证 AS 内 IGP(OSPF/IS-IS)能学到环回口的路由,R2 和 R4 的环回口都要宣告进 OSPF;
  • 必须配置peer x.x.x.x connect-interface LoopBack0,让 BGP 报文的源地址为环回口地址;
  • 必须配置peer x.x.x.x next-hop-local,R2 把从 R1 学到的 eBGP 路由发给 R4 时,下一跳改为自己,否则 R4 收到的路由下一跳是 R1 的 12.1.1.1,而 R4 没有到 12.1.1.1 的路由,会导致路由不可达。

2. eBGP 邻居基于环回口建立的注意事项

  • 必须配置静态路由,保证两个环回口之间的 IP 可达,R4 和 R5 的 LoopBack1 需要互相配置静态路由;
  • 必须配置ebgp-max-hop,因为 eBGP 默认使用直连物理接口建立邻居,TTL 为 1,环回口之间需要多跳,所以要增大 TTL,华为设备默认是 1,需要手动配置;
  • connect-interface必须指定为对应的环回口,保证 BGP 报文的源地址是环回口地址,否则对方会拒绝建立邻居。

3. OSPF 引入 BGP 的注意事项

  • AS200 内的 R2 和 R4 都需要配置ospf 1 import-route bgp,把 BGP 路由引入 OSPF,保证 AS 内的所有设备都能学到这些路由;
  • 注意 OSPF 的router-id配置,最好手动指定为环回口地址,避免自动选举导致的问题;
  • 不要把 AS 间的直连网段(如 12.1.1.0/24、45.1.1.0/24)宣告进 OSPF,避免路由环路。

五、最终验证结果

所有邻居状态正常,全网路由可达:

  1. R1 ping 1.1.1.1、2.2.2.2、3.3.3.3、4.4.4.4、5.5.5.5 都通;
  2. R5 ping 1.1.1.1、2.2.2.2、3.3.3.3、4.4.4.4、5.5.5.5 都通;
  3. 所有 BGP 邻居状态都为 Established,OSPF 邻居状态为 Full。
相关推荐
AC赳赳老秦12 小时前
全链路自动化巡检:用 OpenClaw 实现服务器 - 应用 - 数据库全链路巡检,自动生成报告与整改建议
服务器·数据库·人工智能·深度学习·自动化·deepseek·openclaw
小村儿12 小时前
连载
前端·后端·ai编程
流浪00112 小时前
Linux基础篇(三)轻松拿捏入门级指令
linux·运维·服务器
weixin_5142531812 小时前
511-opencua-best_patch
服务器
Waay12 小时前
Linux Shell 知识点考评(三):awk文本分析(附答案)
linux·服务器·编辑器
其实防守也摸鱼12 小时前
Upload-labs:部署靶场及Pass-01实战解析
服务器·网络·安全·web安全·教程·文件上传·工具
dinl_vin13 小时前
LangChain 系列·(九):Agent——让 AI 自己做决策
前端·人工智能·langchain
孟祥_成都13 小时前
前端唯一的护城河?结合 AI 将字节组件库 Headless 化后的感想~
前端·人工智能·react.js
尽欢i13 小时前
前端大坑!文件切片上传后端总报错找不到文件名?
前端·javascript
Sylvia33.13 小时前
世界杯数据链路解析:从球场传感器到终端推送的毫秒级架构
java·前端·python·架构