Linuxで手っ取り早くBGPを使うためのBIRDセットアップ


BIRDとは

BIRDはLinux等で動作するBGPやRIPなどのルーティングプロトコルを実装したプログラムです。2021年4月時点で2.0系と1.6系の両系列がメンテナンスされています。
フリーで利用可能な選択肢としてOSレベルで動作するVyOSなどがありますが、そちらと比較してパフォーマンスは劣る一方で、既存のアプリケションと共存する形でソフトウェアとして導入できる点がメリット。個人的には超簡易にBGPの検証を行う際にも使えるかと思っています。
本記事では、現在主流の2.0系を利用して、Ubuntu20.04上でBGPを動作させ、サーバと直接接続されたセグメントを広告+網側からの経路を受け取る機能を機能を持った簡易的なルータを動作させるところまで備忘録的にまとめています。

BIRD2.0導入手順

apt経由でBIRDをインストール

$ sudo apt update
$ sudo apt install bird2

BIRD設定

以下の設定例の通りに書き換え

  • local AS: 65001(Ubuntu側の所属するAS)
  • remote AS: 65002(対向側ルータの所属するAS)
  • router id: 172.16.1.1(Ubuntu側のIPアドレス)
  • neighbor ip: 172.16.1.2(対向側ルータのIPアドレス)
  • bgp:
    • (export): すべて(birdで保有する経路 = interface"eth0"のdirect経路のみ)
    • (import): すべて
$ sudo vim /etc/bird/bird.conf
/etc/bird/bird.conf
log syslog all;
router id 172.16.1.1;
protocol device {
    scan time 10;
}
protocol kernel {
    scan time 10;
    ipv4 {
        export filter {
            if proto = "direct1" then reject;
            accept;
        };
    };
}
protocol direct direct1 {
    ipv4;
    interface "eth0";
}
protocol bgp {
    ipv4 {
        import all;
        export all;
    };
    local as 65001;
    neighbor 172.16.1.2 as 65002;
}
$ sudo systemctl restart bird
# うまく行かない場合再起動

ステータス確認

$ sudo birdc
>bird
show protocol all # bgp neighborとの接続がESTABLISHEDになっているか
show route # 経路配信、受領できているか
[ctrl+c]
$ ip route # birdによるbgpの経路がルーティングテーブルに乗っているか

ip_forward設定

Ubuntuではデフォルトでルーティング機能が無効化されているため、
/etc/sysctl.conf 内の net.ipv4.ip_forward = 0net.ipv4.ip_forward = 1に変更

参考リンク