本文へスキップ

エクイニクスでBIRD 2を使用したBGPの設定

BIRDはUnixライクシステム用のオープンソースルーティングデーモンです。お客様のサーバーとEquinix Metalネットワーク間のBGP(Border Gateway Protocol)セッションを確立するために使用できます。これは、お客様のサーバーからBGP経由でIPアドレスをアナウンスするための最小限の設定ガイドです。

本ガイドの最後には、この設定を自動化するスクリプトやヒントを含むエクイニクスラボのGitHubリポジトリへのリンクを掲載しています。

はじめに

初めて BGP を設定する場合は、Local BGP documentation で説明されている手順に従って、BIRD で設定するサーバーの Enable BGP on the ProjectCreate Local BGP Sessions を行う必要があります。

メタルコンソールでサーバーに割り当てる必要はありませんが、BGPでアドバタイズするにはIPアドレスも必要です。まだお持ちでない場合は、Equinix MetalにElastic IPをリクエストしてください。グローバルエラスティックIPの設定方法については、Global Anycast IP Addresses documentationを参照してください。

このガイドの残りの部分では、上記のセットアップが完了し、ssh または同様の方法で Linux サーバーに接続していることを前提とします。このガイドでは、OSの例としてUbuntu 24.04を使用します。このガイドの最後に、上記の前提条件が満たされていると仮定して、すべてのセットアップと設定を自動的に行うために使用できるシェルスクリプトがあります。

必要なパッケージ

このガイドでは、bird2 を使用してインストールを完了し、jq を使用してサーバーのメタデータを照会します。これらのパッケージがまだインストールされていない場合は、実行してください:

apt -y update && apt -y install bird2 jq
メモ

このインストールで指定された番号は bird2 であり、bird ではありません。末尾に番号を指定しない場合、パッケージマネージャは BIRD の古いバージョン 1.x をインストールする可能性があります。どのバージョンをインストールしたか確認するには、ターミナルで bird --version と入力してください。

ネットワークインターフェースを更新してください

まず、ループバックインターフェースを作成し、ピアにアドバタイズするIPアドレスを割り当てます。システム再起動後の永続性を確保するために/etc/network/interfacesに追加します。addressの後のIPをアドバタイズしたいIPに置き換えて、手動で追加するか、以下をコピー&ペーストしてください。

cat <<EOF >> /etc/network/interfaces
auto lo:0
iface lo:0 inet static
address 192.0.2.1
netmask 255.255.255.255
EOF

BIRDの設定

BIRDには、デーモンを起動するのに十分な最小限の設定ファイルが付属していますが、他には何もありません。BIRDには最小限の設定ファイルが付属しており、デーモンを起動するのに十分ですが、それ以外は何もありません。このファイルを当社の環境に関する情報で更新する必要がありますが、その前に、Platform Equinixのメタデータサービスを使用して情報を取得する必要があります。詳しくはBGPメタデータドキュメントをご覧ください。

このすべてを手作業で照会し、特注の設定ファイルを書くこともできるが、このガイドでは、もう少し高度なシェルのテクニックを活用して、これを少し自動化することにする。

情報収集

まず、curlを使用してメタデータサービスにクエリし、jqを使用して必要な情報だけにフィルタリングして、後で必要な変数として出力を保存します:

