拓扑

知识点
- 用loopback 地址建立 Full mesh
- 从eBGP (R5) 向 iBGP (R4)宣告路由的时候,下一跳地址不会变化(保留为10.45.1.2)。所以需要把eBGP 直连的网段,通过IGP宣告进 iBGP。否则BGP路由无法通过Validity,进而不会被加载进路由表,也不会被宣告给邻居
目标
- 将R1 和 R5 的环回地址(模拟eBGP 路由)互相宣告给对方
步骤
配置
- 各接口IP地址,包括 Loopback
- R2,R3,R4 上配置OSPF,此时可以先不宣告 Loopback
- 在所有R上配置 BGP,在iBGP 上使用 Loopback 地址作为 Peering 地址
#R1
router bgp 65100
bgp log-neighbor-changes
network 192.168.1.1 mask 255.255.255.255
neighbor 10.12.1.2 remote-as 65200
#R2
router bgp 65200
bgp log-neighbor-changes
neighbor 10.12.1.1 remote-as 65100
neighbor 192.168.3.3 remote-as 65200
neighbor 192.168.3.3 update-source Loopback0
neighbor 192.168.4.4 remote-as 65200
neighbor 192.168.4.4 update-source Loopback0
#R3
router bgp 65200
bgp log-neighbor-changes
neighbor 192.168.2.2 remote-as 65200
neighbor 192.168.2.2 update-source Loopback0
neighbor 192.168.4.4 remote-as 65200
neighbor 192.168.4.4 update-source Loopback0
#R4
router bgp 65200
bgp log-neighbor-changes
neighbor 10.45.1.2 remote-as 65300
neighbor 192.168.2.2 remote-as 65200
neighbor 192.168.2.2 update-source Loopback0
neighbor 192.168.3.3 remote-as 65200
neighbor 192.168.3.3 update-source Loopback0
#R5
router bgp 65300
bgp log-neighbor-changes
network 192.168.5.5 mask 255.255.255.255
neighbor 10.45.1.1 remote-as 65200
校验
- 在R2上可以看到和R1 有建立连接,但是R3、R4无法建立连接,为什么 —— 因为这里我们用了Loopback 地址,而R3、R4的Loopback地址是不可达的,所以底层连接无法建立。 需要在R2、R3、R4各自的OSPF进程里宣告对应的环回地址。之后就可以正常建立连接。


- 此时回到R2,发现192.168.5.5 在BGP的RIB表中,但是没在路由表中。因为在执行 Validity 会发现 10.45.1.2 不可达。没有告知R2 如何 去往10.45.1.2. 没有通过Validity,所以不会写入自己的路由表,也不会对外宣告

- 查看具体的 BGP RIB 条目,也提示 inaccessible

- 在R1上可以看到,R2 也没有把192.168.5.5 这条路由传递给R1

解决办法
- 第1种方法,在R4 上把10.45.1.0 宣告进OSPF。(对称地,R2也需要宣告10.12.1.0,否则R4、R5 也是同样的问题)。之后R2 通过OSPF知道去到R4的路径,查看具体的BGP 路由条目,状态也从 inaccessable 变成了 metric 2. 同时R1上也得到了去到192.168.5.5 的

