Configuration de BGP avec BIRD 2 sur Equinix Metal
BIRD est un démon de routage open source pour les systèmes de type Unix. Il peut être utilisé pour établir des sessions Border Gateway Protocol (BGP) entre vos serveurs et le réseau Metal d'Equinix. Il s'agit d'un guide pour une configuration minimale viable permettant d'annoncer une adresse IP à partir de votre serveur via BGP.
À la fin de ce guide, vous trouverez un lien vers un dépôt GitHub d'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 local 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 faire de la publicité sur BGP, bien que vous n'ayez pas besoin de l'attribuer à un serveur dans la console Metal. Si vous n'en avez pas encore, vous pouvez demander une IP élastique à Equinix Metal. Consultez la documentation sur les adresses IP Anycast globales pour plus d'informations sur la configuration d'une IP Elastic globale.
Le reste de ce guide suppose que vous avez terminé la configuration ci-dessus et que vous vous êtes connecté à votre serveur linux avec ssh ou similaire. Ce guide utilisera Ubuntu 24.04 comme système d'exploitation d'exemple. À la fin de ce guide, vous trouverez un script shell que vous pouvez utiliser pour effectuer automatiquement toute l'installation et la configuration en supposant que les conditions préalables ci-dessus sont remplies.
Paquets requis
Ce guide aura besoin de bird2 pour compléter l'installation et utiliser jq pour interroger certaines métadonnées de nos serveurs. Si vous n'avez pas encore installé ces paquets, exécutez :
apt -y update && apt -y install bird2 jq
spécifié dans cette installation est bird2 et non bird. Si vous ne précisez pas le numéro à la fin, votre gestionnaire de paquets installera probablement l'ancienne version 1.x de BIRD. Pour vérifier quelle version vous avez installée, tapez bird --version dans le terminal.
Veuillez mettre à jour l'interface réseau.
Tout d'abord, nous allons créer une interface de bouclage et lui attribuer l'adresse IP que nous souhaitons annoncer à nos homologues. Vous voudrez l'ajouter à /etc/network/interfaces pour assurer la persistance après un redémarrage du système. Vous pouvez l'ajouter manuellement ou copier et coller le texte ci-dessous, en remplaçant l'IP après address par l'IP que vous souhaitez annoncer.
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 livré avec un fichier de configuration minimal, suffisant pour démarrer le démon, mais rien d'autre. Nous devrons mettre à jour ce fichier avec les informations relatives à notre environnement, mais d'abord, nous devrons rassembler ces informations, ce que nous pouvons faire en utilisant le service de métadonnées de la plate-forme Equinix. Vous trouverez plus d'informations dans notre [documentation sur les métadonnées BGP] (../bgp/bgp-on-equinix-metal.mdx#bgp-metadata).
Vous pouvez interroger tout cela à la main et écrire un fichier de configuration sur mesure, mais pour les besoins de ce guide, nous allons nous appuyer sur des techniques shell un peu plus avancées pour automatiser un peu tout cela.
Collecte d'informations
Tout d'abord, nous allons interroger le service de métadonnées en utilisant curl, et filtrer les informations dont nous avons besoin avec jq en sauvegardant 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 ont été définies comme des variables, il se peut que vous ne voyiez rien se produire dans le terminal. Donc, si vous voulez tester cela, vous pouvez utiliser quelque chose comme echo $MY_ASN ou echo $MY_PRIVATE_GW pour vous assurer qu'il a été défini.
Ensuite, nous devrons enregistrer l'adresse IP globale que nous voulons annoncer sur BGP en tant que variable. Remplacez 192.0.2.1 ci-dessous par l'IP globale Elastic d'Equinix ou celle que vous avez apportée avec vous :
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 est suffisant pour permettre au daemon de démarrer sans erreur, mais il n'achemine rien. Nous allons remplacer ce fichier par le texte de la commande ci-dessous.
Exécutez la commande suivante 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 votre fichier bird.conf a été correctement mis à jour en lisant son contenu avec less, cat ou similaire :
less /etc/bird/bird.conf
Vérifiez que ce fichier ressemble au texte de la commande précédente, mais bien sûr avec les variables que nous avons extraites des métadonnées aux bons endroits. Si l'une d'entre elles est vide ou ne contient pas les données attendues, assurez-vous que BGP est activé dans votre projet Equinix et sur ce dispositif spécifiquement pour IPv4, puis essayez de répéter les étapes ci-dessus à partir de Gathering Information.
Redémarrer BIRD
Une fois que votre configuration a été vérifiée, vous devez redémarrer le service Bird pour qu'elle prenne effet.
systemctl restart bird
Confirmation du BGP
Pour confirmer que des sessions BGP ont été établies, vous pouvez utiliser le bouton Update Now et actualiser l'onglet BGP de la page de gestion de votre serveur sur le portail Equinix, ou utiliser la console BIRD sur le serveur lui-même.
Démarrez la console avec birdc et vous devriez voir une nouvelle ligne de console BIRD où nous pouvons entrer quelques commandes :
bird>
Vous pouvez ensuite utiliser show protocols pour afficher les protocoles que nous venons de spécifier et voir si les connexions entre voisins ont été établies. Cela devrait ressembler à quelque chose comme :
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 annonce l'adresse IP spécifiée au début de ce guide. Vous pouvez le tester par ping ou par toute autre méthode que vous pourriez utiliser pour vous connecter à ce serveur.
Conclusion
Vous avez configuré votre serveur pour qu'il fasse de la publicité. Vous avez configuré votre serveur pour qu'il annonce une IP globale via BGP sur le réseau Equinix ! Si vous souhaitez procéder de manière plus automatisée, j'ai créé [quelques scripts dans notre organisation Equinix Labs sur github que vous pouvez télécharger, modifier ou utiliser de toute autre manière pour installer et configurer automatiquement BIRD2 sur vos dispositifs Equinix Metal.