json=$(curl -s https://metadata.platformequinix.com/metadata)
MY_PRIVATE_IP=$(echo $json | jq -r ".network.addresses[] | select(.public == false) | .address")
MY_PRIVATE_GW=$(echo $json | jq -r '.network.addresses[] | select(.public == false and .address_family == 4).gateway')
MY_PEER_1=$(echo $json | jq -r '.bgp_neighbors[0].peer_ips[0]')
MY_PEER_2=$(echo $json | jq -r '.bgp_neighbors[0].peer_ips[1]')
MY_ASN=$(echo $json | jq -r '.bgp_neighbors[0].peer_as')

出力はすべて変数として設定されているので、ターミナルでは何も起こらないかもしれません。そのため、これをテストしたい場合は、echo $MY_ASNecho $MY_PRIVATE_GW のようなものを使用して、設定されていることを確認できます。

次に、BGP上でアドバタイズするグローバルIPアドレスを変数として保存する必要があります。以下の192.0.2.1をエクイニクスのグローバルIPまたは持参したIPに置き換えてください:

ELASTIC_IP=192.0.2.1

BIRD の設定の作成

BIRDがインストールされると、その設定ファイルは/etc/bird/bird.confに見つかり、デーモンをエラーなしで起動させるのに十分ですが、実際には何もルーティングしません。そのファイルを以下に書かれたコマンドのテキストに置き換えます。

サーバーのターミナルで以下を実行する:

cat << EOF > /etc/bird/bird.conf
# Create a filter to advertise only the Elastic IP we've chosen.
# This IP must be bound to the lo interface
filter equinix_bgp {
if net = $ELASTIC_IP/32 then accept;
}

router id $MY_PRIVATE_IP;

# Add direct routes only on ipv4 on the lo interface
protocol direct {
ipv4;
interface "lo";
}

# Import routes from kernel
protocol kernel {
scan time 20;
ipv4 {
import all;
export all;
};
}

# Static routes to reach peers via private Equinix network
# Peers always 169.254.255.1 & 169.254.255.2 on Equinix Metal
protocol static {
ipv4;
route $MY_PEER_1/32 via $MY_PRIVATE_GW;
route $MY_PEER_2/32 via $MY_PRIVATE_GW;
}

# Check for interface up/down events
protocol device {
scan time 10; # Scan interfaces every 10 seconds
}

# BGP advertisement to neighbors
# Neighbor ASN should always be 65530 on Equinix Metal
# edit password line and uncomment as needed
protocol bgp neighbor_v4_1 {
local as 65000;
neighbor $MY_PEER_1 as $MY_ASN;
#password string;
multihop 5;
ipv4 {
export filter equinix_bgp;
import all;
};
}

protocol bgp neighbor_v4_2 {
local as 65000;
multihop 5;
neighbor $MY_PEER_2 as $MY_ASN;
#password string;
ipv4 {
export filter equinix_bgp;
import all;
};
}
EOF

bird.confファイルの内容をlesscatなどで読み取って、bird.confファイルが正しく更新されたことを確認してください:

less /etc/bird/bird.conf

このファイルが前のコマンドのテキストと似ていることを確認します。もちろん、メタデータから抽出した変数が適切な場所にあることを確認してください。これらのいずれかが空白であったり、期待されるデータが含まれていない場合は、エクイニクスのプロジェクトとデバイスでBGPがIPv4で有効になっていることを確認してから、上記の「情報収集」(#gathering-information)の手順を繰り返してください。

BIRDを再起動する

設定が確認されたら、それを有効にするためにbirdサービスを再起動する必要があります。

systemctl restart bird

BGP の確認

BGPセッションが確立されたことを確認するには、Update Nowボタンを使用してエクイニクスポータルのサーバー管理ページのBGPタブを更新するか、サーバーのBIRDコンソールを使用します。

コンソールを birdc で起動すると、新しい BIRD コンソール行が表示され、コマンドを入力できるはずです:

bird>

次に show protocols を使って先ほど指定したプロトコルを表示し、近隣接続が確立されているかどうかを確認します。以下のように表示されるはずです:

bird> show protocols
Name Proto Table State Since Info
direct1 Direct --- up 20:19:06.003
kernel1 Kernel master4 up 20:19:06.003
static1 Static master4 up 20:19:06.003
device1 Device --- up 20:19:06.003
neighbor_v4_1 BGP --- up 20:19:10.579 Established
neighbor_v4_2 BGP --- up 20:19:10.700 Established
bird>

これで接続が確立され、サーバーがこのガイドの冒頭で指定したIPアドレスを表示しているはずです。pingや、このサーバーに接続するために使用するその他の方法で、これをテストすることができます。

結論

おめでとうございます!エクイニクスのネットワークを経由してBGPでグローバルIPをアドバタイズするための設定が完了しました!この作業を自動化したい場合は、エクイニクスラボのgithubにあるスクリプトをダウンロード、変更、またはその他の方法で使用することで、エクイニクスメタルデバイス上でBIRD2を自動的に設定、構成することができます。

さらに読む

このページは役に立ちましたか?