Configuration BGP avec BIRD2 sur un VPS Linux
Installez BIRD2 sur Debian 12 ou Ubuntu 24.04 et configurez une session BGP pour annoncer vos propres prefixes IP. Dual-stack, filtres d'export, interfaces dummy persistantes, regles nftables et verification birdc.
BIRD est le daemon de routage maintenu par CZ.NIC. La version 2 a unifie IPv4 et IPv6 dans un seul daemon, remplace l'architecture separee BIRD/BIRD6 de la 1.x, et ajoute un langage de filtre puissant. Ce guide couvre l'installation de BIRD2 sur un VPS Linux, la configuration d'une session BGP avec votre fournisseur upstream, l'annonce de vos prefixes IP et la verification de l'ensemble.
Tous les exemples sont dual-stack (IPv4 + IPv6). Remplacez les ASN, adresses IP et prefixes d'exemple par vos propres valeurs tout au long du guide.
De quoi avez-vous besoin avant de configurer BIRD2 pour BGP ?
Avant de toucher a bird.conf, il vous faut un ASN, un espace IP alloue et un fournisseur qui propose des sessions BGP sur votre VPS. Sans ces trois elements, BIRD2 n'a rien a annoncer et personne avec qui etablir un peering.
Rassemblez ces informations aupres de votre fournisseur ou de votre allocation RIR :
| Element | Valeur d'exemple | Ou l'obtenir |
|---|---|---|
| Votre ASN | AS65400 | RIPE NCC, ARIN ou votre LIR |
| Votre prefixe IPv4 | 203.0.113.0/24 | Allocation RIR ou assignation PA du fournisseur |
| Votre prefixe IPv6 | 2001:db8:1000::/48 | Allocation RIR ou assignation PA du fournisseur |
| ASN upstream | AS64496 | Details de la session BGP du fournisseur |
| IPv4 du peer upstream | 198.51.100.1 | Details de la session BGP du fournisseur |
| IPv6 du peer upstream | 2001:db8::1 | Details de la session BGP du fournisseur |
| Votre IPv4 de peering | 198.51.100.2 | Details de la session BGP du fournisseur |
| Votre IPv6 de peering | 2001:db8::2 | Details de la session BGP du fournisseur |
| Mot de passe MD5 | (secret partage) | Convenu avec le fournisseur |
Vous devez aussi avoir publie des enregistrements ROA pour vos prefixes avant que vos routes ne passent la validation RPKI aupres des reseaux en aval. Voir pour cette configuration.
Assurez-vous que votre fournisseur a ajoute vos prefixes a ses filtres IRR. Sans cela, vos annonces seront filtrees meme si la session BGP s'etablit.
Un VPS avec au moins 1 Go de RAM suffit pour BIRD2 avec une table complete (plus d'un million de routes IPv4). Si vous n'acceptez qu'une route par defaut de votre upstream, l'utilisation memoire reste sous les 100 Mo.
Comment installer BIRD2 sur Debian 12 et Ubuntu 24.04 ?
BIRD2 est disponible dans les depots par defaut des deux distributions. Debian 12 fournit la version 2.0.12, Ubuntu 24.04 la version 2.14. Les deux fonctionnent pour du BGP de base, mais le depot officiel CZ.NIC propose BIRD 2.18 (publie en janvier 2026) avec le support BGP dynamic unnumbered, des ameliorations de performance et des correctifs recents. Utilisez le depot CZ.NIC pour les deployements en production.
Note : CZ.NIC publie les paquets BIRD2 sous le nom de projet bird2. Ne confondez pas avec le projet bird (qui ne couvre que Debian) ou bird3 (BIRD 3.x).
Installation depuis le depot CZ.NIC (recommande)
Ajoutez le depot officiel, puis installez :
sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates wget
Importez la cle GPG de CZ.NIC :
sudo wget -O /usr/share/keyrings/cznic-labs-pkg.gpg https://pkg.labs.nic.cz/gpg
Ajoutez le depot. Sur Debian 12 :
echo "deb [signed-by=/usr/share/keyrings/cznic-labs-pkg.gpg] https://pkg.labs.nic.cz/bird2 bookworm main" | sudo tee /etc/apt/sources.list.d/cznic-labs-bird.list
Sur Ubuntu 24.04 :
echo "deb [signed-by=/usr/share/keyrings/cznic-labs-pkg.gpg] https://pkg.labs.nic.cz/bird2 noble main" | sudo tee /etc/apt/sources.list.d/cznic-labs-bird.list
Installez BIRD2 :
sudo apt-get update
sudo apt-get -y install bird2
Installation depuis les depots par defaut
Si vous preferez le paquet de la distribution :
sudo apt-get update
sudo apt-get -y install bird2
Verification de l'installation
bird --version
Sortie attendue (depot CZ.NIC) :
BIRD version 2.18
Verifiez que le service tourne :
sudo systemctl status bird
BIRD demarre automatiquement apres l'installation. La configuration par defaut dans /etc/bird/bird.conf est un squelette. Vous allez la remplacer entierement dans la section suivante.
Comment est structure bird.conf pour BGP ?
Un bird.conf pret pour BGP contient cinq blocs : les parametres globaux et quatre sections de protocole (device, direct, kernel, bgp). Chaque protocole fonctionne independamment et communique via les tables de routage.
Voici le bird.conf complet pour une configuration BGP dual-stack. Lisez-le d'abord, puis les sections suivantes expliquent chaque bloc.
sudo cp /etc/bird/bird.conf /etc/bird/bird.conf.bak
sudo tee /etc/bird/bird.conf > /dev/null << 'BIRDCONF'
# /etc/bird/bird.conf - BIRD2 BGP configuration
# Replace all placeholder values with your own
log syslog all;
router id 198.51.100.2;
# Watch interface state changes
protocol device {
scan time 10;
}
# Import connected routes (needed for next-hop resolution)
protocol direct {
ipv4;
ipv6;
interface "dummy0";
interface "eth0";
}
# Sync BIRD routes to kernel routing table
protocol kernel {
ipv4 {
export all;
import all;
};
learn;
scan time 15;
merge paths on;
}
protocol kernel {
ipv6 {
export all;
import all;
};
learn;
scan time 15;
merge paths on;
}
# Define your prefixes
define OWN_V4_PREFIX = 203.0.113.0/24;
define OWN_V6_PREFIX = 2001:db8:1000::/48;
# Export filter: only announce your own prefixes
filter export_bgp_v4 {
if net = OWN_V4_PREFIX then accept;
reject;
}
filter export_bgp_v6 {
if net = OWN_V6_PREFIX then accept;
reject;
}
# Static routes for prefix origination (point to dummy0)
protocol static static_v4 {
ipv4;
route 203.0.113.0/24 via "dummy0";
}
protocol static static_v6 {
ipv6;
route 2001:db8:1000::/48 via "dummy0";
}
# BGP session with upstream provider
protocol bgp upstream1 {
description "Upstream Provider";
local 198.51.100.2 as 65400;
neighbor 198.51.100.1 as 64496;
source address 198.51.100.2;
hold time 90;
keepalive time 30;
password "your-md5-secret";
ipv4 {
import all;
export filter export_bgp_v4;
next hop self;
};
ipv6 {
import all;
export filter export_bgp_v6;
next hop self;
};
}
BIRDCONF
Definissez les permissions sur le fichier de configuration. Seuls root et l'utilisateur bird ont besoin d'y acceder :
sudo chown root:bird /etc/bird/bird.conf
sudo chmod 640 /etc/bird/bird.conf
Verifiez les permissions :
ls -la /etc/bird/bird.conf
Sortie attendue :
-rw-r----- 1 root bird 1247 Mar 19 12:00 /etc/bird/bird.conf
Parametres globaux
log syslog all;
router id 198.51.100.2;
router id doit etre une adresse IPv4 globalement unique. Utilisez l'une de vos adresses IP assignees. BIRD peut la detecter automatiquement depuis les interfaces, mais une valeur explicite est preferable.
log syslog all envoie tous les messages de log au journal systeme. Consultez-les avec journalctl -u bird -f. Si vous avez besoin d'une sortie detaillee pendant le debogage d'un protocole specifique, ajoutez temporairement debug protocols all;. Retirez-le une fois la session fonctionnelle. La journalisation en mode debug genere un volume eleve et peut remplir votre stockage journal.
Protocol device
protocol device {
scan time 10;
}
Surveille les changements d'etat des interfaces toutes les 10 secondes. Obligatoire. Sans lui, BIRD ne sait pas quand les interfaces montent ou descendent.
Protocol direct
protocol direct {
ipv4;
ipv6;
interface "dummy0";
interface "eth0";
}
Importe les routes connectees depuis les interfaces listees. BIRD en a besoin pour la resolution du next-hop. Listez uniquement les interfaces impliquees dans votre configuration BGP.
Protocol kernel
Deux blocs protocol kernel sont necessaires : un pour IPv4, un pour IPv6. Chacun synchronise sa famille d'adresses entre la table de routage de BIRD et la table du noyau Linux.
merge paths on active l'ECMP si vous avez plusieurs upstreams. learn importe les routes existantes du noyau dans BIRD.
Que fait le bloc protocol BGP ?
Le bloc protocol bgp definit une session de peering avec un voisin. Il specifie qui vous etes (local ... as), avec qui vous peerez (neighbor ... as), l'authentification (password) et quelles routes echanger (blocs channel).
Directives principales :
| Directive | Fonction |
|---|---|
local <ip> as <ASN> |
Votre IP de peering et votre ASN |
neighbor <ip> as <ASN> |
IP de peering et ASN de l'upstream |
source address <ip> |
IP source pour la connexion TCP |
hold time 90 |
Secondes avant de declarer le pair mort (3x keepalive) |
keepalive time 30 |
Intervalle entre les messages keepalive |
password "..." |
Authentification MD5 (RFC 2385) |
L'authentification MD5 protege la session BGP contre les resets TCP usurpes et les attaques par injection. Les deux cotes doivent configurer le meme mot de passe. Demandez le secret partage a votre fournisseur.
Comment configurer les canaux dual-stack IPv4 et IPv6 ?
BIRD2 gere IPv4 et IPv6 comme des canaux (channels) separes au sein du meme bloc protocol. Chaque canal a sa propre politique d'import/export :
ipv4 {
import all;
export filter export_bgp_v4;
next hop self;
};
ipv6 {
import all;
export filter export_bgp_v6;
next hop self;
};
import all accepte toutes les routes de l'upstream. En production, vous devriez aussi filtrer les imports. Voir pour des exemples de filtres d'import.
next hop self reecrit l'attribut next-hop vers votre IP de peering. Necessaire quand l'upstream attend que le trafic transite par votre adresse, ce qui est la configuration standard sur un VPS.
Si votre fournisseur utilise des sessions BGP separees pour IPv4 et IPv6 (des IP de voisin differentes par famille d'adresses), divisez-les en deux blocs protocol bgp distincts.
Comment ecrire des filtres d'export pour annoncer uniquement vos prefixes ?
Les filtres d'export controlent quelles routes BIRD envoie a l'upstream. Un filtre d'export mal configure peut laisser passer des routes que vous ne possedez pas, ce qui entrainera la coupure de votre session et potentiellement un appel du NOC de votre upstream.
Le filtre dans la configuration ci-dessus utilise une correspondance de prefixe simple :
define OWN_V4_PREFIX = 203.0.113.0/24;
filter export_bgp_v4 {
if net = OWN_V4_PREFIX then accept;
reject;
}
Ceci accepte uniquement le /24 exact. Tout le reste est rejete. Le reject a la fin est le deny par defaut.
Pour plusieurs prefixes, utilisez un set :
define OWN_V4_PREFIXES = [ 203.0.113.0/24, 198.51.100.0/24 ];
filter export_bgp_v4 {
if net ~ OWN_V4_PREFIXES then accept;
reject;
}
L'operateur ~ effectue une correspondance dans un ensemble de prefixes (prefix set). Il supporte aussi la notation par plage :
define OWN_V4_PREFIXES = [ 203.0.113.0/24{24,24} ];
Le {24,24} restreint la correspondance a exactement /24. Utilisez {24,28} pour autoriser aussi la desagregation jusqu'a /28 si vous avez besoin d'annoncer des more-specifics pour du traffic engineering.
Pour IPv6, le meme schema s'applique :
define OWN_V6_PREFIXES = [ 2001:db8:1000::/48{48,48} ];
filter export_bgp_v6 {
if net ~ OWN_V6_PREFIXES then accept;
reject;
}
Gardez toujours vos filtres d'export aussi stricts que possible. N'annoncez que ce que vous possedez, aux longueurs de prefixe exactes que vous visez. Un reject manquant a la fin de votre filtre fera utiliser a BIRD l'action par defaut du canal, qui peut etre accept. Terminez toujours par un reject explicite.
Vous pouvez tester votre filtre sans l'appliquer :
sudo birdc eval '203.0.113.0/24 ~ [ 203.0.113.0/24 ]'
Ceci retourne TRUE ou FALSE et aide a debugger la logique du filtre avant un rechargement de configuration.
Comment creer une interface dummy persistante pour l'origination de prefixes ?
BGP annonce les prefixes qui existent dans la table de routage. Vous avez besoin d'une interface avec votre prefixe assigne pour que BIRD puisse originer la route. Une interface dummy remplit ce role : elle est toujours active, n'a pas de lien physique et survit aux redemarrages quand elle est configuree via systemd-networkd.
Les commandes ephemeres ip link add sont perdues au redemarrage. Utilisez plutot systemd-networkd.
Creer le fichier .netdev
sudo tee /etc/systemd/network/10-dummy0.netdev > /dev/null << 'EOF'
[NetDev]
Name=dummy0
Kind=dummy
EOF
Creer le fichier .network
sudo tee /etc/systemd/network/10-dummy0.network > /dev/null << 'EOF'
[Match]
Name=dummy0
[Network]
Address=203.0.113.1/32
Address=2001:db8:1000::1/128
EOF
Assignez un seul /32 (ou /128 pour IPv6) de votre prefixe alloue a l'interface dummy. Cette adresse n'a pas besoin d'etre joignable de l'exterieur. Elle existe uniquement pour que BIRD ait une route connectee pour le prefixe.
Appliquer et verifier
sudo systemctl restart systemd-networkd
Attendez quelques secondes, puis verifiez :
ip addr show dummy0
Sortie attendue :
3: dummy0: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
link/ether aa:bb:cc:dd:ee:ff brd ff:ff:ff:ff:ff:ff
inet 203.0.113.1/32 scope global dummy0
valid_lft forever preferred_lft forever
inet6 2001:db8:1000::1/128 scope global
valid_lft forever preferred_lft forever
Le state UNKNOWN pour une interface dummy est normal. Cela signifie que la couche liaison n'a pas de porteuse physique a suivre, mais l'interface est UP et transmet le trafic. L'adresse MAC est generee aleatoirement par systemd-networkd et sera differente sur votre systeme.
Si vous utilisez ifupdown au lieu de systemd-networkd (verifiez avec networkctl status), vous devrez peut-etre activer systemd-networkd d'abord :
sudo systemctl enable --now systemd-networkd
Verifiez que les fichiers sont en place pour le prochain redemarrage :
ls -la /etc/systemd/network/10-dummy0.*
-rw-r--r-- 1 root root 42 Mar 19 12:00 /etc/systemd/network/10-dummy0.netdev
-rw-r--r-- 1 root root 89 Mar 19 12:00 /etc/systemd/network/10-dummy0.network
Comment securiser BGP avec des regles de pare-feu nftables ?
BGP fonctionne sur le port TCP 179. Sans regles de pare-feu, n'importe quel hote sur Internet peut tenter d'ouvrir une session BGP avec votre routeur. Les scanners automatises trouvent un port 179 ouvert en quelques heures apres la mise en ligne d'un VPS. Restreignez le port 179 a vos IP de pairs uniquement.
nftables peut ne pas etre installe par defaut sur Ubuntu 24.04. Installez-le d'abord :
sudo apt-get -y install nftables
Creer le jeu de regles nftables
sudo tee /etc/nftables.d/bgp.conf > /dev/null << 'EOF'
table inet bgp_filter {
set bgp_peers_v4 {
type ipv4_addr
elements = { 198.51.100.1 }
}
set bgp_peers_v6 {
type ipv6_addr
elements = { 2001:db8::1 }
}
chain input {
type filter hook input priority 0; policy accept;
# Allow BGP from known peers only
tcp dport 179 ip saddr @bgp_peers_v4 accept
tcp dport 179 ip6 saddr @bgp_peers_v6 accept
# Drop BGP from everyone else
tcp dport 179 drop
}
}
EOF
Ajoutez d'autres IP de pairs aux sets au fur et a mesure que vous ajoutez des upstreams. Les sets nommes permettent de mettre a jour les listes de pairs sans reecrire les regles.
Integrer avec votre configuration nftables existante
Si vous avez deja /etc/nftables.conf, incluez les regles BGP :
echo 'include "/etc/nftables.d/bgp.conf"' | sudo tee -a /etc/nftables.conf
Si vous n'avez pas encore configure nftables, creez le repertoire et chargez la configuration :
sudo mkdir -p /etc/nftables.d
sudo systemctl enable --now nftables
enable --now demarre nftables immediatement et s'assure qu'il se charge a chaque demarrage.
Appliquez les regles :
sudo nft -f /etc/nftables.d/bgp.conf
Verifier les regles
sudo nft list table inet bgp_filter
Sortie attendue :
table inet bgp_filter {
set bgp_peers_v4 {
type ipv4_addr
elements = { 198.51.100.1 }
}
set bgp_peers_v6 {
type ipv6_addr
elements = { 2001:db8::1 }
}
chain input {
type filter hook input priority filter; policy accept;
tcp dport 179 ip saddr @bgp_peers_v4 accept
tcp dport 179 ip6 saddr @bgp_peers_v6 accept
tcp dport 179 drop
}
}
nft list normalise priority 0 en priority filter et supprime les commentaires. C'est le comportement attendu.
Testez que la regle fonctionne en verifiant l'etat des connexions. Depuis le VPS :
sudo nft list ruleset | grep -c "179"
Ceci devrait retourner un nombre correspondant au nombre de regles port 179 que vous avez creees.
Confirmez aussi que le trafic BGP n'est pas bloque entre vous et votre pair. Les regles ci-dessus n'affectent que les connexions entrantes. BIRD initie les connexions sortantes vers le pair, qui sont gerees par l'entree conntrack established/related. Si vous avez une politique sortante restrictive, ajoutez :
sudo nft add rule inet bgp_filter input ct state established,related accept
Cette regle devrait deja etre dans votre jeu de regles de pare-feu de base. Si ce n'est pas le cas, ajoutez-la avant les regles BGP.
Comment appliquer la configuration BIRD2 ?
Avant de charger une nouvelle configuration, validez-la :
sudo birdc configure check
Sortie attendue :
BIRD 2.18 ready.
Reading configuration from /etc/bird/bird.conf
Configuration OK
S'il y a des erreurs de syntaxe, BIRD indique le numero de ligne et le probleme. Corrigez et reverifiez.
Appliquez la configuration :
sudo birdc configure
BIRD 2.18 ready.
Reading configuration from /etc/bird/bird.conf
Reconfigured
Vous pouvez voir Reconfiguration in progress au lieu de Reconfigured si BIRD traite encore les changements de protocole (comme l'etablissement d'une nouvelle session BGP). Les deux messages sont normaux.
BIRD applique la nouvelle configuration sans redemarrage. Les sessions existantes effectuent une reconfiguration douce (soft reconfiguration) quand c'est possible. Si vous avez change l'IP du voisin ou l'AS local, BIRD redemarre automatiquement le protocole concerne.
Pour les changements de configuration qui ne doivent pas perturber les sessions en cours (modifications de filtres, ajouts de routes statiques), utilisez :
sudo birdc reload upstream1
Ceci reapplique les filtres d'import/export aux routes existantes sans couper la session TCP.
Comment verifier votre session BGP et les annonces de routes ?
Apres avoir applique la configuration, utilisez birdc pour verifier que la session est etablie et que les routes sont annoncees. Ces commandes sont vos outils principaux de debogage.
| Commande | Ce qu'elle affiche | Quand l'utiliser |
|---|---|---|
show protocols |
Resume de l'etat des protocoles (Established, Active, etc.) | Premier controle apres un changement de config |
show protocols all upstream1 |
Details complets de la session, compteurs, timers | Debogage d'une session specifique |
show route |
Toutes les routes dans la table de BIRD | Verifier les routes recues et statiques |
show route export upstream1 |
Routes envoyees a l'upstream | Confirmer que vos prefixes sont annonces |
show route for 203.0.113.0/24 |
Meilleure route pour un prefixe donne | Tracer la selection de chemin |
show route protocol static_v4 |
Routes d'un protocole specifique | Verifier que les routes statiques sont chargees |
Verifier l'etat de la session
sudo birdc show protocols
Sortie attendue quand tout fonctionne :
BIRD 2.18 ready.
Name Proto Table State Since Info
device1 Device --- up 12:00:00.000
direct1 Direct --- up 12:00:00.000
kernel1 Kernel master4 up 12:00:00.000
kernel2 Kernel master6 up 12:00:00.000
static_v4 Static master4 up 12:00:00.000
static_v6 Static master6 up 12:00:00.000
upstream1 BGP --- up 12:00:05.000 Established
L'etat Established signifie que la session BGP est active et que les routes peuvent etre echangees. Tout autre etat indique un probleme.
Verifier les routes exportees
sudo birdc show route export upstream1
BIRD 2.18 ready.
Table master4:
203.0.113.0/24 unicast [static_v4 12:00:00.000] * (200)
dev dummy0
Table master6:
2001:db8:1000::/48 unicast [static_v6 12:00:00.000] * (200)
dev dummy0
Vos deux prefixes IPv4 et IPv6 doivent apparaitre ici. Si un prefixe manque, le filtre d'export le rejette.
Verifier les details complets de la session
sudo birdc show protocols all upstream1
Cherchez la ligne Routes: :
Routes: 2 imported, 0 filtered, 2 exported, 0 preferred
Le nombre exported doit correspondre au nombre de prefixes que vous comptez annoncer.
Verifier depuis l'exterieur
Utilisez un looking glass public pour confirmer que votre prefixe est visible sur Internet. Le NLNOG Looking Glass ou PeeringDB peuvent aider. Recherchez votre prefixe et verifiez :
- L'AS d'origine correspond au votre
- Le chemin AS (AS path) passe par votre upstream
- Aucun statut RPKI invalid n'apparait
Verifiez aussi depuis la table de routage du noyau :
ip route show | grep 203.0.113
ip -6 route show | grep 2001:db8:1000
Vous devriez voir des routes pointant vers l'interface dummy0.
Comment depanner les problemes BGP courants avec BIRD2 ?
La plupart des problemes BGP entrent dans quelques categories. Verifiez-les dans l'ordre.
Reference des etats de session BGP
| Etat | Signification | Quoi verifier |
|---|---|---|
| Idle | BIRD ne tente pas de se connecter | Erreur de configuration, protocole desactive |
| Connect | Connexion TCP en cours | Pare-feu bloquant le port 179, mauvaise IP de voisin |
| Active | Connexion TCP echouee, nouvelle tentative | Pair injoignable, pare-feu, mauvaise adresse source |
| OpenSent | TCP connecte, en attente de la reponse OPEN | Discordance MD5, mauvais ASN cote distant |
| OpenConfirm | OPEN recu, en attente du KEEPALIVE | Rarement observe, transition generalement rapide |
| Established | Session active, echange de routes | Fonctionnel |
Session bloquee en Connect ou Active
Cela signifie que TCP ne peut pas atteindre le port 179 du pair. Verifiez :
# Can you reach the peer at all?
ping -c 3 198.51.100.1
# Is port 179 open on the peer?
nc -zv 198.51.100.1 179
# Are your nftables rules blocking outbound?
sudo nft list ruleset | grep 179
# Check BIRD logs
journalctl -u bird --since "5 minutes ago" --no-pager
Causes frequentes : mauvaise source address dans le bloc BGP, le pair n'a pas encore configure son cote, ou votre pare-feu bloque les connexions sortantes.
Session bloquee en OpenSent
La connexion TCP fonctionne mais le message BGP OPEN est rejete. C'est presque toujours une discordance de mot de passe MD5. Verifiez :
- Votre
passworddans bird.conf correspond exactement a ce que le fournisseur vous a donne (sensible a la casse, attention aux espaces en fin de ligne) - Les deux cotes s'accordent sur l'ASN
Consultez les logs pour les details :
journalctl -u bird | grep -i "error\|md5\|password"
Prefixe absent de show route export
Votre prefixe existe dans la table de BIRD mais le filtre d'export ne l'accepte pas. Deboguez le filtre :
sudo birdc show route 203.0.113.0/24 all
Verifiez la source de la route. Si elle indique [device1] ou [direct1] au lieu de [static_v4], la route statique n'est pas configuree correctement. Le filtre d'export fait la correspondance sur la route, elle doit donc provenir du bon protocole.
sudo birdc show route noexport upstream1
Ceci affiche les routes que le filtre a explicitement rejetees. Si votre prefixe apparait ici, la logique du filtre contient un bug.
Prefixe annonce mais non visible sur un looking glass
Votre export fonctionne mais la route ne se propage pas. Causes possibles :
- Pas d'enregistrement ROA : votre upstream ou ses pairs filtrent les routes RPKI-invalid. Publiez d'abord les enregistrements ROA
- Filtrage IRR : votre upstream filtre sur la base des objets IRR (RIPE DB, RADB). Creez ou mettez a jour vos objets route/route6
- Limite max-prefix : votre upstream peut avoir une limite de prefixes configuree. Contactez-le si vous l'atteignez
- Delai de propagation : la convergence BGP prend quelques minutes. Attendez 5 a 10 minutes et reverifiez
Lire les logs
BIRD ecrit dans le journal systeme. Pour le depannage en temps reel :
journalctl -u bird -f
Pour les evenements de la derniere heure :
journalctl -u bird --since "1 hour ago" --no-pager
Cherchez les lignes contenant Error, BGP, session ou Received. Elles indiquent exactement ce que BIRD fait et ce qui a mal tourne.
BIRD2 vs BIRD 1.x : notes de migration
Si vous migrez depuis BIRD 1.x, les differences principales sont :
- Daemon unique : BIRD2 remplace
birdetbird6par un seul processus - Syntaxe des canaux : IPv4 et IPv6 sont configures comme des canaux (channels) a l'interieur des blocs protocol, pas comme des protocoles separes
- Syntaxe des filtres : globalement compatible, mais certaines fonctions ont change de nom. Consultez la documentation BIRD2 pour la reference complete des filtres
- Fichier de configuration : l'emplacement par defaut est passe de
/etc/bird/bird.confet/etc/bird/bird6.confa un seul/etc/bird/bird.conf - Socket birdc : un seul socket a
/run/bird/bird.ctlau lieu de sockets IPv4/IPv6 separes
Prochaines etapes
Avec votre session BGP etablie et vos prefixes annonces, plusieurs choses restent a configurer :
- Validation RPKI : configurez RTR pour valider les routes entrantes contre les donnees ROA
- Filtres d'import : filtrez les routes entrantes pour prevenir les fuites de routes et les hijacks
- Upstreams multiples : ajoutez un second bloc
protocol bgppour la redondance. Utilisezpreferencepour definir primaire/secondaire - BFD : activez le Bidirectional Forwarding Detection pour un basculement en moins d'une seconde entre upstreams
- Monitoring : exportez les metriques BIRD vers Prometheus avec bird_exporter
Pour le daemon de routage alternatif, voir . Pour le parcours BYOIP complet, commencez par le guide BYOIP.
Copyright 2026 Virtua.Cloud. Tous droits reserves. Ce contenu est une creation originale de l'equipe Virtua.Cloud. Toute reproduction, republication ou redistribution sans autorisation ecrite est interdite.
Prêt à essayer ?
Déployez votre serveur en quelques secondes. Linux, Windows ou FreeBSD.
Voir les offres VPS