BIRD2 BGP-configuratie op een Linux VPS
Installeer BIRD2 op Debian 12 of Ubuntu 24.04 en configureer een BGP-sessie om uw eigen IP-prefixen aan te kondigen. Dual-stack, exportfilters, persistente dummy-interfaces, nftables-regels en birdc-verificatie.
BIRD is de routing-daemon die wordt onderhouden door CZ.NIC. Versie 2 voegde IPv4 en IPv6 samen in een enkele daemon, verving de gesplitste BIRD/BIRD6-architectuur van 1.x en introduceerde een krachtige filtertaal. Deze handleiding behandelt het installeren van BIRD2 op een Linux VPS, het configureren van een BGP-sessie met uw upstream-provider, het aankondigen van uw IP-prefixen en het verifiëren dat alles werkt.
Alle voorbeelden zijn dual-stack (IPv4 + IPv6). Vervang alle placeholder-ASN's, IP-adressen en prefixen door uw eigen waarden.
Wat heeft u nodig voordat u BIRD2 voor BGP configureert?
Voordat u aan bird.conf begint, heeft u een ASN, toegewezen IP-ruimte en een provider die BGP-sessies op uw VPS aanbiedt nodig. Zonder alle drie heeft BIRD2 niets om aan te kondigen en niemand om mee te peeren.
Verzamel de volgende gegevens van uw provider of RIR-toewijzing:
| Item | Voorbeeldwaarde | Waar te verkrijgen |
|---|---|---|
| Uw ASN | AS65400 | RIPE NCC, ARIN of uw LIR |
| Uw IPv4-prefix | 203.0.113.0/24 | RIR-toewijzing of PA-toewijzing van provider |
| Uw IPv6-prefix | 2001:db8:1000::/48 | RIR-toewijzing of PA-toewijzing van provider |
| Upstream-ASN | AS64496 | BGP-sessiegegevens van provider |
| Upstream peer IPv4 | 198.51.100.1 | BGP-sessiegegevens van provider |
| Upstream peer IPv6 | 2001:db8::1 | BGP-sessiegegevens van provider |
| Uw peering IPv4 | 198.51.100.2 | BGP-sessiegegevens van provider |
| Uw peering IPv6 | 2001:db8::2 | BGP-sessiegegevens van provider |
| MD5-wachtwoord | (gedeeld geheim) | Afgesproken met provider |
U heeft ook ROA-records nodig die voor uw prefixen zijn gepubliceerd voordat uw routes RPKI-validatie bij downstream-netwerken zullen passeren. Zie voor die configuratie.
Zorg ervoor dat uw provider uw prefixen heeft toegevoegd aan hun IRR-filters. Zonder dat worden uw aankondigingen gefilterd, zelfs als de BGP-sessie tot stand komt.
Een VPS met minimaal 1 GB RAM is voldoende voor BIRD2 met een volledige tabel (meer dan 1 miljoen IPv4-routes). Als u alleen een default route van uw upstream accepteert, blijft het geheugengebruik onder de 100 MB.
Hoe installeert u BIRD2 op Debian 12 en Ubuntu 24.04?
BIRD2 is beschikbaar in de standaard repositories van beide distributies. Debian 12 levert versie 2.0.12, Ubuntu 24.04 levert 2.14. Beide werken voor basis-BGP, maar de officiële CZ.NIC-repository biedt BIRD 2.18 (uitgebracht januari 2026) met BGP dynamic unnumbered-ondersteuning, prestatieverbeteringen en recente bugfixes. Gebruik de CZ.NIC-repo voor productieomgevingen.
Let op: CZ.NIC publiceert BIRD2-pakketten onder de projectnaam bird2. Verwar dit niet met het bird-project (dat alleen Debian dekt) of bird3 (BIRD 3.x).
Installeren vanuit de CZ.NIC-repository (aanbevolen)
Voeg de officiële repository toe en installeer vervolgens:
sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates wget
Importeer de CZ.NIC GPG-sleutel:
sudo wget -O /usr/share/keyrings/cznic-labs-pkg.gpg https://pkg.labs.nic.cz/gpg
Voeg de repository toe. Op 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
Op 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
Installeer BIRD2:
sudo apt-get update
sudo apt-get -y install bird2
Installeren vanuit standaard repositories
Als u de voorkeur geeft aan het distributiepakket:
sudo apt-get update
sudo apt-get -y install bird2
Verificeer de installatie
bird --version
Verwachte uitvoer (CZ.NIC-repo):
BIRD version 2.18
Controleer of de service draait:
sudo systemctl status bird
BIRD start automatisch na installatie. De standaardconfiguratie in /etc/bird/bird.conf is een skelet. U vervangt deze volledig in het volgende gedeelte.
Hoe is bird.conf gestructureerd voor BGP?
Een BGP-ready bird.conf heeft vijf blokken: globale instellingen en vier protocolsecties (device, direct, kernel, bgp). Elk protocol draait onafhankelijk en communiceert via routeringstabellen.
Hier is de volledige bird.conf voor een dual-stack BGP-configuratie. Lees deze eerst door; de secties hieronder leggen elk blok uit.
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
Stel de rechten in op het configuratiebestand. Alleen root en de bird-gebruiker hebben toegang nodig:
sudo chown root:bird /etc/bird/bird.conf
sudo chmod 640 /etc/bird/bird.conf
Verificeer de rechten:
ls -la /etc/bird/bird.conf
Verwacht:
-rw-r----- 1 root bird 1247 Mar 19 12:00 /etc/bird/bird.conf
Globale instellingen
log syslog all;
router id 198.51.100.2;
router id moet een wereldwijd uniek IPv4-adres zijn. Gebruik een van uw toegewezen IP-adressen. BIRD kan dit automatisch detecteren van interfaces, maar expliciet instellen is beter.
log syslog all stuurt alle logberichten naar het systeemjournaal. Lees ze met journalctl -u bird -f. Als u uitgebreide uitvoer nodig heeft tijdens het debuggen van een specifiek protocol, voeg dan tijdelijk debug protocols all; toe. Verwijder dit zodra de sessie werkt. Debug-level logging genereert een hoog volume en kan uw journalopslag vullen.
Protocol device
protocol device {
scan time 10;
}
Controleert elke 10 seconden op wijzigingen in de interfacestatus. Vereist. Zonder dit weet BIRD niet wanneer interfaces omhoog of omlaag gaan.
Protocol direct
protocol direct {
ipv4;
ipv6;
interface "dummy0";
interface "eth0";
}
Importeert connected routes van de genoemde interfaces. BIRD heeft deze nodig voor next-hop-resolutie. Vermeld alleen de interfaces die betrokken zijn bij uw BGP-configuratie.
Protocol kernel
Twee kernel-protocolblokken zijn nodig: een voor IPv4, een voor IPv6. Elk synchroniseert zijn adresfamilie tussen BIRD's routeringstabel en de Linux-kerneltabel.
merge paths on schakelt ECMP in als u meerdere upstreams heeft. learn importeert bestaande kernelroutes in BIRD.
Wat doet het protocol BGP-blok?
Het protocol bgp-blok definieert een peeringsessie met een neighbor. Het specificeert wie u bent (local ... as), met wie u peert (neighbor ... as), authenticatie (password) en welke routes uitgewisseld worden (channel-blokken).
Belangrijke velden:
| Directive | Doel |
|---|---|
local <ip> as <ASN> |
Uw peering-IP en ASN |
neighbor <ip> as <ASN> |
Peering-IP en ASN van upstream |
source address <ip> |
Bron-IP voor de TCP-verbinding |
hold time 90 |
Seconden voordat peer als dood wordt beschouwd (3x keepalive) |
keepalive time 30 |
Interval tussen keepalive-berichten |
password "..." |
MD5-authenticatie (RFC 2385) |
MD5-authenticatie beschermt de BGP-sessie tegen gespoofde TCP-resets en injectieaanvallen. Beide zijden moeten hetzelfde wachtwoord configureren. Vraag uw provider naar het gedeelde geheim.
Hoe configureert u dual-stack IPv4- en IPv6-kanalen?
BIRD2 behandelt IPv4 en IPv6 als afzonderlijke kanalen (channels) binnen hetzelfde protocolblok. Elk kanaal heeft zijn eigen import/export-beleid:
ipv4 {
import all;
export filter export_bgp_v4;
next hop self;
};
ipv6 {
import all;
export filter export_bgp_v6;
next hop self;
};
import all accepteert alle routes van de upstream. In productie zou u imports ook moeten filteren. Zie voor voorbeelden van importfilters.
next hop self herschrijft het next-hop-attribuut naar uw peering-IP. Vereist wanneer de upstream verwacht dat verkeer via uw adres loopt, wat de standaardconfiguratie is op een VPS.
Als uw provider aparte BGP-sessies draait voor IPv4 en IPv6 (verschillende neighbor-IP's per adresfamilie), splits ze dan op in twee protocol bgp-blokken.
Hoe schrijft u exportfilters om alleen uw prefixen aan te kondigen?
Exportfilters bepalen welke routes BIRD naar de upstream stuurt. Een verkeerd geconfigureerd exportfilter kan routes lekken die u niet bezit, wat ertoe leidt dat uw sessie wordt afgesloten en u mogelijk een telefoontje van de NOC van uw upstream ontvangt.
Het filter in de bovenstaande configuratie gebruikt een eenvoudige prefix-match:
define OWN_V4_PREFIX = 203.0.113.0/24;
filter export_bgp_v4 {
if net = OWN_V4_PREFIX then accept;
reject;
}
Dit accepteert alleen het exacte /24. Al het andere wordt geweigerd. De reject aan het einde is de standaard deny.
Voor meerdere prefixen gebruikt u een 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;
}
De ~-operator matcht tegen een prefix-set. Hij ondersteunt ook range-notatie:
define OWN_V4_PREFIXES = [ 203.0.113.0/24{24,24} ];
De {24,24} beperkt de match tot precies /24. Gebruik {24,28} om ook deaggregatie tot /28 toe te staan als u more-specifics moet aankondigen voor traffic engineering.
Voor IPv6 geldt hetzelfde patroon:
define OWN_V6_PREFIXES = [ 2001:db8:1000::/48{48,48} ];
filter export_bgp_v6 {
if net ~ OWN_V6_PREFIXES then accept;
reject;
}
Houd exportfilters altijd zo strak mogelijk. Kondig alleen aan wat u bezit, met de exacte prefixlengtes die u bedoelt. Een ontbrekende reject aan het einde van uw filter zorgt ervoor dat BIRD de standaardactie voor het kanaal gebruikt, en dat kan accept zijn. Eindig altijd met een expliciete reject.
U kunt uw filter testen zonder het toe te passen:
sudo birdc eval '203.0.113.0/24 ~ [ 203.0.113.0/24 ]'
Dit retourneert TRUE of FALSE en helpt bij het debuggen van filterlogica voordat u de configuratie herlaadt.
Hoe maakt u een persistente dummy-interface voor prefix origination?
BGP kondigt prefixen aan die in de routeringstabel bestaan. U heeft een interface nodig waaraan uw prefix is toegewezen zodat BIRD de route kan origineren. Een dummy-interface dient dit doel: hij is altijd up, heeft geen fysieke link en overleeft reboots wanneer geconfigureerd via systemd-networkd.
Kortstondige ip link add-commando's gaan verloren bij een reboot. Gebruik in plaats daarvan systemd-networkd.
Maak het .netdev-bestand aan
sudo tee /etc/systemd/network/10-dummy0.netdev > /dev/null << 'EOF'
[NetDev]
Name=dummy0
Kind=dummy
EOF
Maak het .network-bestand aan
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
Wijs een enkel /32 (of /128 voor IPv6) uit uw toegewezen prefix toe aan de dummy-interface. Dit adres hoeft niet bereikbaar te zijn van buitenaf. Het bestaat alleen zodat BIRD een connected route heeft voor het prefix.
Toepassen en verifiëren
sudo systemctl restart systemd-networkd
Wacht een paar seconden en controleer dan:
ip addr show dummy0
Verwachte uitvoer:
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
De state UNKNOWN voor een dummy-interface is normaal. Het betekent dat de linklaag geen fysieke carrier heeft om te volgen, maar de interface is UP en forwardt verkeer. Het MAC-adres wordt willekeurig gegenereerd door systemd-networkd en zal verschillen op uw systeem.
Als u ifupdown draait in plaats van systemd-networkd (controleer met networkctl status), moet u mogelijk eerst systemd-networkd inschakelen:
sudo systemctl enable --now systemd-networkd
Controleer of de bestanden op hun plaats staan voor de volgende reboot:
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
Hoe beveiligt u BGP met nftables-firewallregels?
BGP draait op TCP-poort 179. Zonder firewallregels kan elke host op het internet proberen een BGP-sessie te openen met uw router. Geautomatiseerde scanners vinden een open poort 179 binnen enkele uren nadat een VPS live gaat. Beperk poort 179 tot alleen uw peer-IP's.
nftables is mogelijk niet standaard geïnstalleerd op Ubuntu 24.04. Installeer het eerst:
sudo apt-get -y install nftables
Maak de nftables-regelset aan
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
Voeg meer peer-IP's toe aan de sets naarmate u upstreams toevoegt. Named sets laten u peerlijsten bijwerken zonder regels te herschrijven.
Integreren met uw bestaande nftables-configuratie
Als u al een /etc/nftables.conf heeft, neem dan de BGP-regels op:
echo 'include "/etc/nftables.d/bgp.conf"' | sudo tee -a /etc/nftables.conf
Als u nftables nog niet heeft geconfigureerd, maak dan de directory aan en laad de configuratie:
sudo mkdir -p /etc/nftables.d
sudo systemctl enable --now nftables
enable --now start nftables direct en zorgt ervoor dat het bij elke boot wordt geladen.
Pas de regels toe:
sudo nft -f /etc/nftables.d/bgp.conf
Verifieer de regels
sudo nft list table inet bgp_filter
Verwachte uitvoer:
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 normaliseert priority 0 naar priority filter en verwijdert opmerkingen. Dit is verwacht gedrag.
Test of de regel werkt door de verbindingsstatus te controleren. Vanaf de VPS:
sudo nft list ruleset | grep -c "179"
Dit zou een telling moeten retourneren die overeenkomt met het aantal poort 179-regels dat u heeft aangemaakt.
Bevestig ook dat BGP-verkeer niet wordt geblokkeerd tussen u en uw peer. De bovenstaande regels beïnvloeden alleen inkomende verbindingen. BIRD initieert uitgaande verbindingen naar de peer, die worden afgehandeld door de established/related conntrack-entry. Als u een restrictief uitgaand beleid heeft, voeg dan toe:
sudo nft add rule inet bgp_filter input ct state established,related accept
Dit zou al in uw basis-firewallregelset moeten staan. Als dat niet het geval is, voeg het dan toe voor de BGP-regels.
Hoe past u de BIRD2-configuratie toe?
Valideer de configuratie voordat u deze laadt:
sudo birdc configure check
Verwachte uitvoer:
BIRD 2.18 ready.
Reading configuration from /etc/bird/bird.conf
Configuration OK
Als er syntaxfouten zijn, rapporteert BIRD het regelnummer en het probleem. Herstel en controleer opnieuw.
Pas de configuratie toe:
sudo birdc configure
BIRD 2.18 ready.
Reading configuration from /etc/bird/bird.conf
Reconfigured
U ziet mogelijk Reconfiguration in progress in plaats van Reconfigured als BIRD nog protocolwijzigingen verwerkt (zoals het opzetten van een nieuwe BGP-sessie). Beide zijn normaal.
BIRD past de nieuwe configuratie toe zonder te herstarten. Bestaande sessies voeren een soft reconfiguration uit wanneer mogelijk. Als u het neighbor-IP of de lokale AS heeft gewijzigd, herstart BIRD het betreffende protocol automatisch.
Voor configuratiewijzigingen die lopende sessies niet mogen verstoren (filterwijzigingen, toevoegingen van statische routes), gebruik:
sudo birdc reload upstream1
Dit past import/export-filters opnieuw toe op bestaande routes zonder de TCP-sessie af te breken.
Hoe verifieert u uw BGP-sessie en route-aankondigingen?
Gebruik na het toepassen van de configuratie birdc om te controleren of de sessie is opgezet en routes worden aangekondigd. Deze commando's zijn uw primaire debugging-tools.
| Commando | Wat het toont | Wanneer te gebruiken |
|---|---|---|
show protocols |
Protocolstatusoverzicht (Established, Active, etc.) | Eerste controle na configuratiewijziging |
show protocols all upstream1 |
Volledige sessiedetails, tellers, timers | Debuggen van een specifieke sessie |
show route |
Alle routes in BIRD's tabel | Ontvangen en statische routes verifiëren |
show route export upstream1 |
Routes die naar upstream worden gestuurd | Bevestigen dat uw prefixen worden aangekondigd |
show route for 203.0.113.0/24 |
Beste route voor een specifiek prefix | Padselectie traceren |
show route protocol static_v4 |
Routes van een specifiek protocol | Controleren of statische routes zijn geladen |
Sessiestatus controleren
sudo birdc show protocols
Verwachte uitvoer wanneer alles werkt:
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
De status Established betekent dat de BGP-sessie actief is en routes kunnen worden uitgewisseld. Alles anders betekent dat er iets mis is.
Geëxporteerde routes controleren
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
Zowel uw IPv4- als IPv6-prefixen zouden hier moeten verschijnen. Als een prefix ontbreekt, weigert het exportfilter het.
Volledige sessiedetails controleren
sudo birdc show protocols all upstream1
Zoek naar de regel Routes::
Routes: 2 imported, 0 filtered, 2 exported, 0 preferred
Het aantal exported zou overeen moeten komen met het aantal prefixen dat u wilt aankondigen.
Verifiëren vanaf extern
Gebruik een publieke looking glass om te bevestigen dat uw prefix zichtbaar is op het internet. NLNOG Looking Glass of PeeringDB kunnen hierbij helpen. Zoek uw prefix op en verifieer:
- De origin AS komt overeen met de uwe
- Het AS-pad loopt via uw upstream
- Er verschijnt geen RPKI invalid-status
Controleer ook vanuit de kernel-routeringstabel:
ip route show | grep 203.0.113
ip -6 route show | grep 2001:db8:1000
U zou routes moeten zien die naar de dummy0-interface wijzen.
Hoe lost u veelvoorkomende BIRD2 BGP-problemen op?
De meeste BGP-problemen vallen in een paar categorieën. Controleer deze in volgorde.
Referentie BGP-sessiestatussen
| Status | Betekenis | Wat te controleren |
|---|---|---|
| Idle | BIRD probeert niet te verbinden | Configuratiefout, protocol uitgeschakeld |
| Connect | TCP-verbinding wordt opgezet | Firewall blokkeert poort 179, verkeerd neighbor-IP |
| Active | TCP-verbinding mislukt, opnieuw proberen | Peer onbereikbaar, firewall, verkeerd bronadres |
| OpenSent | TCP verbonden, wacht op OPEN-antwoord | MD5-mismatch, verkeerde ASN aan remote-zijde |
| OpenConfirm | OPEN ontvangen, wacht op KEEPALIVE | Zelden gezien, gaat meestal snel over |
| Established | Sessie actief, routes worden uitgewisseld | Werkt |
Sessie blijft hangen in Connect of Active
Dit betekent dat TCP poort 179 op de peer niet kan bereiken. Controleer:
# 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
Veelvoorkomende oorzaken: verkeerd source address in het BGP-blok, de peer heeft zijn kant nog niet geconfigureerd, of uw firewall blokkeert uitgaande verbindingen.
Sessie blijft hangen in OpenSent
De TCP-verbinding werkt, maar het BGP OPEN-bericht wordt geweigerd. Dit is bijna altijd een MD5-wachtwoord-mismatch. Controleer:
- Uw
passwordin bird.conf komt exact overeen met wat de provider u heeft gegeven (hoofdlettergevoelig, let op spaties aan het einde) - Beide zijden zijn het eens over het ASN
Controleer de logs voor details:
journalctl -u bird | grep -i "error\|md5\|password"
Prefix verschijnt niet in show route export
Uw prefix bestaat in BIRD's tabel, maar het exportfilter accepteert het niet. Debug het filter:
sudo birdc show route 203.0.113.0/24 all
Controleer de routebron. Als er [device1] of [direct1] staat in plaats van [static_v4], is de statische route niet correct geconfigureerd. Het exportfilter matcht op de route, dus deze moet van het juiste protocol komen.
sudo birdc show route noexport upstream1
Dit toont routes die het filter expliciet heeft geweigerd. Als uw prefix hier verschijnt, heeft de filterlogica een bug.
Prefix aangekondigd maar niet zichtbaar op looking glass
Uw export werkt, maar de route propageert niet. Mogelijke oorzaken:
- Geen ROA-record: Uw upstream of hun peers filteren RPKI-ongeldige routes. Publiceer eerst ROA-records
- IRR-filtering: Uw upstream filtert op basis van IRR-objecten (RIPE DB, RADB). Maak uw route/route6-objecten aan of werk ze bij
- Max-prefix-limiet: Uw upstream heeft mogelijk een prefixlimiet geconfigureerd. Neem contact met hen op als u deze bereikt
- Propagatievertraging: BGP-convergentie duurt minuten. Wacht 5-10 minuten en controleer opnieuw
Lees de logs
BIRD logt naar het systeemjournaal. Voor real-time troubleshooting:
journalctl -u bird -f
Voor gebeurtenissen in het afgelopen uur:
journalctl -u bird --since "1 hour ago" --no-pager
Zoek naar regels met Error, BGP, session of Received. Ze vertellen u precies wat BIRD doet en wat er mis ging.
BIRD2 vs BIRD 1.x: migratie-opmerkingen
Als u migreert van BIRD 1.x, zijn de belangrijkste verschillen:
- Enkele daemon: BIRD2 vervangt zowel
birdalsbird6door een enkel proces - Channel-syntaxis: IPv4 en IPv6 worden geconfigureerd als kanalen binnen protocolblokken, niet als aparte protocollen
- Filtersyntaxis: Grotendeels compatibel, maar sommige functies hebben andere namen gekregen. Raadpleeg de BIRD2-documentatie voor de volledige filterreferentie
- Configuratiebestand: Standaardlocatie is gewijzigd van
/etc/bird/bird.confen/etc/bird/bird6.confnaar een enkel/etc/bird/bird.conf - birdc-socket: Enkele socket op
/run/bird/bird.ctlin plaats van aparte IPv4/IPv6-sockets
Volgende stappen
Nu uw BGP-sessie is opgezet en prefixen worden aangekondigd, zijn er verschillende zaken om vervolgens te configureren:
- RPKI-validatie: Stel RTR in om inkomende routes te valideren tegen ROA-gegevens
- Importfilters: Filter inkomende routes om route leaks en hijacks te voorkomen
- Meerdere upstreams: Voeg een tweede
protocol bgp-blok toe voor redundantie. Gebruikpreferenceom primair/backup in te stellen - BFD: Schakel Bidirectional Forwarding Detection in voor sub-seconde failover tussen upstreams
- Monitoring: Exporteer BIRD-metrics naar Prometheus met bird_exporter
Voor de alternatieve routing-daemon, zie . Voor het volledige BYOIP-traject, begin bij de BYOIP-gids.
Copyright 2026 Virtua.Cloud. Alle rechten voorbehouden. Deze inhoud is een origineel werk van het Virtua.Cloud-team. Reproductie, herpublicatie of herdistributie zonder schriftelijke toestemming is verboden.
Klaar om het zelf te proberen?
Deploy uw eigen server in seconden. Linux, Windows of FreeBSD.
Bekijk VPS-aanbod