BGP im Homelab: FRRouting einrichten und fortgeschrittene Szenarien meistern
Hook – Warum BGP im eigenen Keller ein Game‑Changer ist
Stell dir vor, du baust ein kleines Netzwerk‑Lab wie ein Architekt sein Modellhaus. Du willst nicht nur ein Netzkabel verlegen, sondern auch lernen, wie das Internet‑Rückgrat funktioniert. Genau hier kommt BGP ins Spiel. Viele denken, BGP sei nur für ISPs und Cloud‑Provider – ein Mythos, den ich seit über zehn Jahren immer wieder zerbreche. Wenn du FRRouting (FRR) im Homelab einsetzt, bekommst du die gleichen Werkzeuge wie ein Operator bei Deutsche Telekom, nur ohne teure Verträge. In diesem Beitrag zeige ich dir Schritt für Schritt, wie du BGP auf Debian‑basierten VMs aufsetzt, komplexe Topologien modellierst und typische Stolperfallen umgehst.
1. Grundlagen von BGP und warum FRRouting im Homelab
BGP (Border Gateway Protocol) ist das „Routing‑Protokoll des Internets“. Es tauscht Reachability‑Information zwischen autonomen Systemen (AS) aus und ermöglicht Policy‑basiertes Routing. In einer privaten Umgebung nutzt du BGP, um mehrere Router‑Instanzen zu verbinden, unterschiedliche Pfade zu simulieren und Lerninhalte ohne Produktionsdruck zu testen.
Beispiel 1 – Warum ein eigenständiger Router‑Daemon sinnvoll ist
# Auf einer normalen Linux‑Box laufen nur Quell‑Routing‑Tools (ip route)
# FRR bringt einen vollwertigen BGP‑Daemon, der OSPF, IS‑IS und mehr kennt.
# Das bedeutet: du kannst in einer VM mehrere BGP‑Nachbarn simulieren.
Persönliche Einschätzung: Ich habe in den ersten fünf Jahren meiner Karriere ausschließlich Cisco‑CLI benutzt. Der Moment, als ich FRR auf einem Ubuntu‑Container laufen ließ, war wie der Sprung vom Skateboard zum Motorroller – plötzlich konnte ich komplexe Policies schreiben, ohne teure Lizenzen.
2. FRR installieren und Grundkonfiguration
FRR ist in den meisten Debian‑ und Ubuntu‑Repos enthalten. Für ein sauberes Homelab‑Setup installieren wir nur die BGP‑Komponente.
Beispiel 2 – Installation und Aktivierung
sudo apt update && sudo apt install frr frr-pythontools -y
# FRR verwendet die Datei /etc/frr/daemons, um Daemons zu aktivieren.
sudo sed -i 's/^bgpd=no/bgpd=yes/' /etc/frr/daemons
sudo systemctl restart frr
Jetzt können wir über vtysh die CLI betreten:
sudo vtysh
BGP# show version
Die Ausgabe bestätigt, dass der BGP‑Daemon aktiv ist.
Persönliche Einschätzung: Die Installation dauert nicht länger als ein Kaffee‑Kochvorgang. Der entscheidende Moment ist das Aktivieren des bgpd im Daemons‑File – ein einziger sed-Befehl, der die gesamte Grundlagenschicht freischaltet.
3. Aufbau einer einfachen Zwei‑Router‑Topologie
Eine Minimalumgebung besteht aus zwei VMs (Router A und Router B) mit jeweils einer vNIC im selben virtuellen Netzwerk. Wir verwenden netplan für die IP‑Zuweisung, FRR für das BGP‑Peering.
Router A – IP‑Konfiguration
# /etc/netplan/01‑eth0.yaml
network:
version: 2
renderer: networkd
ethernets:
eth0:
addresses: [10.0.0.1/24]
gateway4: 10.0.0.254
sudo netplan apply
Router A – BGP‑Konfiguration
# /etc/frr/frr.conf (A)
router bgp 65001
neighbor 10.0.0.2 remote-as 65002
network 192.168.10.0/24
!
log syslog informational
Router B – BGP‑Konfiguration (ausgelassen) – analog, AS 65002, Netzwerk 192.168.20.0/24
Nach dem Neustart:
vtysh -c "show ip bgp summary"
Du solltest einen Established‑Status sehen und die Anzahl der ausgetauschten Prefixes (zwei in diesem Beispiel).
Persönliche Einschätzung: Sobald das Peer‑Verhältnis steht, fließt das Routing‑Buchstabiergerät wie ein Tanzpartner – das ist das süße Gefühl, das ich jedes Mal erlebe, wenn ich ein neues Lab‑Setup aufbaue.
4. Fortgeschrittene Szenarien: Route‑Reflectors, Communities und Policy‑Routing
Ein echtes Homelab‑BGP‑Projekt beinhaltet mehr als nur zwei Router. Wir erweitern das Beispiel zu einer drei‑Router‑Topologie: R1 (Route‑Reflector), R2 und R3. Ziel ist es, dass R2 und R3 keine direkte Peering‑Beziehung benötigen – ein typisches Muster in großen Netzwerken.
Beispiel 3 – Route‑Reflector‑Konfiguration auf R1
# /etc/frr/frr.conf (R1 – RR)
router bgp 65000
bgp router-id 10.0.0.1
neighbor 10.0.0.2 remote-as 65001
neighbor 10.0.0.3 remote-as 65002
neighbor 10.0.0.2 route-reflector-client
neighbor 10.0.0.3 route-reflector-client
!
Beispiel 4 – Communities auf R2
router bgp 65001
neighbor 10.0.0.1 remote-as 65000
neighbor 10.0.0.1 send-community both
network 192.168.10.0/24 route-map SET_COMM
!
route-map SET_COMM permit 10
set community 65000:100
Damit propagiert R2 die Community 65000:100 automatisch über den RR zu R3.
Beispiel 5 – Policy‑Based Routing (PBR) auf R3
router bgp 65002
neighbor 10.0.0.1 remote-as 65000
network 192.168.20.0/24
!
route-map PBR_IN permit 10
match community 65000:100
set local-preference 200
!
bgp default local-preference 100
bgp listen range 10.0.0.0/24
ebgp-multipath
Durch die erhöhte local-preference bevorzugt R3 den Pfad über R2, wenn beide Alternativen vorhanden sind.
Persönliche Einschätzung: Das Aufsetzen von Route‑Reflectors und Communities fühlt sich an wie das Anlegen von „Gruppenkarten“ in einem Kartenspiel – du definierst, wer welche Informationen sehen darf, und spielst damit gezielt strategisch.
5. Monitoring und Debugging: Tools und Befehle
Ein Lab ist nur so gut wie seine Sichtbarkeit. FRR bietet mehrere native Befehle, aber ergänzende Tools wie tcpdump, Wireshark und birdc (falls du Bird installierst) geben tiefe Einblicke.
Beispiel 6 – Echtzeit‑BGP‑Statistik
vtysh -c "show ip bgp summary" -c "show bgp neighbor 10.0.0.2" -c "show ip bgp"
Beispiel 7 – Paket‑Capture für BGP (Port 179)
sudo tcpdump -i eth0 port 179 -vv -w bgp.pcap
Durch das Öffnen der .pcap‑Datei in Wireshark kannst du die BGP‑Open‑Nachrichten, Update‑Nachrichten und Fehlermeldungen visuell inspizieren.
Beispiel 8 – Log‑Analyse
sudo journalctl -u frr -f | grep BGP
Dieser Befehl liefert Echtzeit‑Logs, die bei Fehlkonfigurationen sofort Alarm schlagen.
Persönliche Einschätzung: Das Debuggen von BGP ist für mich vergleichbar mit dem Entwirren eines Kopfhörerkabels – es gibt immer ein erstes tcpdump‑Snippet, das das Problem sofort sichtbar macht.
6. Häufige Fehler im Homelab‑BGP
| Fehler | Ursache | Korrektur |
|---|---|---|
1. Forgetting to enable bgpd |
/etc/frr/daemons hat bgpd=no
|
sed -i 's/^bgpd=no/bgpd=yes/' /etc/frr/daemons && systemctl restart frr |
| 2. Mismatched Router‑ID | Identische Router‑IDs führen zu BGP‑Flaps | Setze eindeutige router-id (z. B. 10.0.0.1) |
3. Missing send-community |
Communities werden nicht propagiert |
neighbor <IP> send-community both im BGP‑Kontext |
4. Wrong remote-as |
Peer hat anderes AS definiert | Prüfe show ip bgp neighbor und korrigiere das remote-as
|
| 5. Firewall‑Block | Port 179 gesperrt |
sudo ufw allow 179/tcp oder iptables‑Rule einrichten |
Vermeide diese Stolperfallen, sonst landest du schnell im „BGP‑Black‑Hole“. Die meisten Probleme lassen sich mit einem schnellen show ip bgp und einem Blick in das System‑Log beheben.
7. Fazit und konkreter nächster Schritt
BGP im Homelab kann zunächst einschüchternd wirken, ist aber mit FRR praktisch kostenlos und unglaublich flexibel. Du hast jetzt:
- FRR installiert und den BGP‑Daemon aktiviert.
- Ein einfaches Zwei‑Router‑Peering aufgebaut und getestet.
- Route‑Reflector, Communities und Policy‑Routing in einer dreier Topologie umgesetzt.
- Monitoring‑ und Debug‑Tools kennengelernt, um Probleme schnell zu finden.
- Typische Fehlerquellen identifiziert und korrigiert.
Nächster Schritt: Erstelle ein Lab‑Playbook mit Ansible, das deine FRR‑Konfiguration automatisiert. Beispiel‑Snippet für Ansible‑Task:
- name: Deploy FRR BGP config
copy:
dest: /etc/frr/frr.conf
content: |
router bgp {{ bgp_as }}
neighbor {{ neighbor_ip }} remote-as {{ neighbor_as }}
network {{ advertised_prefix }}
log syslog informational
notify: restart frr
Damit kannst du deine BGP‑Topologie per Code versionieren – ein echter Schritt von „Lab‑Playground“ zu GitOps‑Network‑Automation.
Abschließende Empfehlung: Starte ein Mini‑ISP‑Projekt: Simuliere Kundennetzwerke, setze verschiedene MED‑ und Local‑Preference‑Werte und beobachte, wie deine Traffic‑Engineering‑Policies das Routing beeinflussen. Das ist das ultimative Lernfeld – und du bist dabei nicht mehr nur ein Beobachter, sondern der Architekt des eigenen Internets.
Top comments (0)