DOCKER: FRR BGP (4)

Cisco機 (C841M)へのBGP設定を行い、Raspberry PI4 (FRR)とのBGP接続を行う。Raspberry PI4はOracle CloudとBGPで接続済みなので、C841MにOracle Cloudで作ったDockerのセグメントがAdvertiseされるようになる。

BGP Topology

前回までのFRRとは異なりCiscoなのでIOSへの設定になるが設定はほとんど同じになる。まずはprefix-listとroute-mapで再配布の設定を作る。

! Cisco Config (ip prefix-list, route-map)
!
ip prefix-list BGP-RED-CON-LIST seq 5 deny 192.168.19.0/24 le 32
ip prefix-list BGP-RED-CON-LIST seq 10 deny 192.168.0.0/20 le 32
ip prefix-list BGP-RED-CON-LIST seq 100 permit 192.168.16.0/20 le 32
!
ip prefix-list BGP-RED-STATIC-LIST seq 5 deny 192.168.19.0/24 le 32
ip prefix-list BGP-RED-STATIC-LIST seq 10 deny 192.168.0.0/20 le 32
ip prefix-list BGP-RED-STATIC-LIST seq 100 permit 192.168.16.0/20 le 32
!
!
route-map BGP-RED-STATIC permit 10
 match ip address prefix-list BGP-RED-STATIC-LIST
!
route-map BGP-RED-CON permit 10
 match ip address prefix-list BGP-RED-CON-LIST
!

内部だけで使いたいセグメントや多くのネットワーク機器で初期設定になっているセグメント(192.168.0.0/24や192.168.1.0/24)を含むセグメントは再配布しないように念のためdenyを設定しておく。

BGPの設定はFRRとは少しだけ異なる。update sourceはI/Fを選択可能だが、edge部分のルーターなので省略している。(raspberry piの際はセカンダリIPを使ってBGPのneighbor設定をしたかったので設定が必須だった)

! Cisco Config (BGP)
!
router bgp 4220010002
 bgp log-neighbor-changes
 timers bgp 10 30
 redistribute connected route-map BGP-RED-CON
 redistribute static route-map BGP-RED-STATIC
 neighbor 192.168.16.3 remote-as 4220010001

無事に設定が完了すれば show ip bgp summaryでneighbor状態が確認できる。

C841M#show ip bgp sum

Neighbor        V           AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
192.168.16.3    4   4220010001    6694    7294      112    0    0 4d14h          11

show ip route や show ip bgp (show ip bgp topology *)でOracle Cloudのセグメント 172.22.100.0/24を受け取れているかを確認する。

C841M#show ip route bgp

      172.18.0.0/24 is subnetted, 2 subnets
B        172.18.3.0 [20/0] via 192.168.16.3, 00:16:37
B        172.18.20.0 [20/0] via 192.168.16.3, 00:16:37

      172.22.0.0/24 is subnetted, 2 subnets
B        172.22.100.0 [20/0] via 192.168.16.3, 00:23:21

      172.27.0.0/24 is subnetted, 3 subnets
B        172.27.1.0 [20/0] via 192.168.16.3, 3d22h
B        172.27.5.0 [20/0] via 192.168.16.3, 22:36:42
B        172.27.7.0 [20/0] via 192.168.16.3, 3d23h

B     192.168.32.0/24 [20/0] via 192.168.16.3, 3d23h
B     192.168.36.0/24 [20/0] via 192.168.16.3, 3d23h
B     192.168.37.0/24 [20/0] via 192.168.16.3, 3d23h
B     192.168.40.0/24 [20/0] via 192.168.16.3, 3d23h

ルーティングテーブルにはBGPで受け取った172.22.100.0が採用されていることが確認できる。show ip bgp topologyの抜粋は次。

#show ip bgp

     Network          Next Hop            Metric LocPrf Weight Path
 *>  172.22.100.0/24  192.168.16.3                           0 4220010001 4210030001 65535 65535 ?
 *>  172.27.5.0/24    192.168.16.3             0             0 4220010001 ?

172.22.100.0/24は Oracle CloudでIncompleteとして生成されておりOUT時に65535のASを2回足されている。経路としてはOracle Cloudに設定したAS 421003001、Raspberry PIに設定したAS 4220010001を通って配布されてきたことが確認できる。

現状ではOSFP@OpenVPNとBGP@WireGuardの2通りでルーティング設定を行っているが、eBGPが優先されており、WireGuardを通る経路が使われるネットワークにすることができた。

BGPの設定はWAN区間(WireGuard区間)にBFD (bidirectional forwarding detection)を設定して完了とする。