🌐

IX2215とMetalLBでBGPを導入してみる

に公開

環境

  • 東京拠点
    • IX2215: 192.168.0.1/16
    • k8sノード: 192.168.10.101-103
  • 大阪拠点
    • IX2215 10.0.0.254/16
    • k8sノード: 10.0.11.1-5

2拠点間は拠点間VPNで接続されています

BGPの構成

  • すべてAS 65000
  • 各IX2215は広報無し
  • MetalLBからの広報をIX2215で受け取ってルーティングを行う

MetalLBのセットアップ

Operatorのインストール

kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.14.9/config/manifests/metallb-native.yaml

IPPoolの設定

apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
  name: default-pool
  namespace: metallb-system
spec:
  addresses:
    - 10.154.0.0/16

BGPの設定

BGPPeerの設定

apiVersion: metallb.io/v1beta2
kind: BGPPeer
metadata:
  name: ix2215-osk-peer
  namespace: metallb-system
spec:
  myASN: 65000
  peerASN: 65000
  peerAddress: 10.0.0.254
---
apiVersion: metallb.io/v1beta2
kind: BGPPeer
metadata:
  name: ix2215-tky-peer
  namespace: metallb-system
spec:
  myASN: 65000
  peerASN: 65000
  peerAddress: 192.168.0.1

BGP Advertisementの設定

apiVersion: metallb.io/v1beta1
kind: BGPAdvertisement
metadata:
  name: bgp-advertisement
  namespace: metallb-system
spec:
  ipAddressPools:
    - default-pool

IX2215の設定

TKY-MAIN# enable-config
TKY-MAIN(config)# router bgp 65000
TKY-MAIN(config-bgp)# neighbor 192.168.10.101 remote-as 65000
TKY-MAIN(config-bgp)# neighbor 192.168.10.102 remote-as 65000
TKY-MAIN(config-bgp)# neighbor 192.168.10.103 remote-as 65000
TKY-MAIN(config-bgp)# neighbor 10.0.11.1 remote-as 65000     
TKY-MAIN(config-bgp)# neighbor 10.0.11.2 remote-as 65000
TKY-MAIN(config-bgp)# neighbor 10.0.11.3 remote-as 65000
TKY-MAIN(config-bgp)# neighbor 10.0.11.4 remote-as 65000

各ノードをbgpのneighborとして設定します
少し待ってからshow ip routeを実行すると

TKY-MAIN(config-bgp)# show ip route
IP Routing Table - 16 entries, 3 hidden, 2029 frees
Entries: 2 Connected, 3 Static, 0 RIP, 0 OSPF, 11 BGP
Codes: C - Connected, S - Static, R - RIP, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2, B - BGP
       * - Candidate default, s - Summary
Timers: Age
S*   0.0.0.0/0 [1/1] is directly connected, Tunnel0.0, 73d5h9m16s
     10.0.0.0/8 is subnetted, 12 subnets
S      10.0.0.0/16 [1/1] is directly connected, Tunnel1.0, 52d2h36m7s
B      10.154.0.0/32 [200/0] via 192.168.10.101, GigaEthernet2.0, 0:00:19
B      10.154.0.1/32 [200/0] via 192.168.10.101, GigaEthernet2.0, 0:00:19
B      10.154.0.2/32 [200/0] via 192.168.10.101, GigaEthernet2.0, 0:00:19
B      10.154.0.3/32 [200/0] via 192.168.10.101, GigaEthernet2.0, 0:00:19
B      10.154.0.4/32 [200/0] via 192.168.10.101, GigaEthernet2.0, 0:00:19
B      10.154.0.5/32 [200/0] via 192.168.10.101, GigaEthernet2.0, 0:00:19
B      10.154.0.6/32 [200/0] via 192.168.10.101, GigaEthernet2.0, 0:00:19
B      10.154.0.7/32 [200/0] via 192.168.10.101, GigaEthernet2.0, 0:00:19
B      10.154.0.8/32 [200/0] via 192.168.10.101, GigaEthernet2.0, 0:00:19
B      10.154.0.9/32 [200/0] via 192.168.10.101, GigaEthernet2.0, 0:00:19
B      10.154.254.1/32 [200/0] via 192.168.10.101, GigaEthernet2.0, 0:00:19
     yyy.yyy.yyy.yyy/8 is subnetted, 1 subnets
S      yyy.yyy.yyy.yyy/32 [1/1] is directly connected, Tunnel0.0, 73d5h9m16s
     xxx.xxx.xxx.xxx/16 is subnetted, 1 subnets
C      xxx.xxx.xxx.xxx/32 [0/0] is directly connected, GigaEthernet0.1, 69d16h4m31s
C    192.168.0.0/16 [0/0] is directly connected, GigaEthernet2.0, 75d1h18m24s

Bで始まるルートが認識されていることが確認できます

もう一台も同様に設定すれば完了です

参考文献

https://metallb.universe.tf/installation/
https://metallb.universe.tf/configuration/_advanced_bgp_configuration/
https://blog.framinal.life/entry/2020/04/16/022042
https://changineer.info/network/nec_ix/nec_ix_routing_bgp.html

Discussion