本文へスキップ

エクイニクスサーバーでの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=nobgpd=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.confmetadatavalue
router bgpcustomer_as65000
neighbor V4 remote-aspeer_as65530
neighbor V4 ebgp-multihop 5multihopif the metadata shows multihop as true then you need to add multihop to FRR
neighbor IP peer-group V4peer_ips169.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のデプロイの詳細をご覧ください。

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