LoginSignup
1
0

【ansible】FRRoutingにてBGP設定(ipv6編)してみた!

Last updated at Posted at 2023-12-23

はじめに

この記事は Ansible Advent Calendar 2023 23日目の記事です。
OSS FRRoutingを使った、BGP設定をやってみた系の内容となります。
また、昨今、IPv4が枯渇しており、状況によってはIPv6にてpeeringすることがあるかと思います。

動作環境によっては正常に動作しない場合がございます。

目的

  • BGPルートをBGPピアにアドバタイズする
  • AS間にて経路交換ができること
  • advertiseできること
  • neighbor ping疎通可能なこと

ASN番号

グローバルASはインターネットを構成する個々の独立したネットワーク(AS:自律システム)に対して割り当てられている、一意の識別番号。2バイト(16ビット)または4バイト(32ビット)の値で、各国のネットワークインフォメーションセンター(NIC)が発行している。

asn 範囲 備考
グローバルAS 1~64511 インターネット全体で一意のAS番号
プライベートAS 64512~65535 組織内部で自由に使用できるAS番号

AS番号とは

前提条件

  • ansibleを理解していること
  • BGP関連の知識があること
  • ipv6を理解していること

環境

使用したバージョンは以下のとおりです。

Device version Comments
Rockylinux 9.3 ansible, frr
ansible 2.14.9 -
python 3.9.18 ansible
FRRouting 8.3.1 -
  • FRRoutingとは
    • FRRoutingは、さまざまなIPv4およびIPv6ルーティングを実装および管理するフリー ソフトウェアです
    • プロトコルは、BGP,OSPFv2,OSPFv3,RIPv1,RIPv2,RIPng,IS-ISなどに対応しております。
    • 詳しくはFRRoutingを参照願います。

Parameters

Parameter Comments
ASN 65001 自組織
router_id 172.16.255.254
peer ASN 65010 他組織
neighbors 20xx:20xx:0:xxxx::1 他組織neighbor
advertise prefix 20xx:9xxx:0:xxxx::1 広報するprefix

構成 イメージ

詳細

1.サンプルPlaybook

- name: configure global bgp as 65001
  frr.frr.frr_bgp:
    config:
      bgp_as: 65001
      router_id: 172.16.255.254
      log_neighbor_changes: true
      neighbors:
      - neighbor: 20xx:20xx:0:xxxx::1
        remote_as: 65010

2.実行結果

 # ansible-playbook -i hosts frr.yaml

PLAY ****************************************************************************************************************

TASK [Gathering Facts] *******************************************************************************************************************************
ok:xxxxxxxxx

TASK [configure BGP] *********************************************************************************************************************************
ok:xxxxxxxxx

PLAY RECAP *******************************************************************************************************************************************
ansible_connection=network_cli : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

確認

1.neighbor状態

# show bgp summary

Neighbor                V         AS   MsgRcvd   MsgSent   TblVer  InQ OutQ  Up/Down State/PfxRcd   PfxSnt Desc
20xx:20xx:0:xxxx::1   4       65010   1564780      2273        0    0    0 1d13h48m           24        1 

Total number of neighbors 1

2.BGP受信経路確認

# show bgp ipv6 neighbors 20xx:20xx:0:xxxx::1 advertised-routes
BGP table version is 628048, local router ID is 172.16.255.254, vrf id 0
Default local pref 100, local AS 1xxx4xxx
Status codes:  s suppressed, d damped, h history, * valid, > best, = multipath,
               i internal, r RIB-failure, S Stale, R Removed
Nexthop codes: @NNN nexthop's vrf id, < announce-nh-self
Origin codes:  i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

   Network          Next Hop            Metric LocPrf Weight Path
*> 20xx:9xxx:0:xxxx::/48
                    20xx:20xx:0:xxxx::1
                                                           0 65010 ?

Total number of prefixes 1

3.別ノードよりPING確認

# ping6 -c 5 20xx:20xx:0:xxxx::1
PING 20xx:20xx:0:xxxx::1(20xx:20xx:0:xxxx::1) 56 data bytes
64 バイト応答 送信元 20xx:20xx:0:xxxx::1: icmp_seq=1 ttl=64 時間=0.887ミリ秒
64 バイト応答 送信元 20xx:20xx:0:xxxx::1: icmp_seq=2 ttl=64 時間=1.02ミリ秒
64 バイト応答 送信元 20xx:20xx:0:xxxx::1: icmp_seq=3 ttl=64 時間=1.11ミリ秒
64 バイト応答 送信元 20xx:20xx:0:xxxx::1: icmp_seq=4 ttl=64 時間=0.921ミリ秒
64 バイト応答 送信元 20xx:20xx:0:xxxx::1: icmp_seq=5 ttl=64 時間=1.10ミリ秒

--- 20xx:20xx:0:xxxx::1 ping 統計 ---
送信パケット数 5, 受信パケット数 5, 0% packet loss, time 4006ms
rtt min/avg/max/mdev = 0.887/1.005/1.108/0.089 ms

まとめ

手動にてconfigを投入することが一般的ですが、ansibleから投入したところ、正常に投入及び動作確認をすることが可能なため、今後構築の自動化などの可能性が広がりました。

番外編

グローバルASNからのprefix list作成する場合には、以下ツールを利用すると便利です。

参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0