エクイニクスサーバーでのFRR付きBGPの設定
FRRouting(FRR)は、エクイニクスメタルで利用できるBGPを含むオープンソースのインターネットルーティングプロトコルです。これは、BGP経由でお客様のサーバーからIPアドレスをアナウンスするための最小限の設定ガイドです。
サーバーのBGPメタデータから必要なBGP情報を取得し、FRR設定ファイルに書き込むプロセスを自動化するのに役立つ、エクイニクスが作成したスタータースクリプトがpackethost/network-helpersのGitHubリポジトリにあります。
はじめに
BGPを初めて設定する場合は、BGP on Equinix Metal ドキュメントを参照してください。
この例では、ローカルBGPを設定して、Equinix Metalプロジェクトに予約されているパブリックIPv4アドレスをアドバタイズしています:10.99.200.138/32.この例では、パスワードなしでEquinix MetalのBGPを設定しています。
ネットワークインターフェースの更新
サーバーにSSHでログインし、サーバーのネットワーク・インターフェイスを仮想ループバック・インターフェイスで更新する。
cat >>/etc/network/interfaces <<EOF
auto lo:0
iface lo:0 inet static
address 10.99.200.138
netmask 255.255.255.255
EOF
それからインターフェイスを立ち上げる。
ifup lo:0
FRRのインストールとBGPの有効化
それからFRRをインストールする。
apt -y update && apt -y install frr
インストールしたら、FRR の設定内で BGP を有効にする必要があります。/etc/frr/daemonsファイルを開き、bgpd=noをbgpd=yesに変更します。
隣人情報の収集
FRRには最小限のコンフィギュレーション・ファイルが付属しており、基本的な「IPアドレスをアナウンスする」機能を実現するために、いくつかの項目を追加することになる。
エクイニクスメタル上のBGP[およびローカルBGPのガイドに従って、プロジェクトとサーバーの両方でBGPを有効にすると、[サーバーのBGPメタデータに必要な情報が表示されます。
サーバーのネイバー情報を取得するには、SSHでサーバーにログインし、cURLを使ってメタデータのエンドポイントにアクセスする。
curl https://metadata.platformequinix.com/metadata | jq '.bgp_neighbors[0] | { customer_ip: .customer_ip, customer_as: .customer_as, multihop: .multihop, peer_ips: .peer_ips, peer_as: .peer_as }'
このコマンドは関連するBGP情報の塊を返す。
{
"customer_ip": "10.67.50.3",
"customer_as": 65000,
"multihop": true,
"peer_ips": [
"169.254.255.1",
"169.254.255.2"
],
"peer_as": 65530
}
また、コンフィグでスタティック・ルートを設定する必要があるので、上流ルーターへのゲートウェイのプライベートIPアドレスのために、メタデータ・エンドポイントに再度アクセスする。
curl https://metadata.platformequinix.com/metadata | jq -r '.network.addresses[] | select(.public == false and .address_family == 4) | { gateway: .gateway }'
これに対して、サーバーのIPv4ゲートウェイアドレスを取得する。
{
"gateway": "10.67.50.2"
}
FRR設定ファイルの記入
FRR がインストールされると、設定ファイルは /etc/frr/frr.conf にあります。まずは設定ファイルの例をご覧ください。
frr defaults traditional
log syslog informational
ipv6 forwarding
service integrated-vtysh-config
!
ip route 169.254.255.1/32 10.67.50.2
ip route 169.254.255.2/32 10.67.50.2
!
router bgp 65000
bgp ebgp-requires-policy
neighbor V4 peer-group
neighbor V4 remote-as 65530
neighbor V4 ebgp-multihop 5
neighbor 169.254.255.1 peer-group V4
neighbor 169.254.255.2 peer-group V4
!
address-family ipv4 unicast
redistribute connected
neighbor V4 route-map IMPORT in
neighbor V4 route-map EXPORT out
exit-address-family
!
route-map EXPORT deny 100
!
route-map EXPORT permit 1
match interface lo
!
route-map IMPORT deny 1
!
line vty
!
メタデータとフィールドのマッピングは以下の通り:
| frr.conf | metadata | value |
|---|---|---|
| router bgp | customer_as | 65000 |
| neighbor V4 remote-as | peer_as | 65530 |
| neighbor V4 ebgp-multihop 5 | multihop | if the metadata shows multihop as true then you need to add multihop to FRR |
| neighbor IP peer-group V4 | peer_ips | 169.254.255.1 and 169.254.255.2 |
また、メタデータから取得したゲートウェイアドレスを使用して、サーバからメタルのルータへのスタティックルートを設定する必要があります。
ip route <peer_ips_1>/32 <gateway>
ip route <peer_ips_2>/32 <gateway>
そして、FRRにどのネットワークインターフェイスで動作するかを指示する:
route-map EXPORT permit 1
match interface lo
最後に、設定が正しいことを確認し、FRRを再起動する:
systemctl restart frr
FRRコンフィギュレーションの検証
vtysh シェルを起動して、BGP セッションを確認できます。
vtysh
次に show bgp summary コマンドを使用します。
show bgp summary
結果は設定ファイルの情報を反映しているはずです。
IPv4 Unicast Summary (VRF default):
BGP router identifier 147.75.109.216, local AS number 65000 vrf-id 0
BGP table version 3
RIB entries 5, using 920 bytes of memory
Peers 2, using 1446 KiB of memory
Peer groups 1, using 64 bytes of memory
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd PfxSnt Desc
169.254.255.1 4 65530 6 6 0 0 0 00:02:15 0 1 N/A
169.254.255.2 4 65530 8 7 0 0 0 00:03:15 0 1 N/A
Total number of neighbors 2
サーバーが広告されたIPアドレスに到達可能になったかどうかを確認するには、コマンドラインでIPアドレスにpingを送信します。パブリックIPv4またはIPv6アドレスを告知している場合は、どのサーバーからでもpingを送信できるはずです。しかし、プライベートIPv4アドレスをアナウンスしている場合は、プライベートネットワークに接続する必要があるため、同じプロジェクトおよびメトロ内のサーバーからのみpingを送信できます(Backend Transferを有効にしている場合は、同じプロジェクトのみ)。
まとめ
ホスト上でBGPを設定すると、Equinix MetalはBGPセッションのモニタリングを提供します。詳細はBGPの監視ページをご覧ください。
同じプロセスでBIRDを使用してサーバーのBGPセッションを管理する別の例については、Configuring-bgp-with-bird.md ガイドを参照してください。
FRRはDocker経由で自動的にデプロイすることもできます。DockerによるFRRのデプロイの詳細をご覧ください。