Skip to main content

Configuration de BGP avec BIRD 2 sur Equinix Metal

BIRD est un démon de routage à code source ouvert pour les systèmes de type Unix. Il permet d'établir des sessions BGP (Border Gateway Protocol) entre vos serveurs et le réseau Equinix Metal. Ce guide décrit une configuration minimale viable pour annoncer une adresse IP depuis votre serveur via BGP.

À la fin de ce guide, vous trouverez un lien vers un référentiel GitHub Equinix Labs qui contient des scripts et des conseils utiles pour automatiser cette configuration.

Pour commencer

Si vous configurez BGP pour la première fois, vous devrez suivre les étapes décrites dans notre documentation BGP locale pour activer BGP sur le projet et créer des sessions BGP locales pour le serveur que vous configurez avec BIRD.

Vous aurez également besoin d'une adresse IP pour la diffusion via BGP, mais il n'est pas nécessaire de l'attribuer à un serveur dans la console Metal. Si vous n'en avez pas déjà une, vous pouvez demander une adresse IP élastique auprès d'Equinix Metal. Consultez la documentation sur les adresses IP Anycast globales pour plus d'informations sur la configuration d'une adresse IP élastique globale.

La suite de ce guide suppose que vous avez effectué la configuration précédente et que vous vous êtes connecté à votre serveur Linux avec ssh ou une commande similaire. Ce guide utilise Ubuntu 24.04 comme système d'exploitation d'exemple. À la fin de ce guide, vous trouverez un script shell permettant d'automatiser l'ensemble de la configuration si les prérequis mentionnés ci-dessus sont remplis.

Paquets requis

Ce guide nécessite bird2 pour l'installation et utilise jq pour interroger certaines métadonnées de notre serveur. Si ces paquets ne sont pas déjà installés, exécutez:

apt -y update && apt -y install bird2 jq
remarque

Dans cette installation, la version spécifiée est bird2 et non bird. Si vous n'indiquez pas le numéro à la fin, votre gestionnaire de paquets installera probablement l'ancienne version 1.x de BIRD. Pour vérifier la version installée, entrez bird --version dans le terminal.

Mettre à jour l'interface réseau

On va d'abord créer une interface de bouclage et lui attribuer l'adresse IP qu'on veut diffuser aux pairs. Il est conseillé de l'ajouter à /etc/network/interfaces pour s'assurer qu'il persiste après un redémarrage du système. Vous pouvez l'ajouter manuellement ou copier-coller le code ci-dessous en remplaçant l'adresse IP après address par celle que vous souhaitez diffuser.

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

Configuration de BIRD

BIRD est fourni avec un fichier de configuration minimal, suffisant pour démarrer le démon, mais rien de plus. Il nous faudra le compléter avec les renseignements relatifs à notre environnement. Pour cela, nous devons d'abord recueillir ces informations à l'aide du service de métadonnées Platform Equinix. Vous trouverez plus d'informations dans notre documentation sur les métadonnées BGP.

Vous pouvez interroger tout cela à la main et écrire un fichier de configuration sur mesure, mais pour les besoins de ce guide, nous allons exploiter des techniques de shell un peu plus avancées pour automatiser un peu cela.

Collecte d'informations

Tout d'abord, nous allons interroger le service de métadonnées en utilisant curl, puis filtrer pour ne conserver que les informations dont nous avons besoin, jq en enregistrant la sortie sous forme de variables dont nous aurons besoin plus tard:

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')

Comme toutes nos données de sortie sont stockées dans des variables, il est possible que rien ne s'affiche dans le terminal. Pour vérifier que la variable a bien été définie, vous pouvez utiliser des caractères comme echo $MY_ASN ou echo $MY_PRIVATE_GW.

Ensuite, on devra aussi enregistrer l'adresse IP globale qu'on veut diffuser via BGP comme variable. Remplacez 192.0.2.1 ci-dessous par l'adresse IP élastique globale d'Equinix ou celle que vous avez fournie:

ELASTIC_IP=192.0.2.1

Création de la configuration BIRD

Une fois BIRD installé, son fichier de configuration se trouve dans /etc/bird/bird.conf et suffit à permettre au démon de démarrer sans erreur, mais ne configure aucun routage. Nous allons remplacer ce fichier par le texte de la commande ci-dessous.

Exécutez ce qui suit dans le terminal du serveur:

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

Assurez-vous que cela a bien mis à jour votre fichier bird.conf en lisant son contenu avec less, cat ou une commande similaire:

less /etc/bird/bird.conf

Vérifiez que ce fichier ressemble au texte de la commande précédente, en y intégrant les variables extraites des métadonnées aux emplacements appropriés. Si l'un de ces champs est vide ou ne contient pas les données attendues, assurez-vous que le protocole BGP est activé dans votre projet Equinix et sur cet appareil, spécifiquement pour IPv4, puis répétez les étapes décrites dans la section Collecte d'informations.

Redémarrer BIRD

Une fois votre configuration vérifiée, vous devrez redémarrer le service Bird pour qu'elle prenne effet.

systemctl restart bird

Confirmation du BGP

Pour confirmer l'établissement des sessions BGP, vous pouvez utiliser le bouton Update Now et rafraîchir l'onglet BGP de la page de gestion de votre serveur dans le portail Equinix, ou utiliser la console BIRD directement sur le serveur.

Démarrez la console avec birdc et vous devriez voir une nouvelle ligne de console BIRD sur laquelle vous pourrez saisir des commandes:

bird>

Vous pouvez ensuite utiliser show protocols pour visualiser les protocoles que nous venons de spécifier et vérifier si les connexions de voisinage ont été établies. Le résultat devrait ressembler à ceci:

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>

Vos connexions devraient maintenant être établies et votre serveur publie l'adresse IP spécifiée au début de ce guide. Vous pouvez tester cela par ping ou toute autre méthode de connexion à ce serveur.

Conclusion

Félicitations ! Votre serveur est configuré pour diffuser une adresse IP globale via BGP sur le réseau Equinix ! Pour une automatisation plus poussée, j’ai créé [quelques scripts disponibles dans notre organisation Equinix Labs sur GitHub que vous pouvez télécharger, modifier ou utiliser pour configurer automatiquement BIRD2 sur vos appareils Equinix Metal.

Lectures complémentaires

Cette page vous a-t-elle été utile ?