御自宅でフルルート

ネットワークエンジニアなら誰しも御自宅でBGPフルルートを持ってみたいと思ったことはあるはずだ


だが、通常は専用線やDCでラック借りて構内接続とかだったりが必要で、個人がお勉強のために接続しようとするには割に合わないバカ高い月額費用がかかったりする。

だが、vultrというVPSならリクエストするとBGP接続させてもらうことができ、合わせてフルルートをもらうこともできるのである。

VPSで受けて自宅まで延伸すれば御自宅フルルートの完成である。


まずはvultrのページに行きアカウントを作ろう!

その後、ProductsのInstancesタブの+ボタンからDeploy New Instanceを選んででVPSインスタンスを作成する。

ルーティングデーモンとして、BIRDを動かすのであれば、一番安いメモリ1Gくらいのプランでとりあえず動く(今後経路数が増加した場合はこの限りではない)。

ルーティングデーモンとして、Quagga/FRRを動かすのであれば、メモリは2Gくらいのプランを選んでおいた方が良いだろう。

※現在IPv4:80万経路/IPv6:9万経路程度時点

今回はHigh Frequency 1024 MBでUbuntu 20.04を選んだ。

1つ以上インスタンスを作成するとProductsのNetworkタブのBGPの項目からBGPセッションをVPS側ルータ接続してもらうためのリクエストができるようになる。

通常の用途としてはサーバの代表IPアドレスを動的に持つためのBGP接続のようだがオプションでfulltable(フルルート)を送ってもらうことができる。
なお、マルチホップ接続で上位ルータも一台しかないため興味以外でフルルートをもらう意味はあまりないように思う。

申請に際して、AS番号はプライベートASのアサインしてもらうにチェックをしておく(たしかデフォルトでチェックされている)。

理由を書く欄があるが、「Survey observation such as full table monitoring of BGP routes」(BGPルートのフルテーブルモニタリングなどの調査観測)とか適当に書いたら秒で通った。
英語できない民なので英語が合ってるのかはしらん

Routesの項目はfull tableを選ぶ。

※項目はうろ覚え…

申請を送ると自動的にチケットが作られて秒(数分以内)で申請が受理されるはずです。

申請が通ると、ProductsのInstancesタブのVPSインスタンスをクリックした先にBGPのタブが増えており自ホスト用のAS番号やパスワード、接続先などが確認できるようになる。

なお、VPSを起動中の場合は一度インスタンスを再起動する必要がある。

今回はUbuntuにBIRD(apt install bird)をインストールした。

/etc/bird/bird.confの中身

router id AA.BB.CC.DD;

protocol kernel {
        scan time 60;
        import none;
#       export all;   # Actually insert routes into the kernel routing table
}

protocol device {
        scan time 60;
}

protocol static {
        route 169.254.169.254/32 via "ens3";
}

protocol bgp vultr
{
        local as 64XXX;
        source address AA.BB.CC.DD;
        import all;
        export none;
        graceful restart on;
        multihop 2;
        neighbor 169.254.169.254 as 64515;
        password "ZZZZZZZZZZZZZZZZ";
}

申請が通るとsample configが観れるようになるが当方は上記のようにしている
router idとsource addressは自分のグローバルIPアドレスに書き換える

サンプルではexport allになっているが広報する経路はないのでnoneにする。
importはnoneになっているので、フルルート受信するためにallにする。

Linuxのルーティングテーブルにちゃんと乗せたければprorotol kernelのexport allのコメントアウトを外す。

「$ birdc configure check」コマンドでConfiguration OKであれば

「$ birdc configure」でconfig再読み込みする。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です