ネットワークエンジニアなら誰しも御自宅でBGPフルルートを持ってみたいと思ったことはあるはずだ
だが、通常は専用線やDCでラック借りて構内接続とかだったりが必要で、個人がお勉強のために接続しようとするには割に合わないバカ高い月額費用がかかったりする。
だが、vultrというVPSならリクエストするとBGP接続させてもらうことができ、合わせてフルルートをもらうこともできるのである。
VPSで受けて自宅まで延伸すれば御自宅フルルートの完成である。
まずはvultrのページに行きアカウントを作ろう!
その後、ProductsのInstancesタブの+ボタンからDeploy New Instanceを選んででVPSインスタンスを作成する。
ルーティングデーモンとして、BIRDを動かすのであれば、一番安いメモリ1Gくらいのプランでとりあえず動く(今後経路数が増加した場合はこの限りではない)。
ルーティングデーモンとして、Quagga/FRRを動かすのであれば、メモリは2Gくらいのプランを選んでおいた方が良いだろう。
※現在IPv4:80万経路/IPv6:9万経路程度時点(2020年7月時点)
今回は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の中身
※下記はBIRD 1.6系の例です。現在BIRDは2.x系となっておりconfigの構文が異なるのでご注意ください。2024/05/15追記
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再読み込みする。
質問です。
「/etc/bird/bird.confの中身」の部分なのですが、このコンフィグはVPSに適用すればいい感じですか?
それとも自宅などの別のサーバーに適用する感じですか?
できれば通信の流れがどういうふうになるか知りたいです。
よろしくお願いします!
「/etc/bird/bird.confの中身」はVPSに適用する内容です。
通信の流れというのは、フルルートの受信前後でどのようにパケットの流れが変わるかということでしょうか?
このページの内容を実施しても、VPSでフルルートの経路を受信するだけで(ネクストホップは全経路で同じなので)、パケットの流れは何も変わらないです。
よろしくお願いします。
なるほど
VPSで受信までのことが書いてある感じですかね。
VPSからBGPを別途、自宅まで持ってきてるのかと勘違いしました。
返信ありがとうございます。
bird.confの文法が変わったみたいです。
exportとimportはipv4{ };かipv6{ };の中に入れないとエラーになりました。
BIRDのバージョンは2.xのでしょうか。
設定例はBIRDのバージョンが1.6.x系となっておりバージョンが異なるため構文が替わっているのかと思われます。
よそのブログにも書いてある通り、VULTRはBGPフルルートを選択してもVULTR側の設定がフルルートになっていないことがしばしばあるようです。Establishedになっても何も受信されない時はさっさとサポートチケットに返信する必要がありそうです。