# Anycast in OPNsense: Hochverfügbarkeit auf IP-Ebene via BGP
TL;DR / Management Summary Anycast ist eine Netzwerktechnik, bei der mehrere physische Server unter der exakt gleichen IP-Adresse erreichbar sind. Das Netzwerk leitet den User automatisch zum “nächsten” verfügbaren Knoten. In OPNsense realisieren wir Anycast durch das BGP-Protokoll (Artikel 572). Ein Senior Admin nutzt Anycast primär für hochverfügbare DNS-Cluster oder Loadbalancer-Frontends über mehrere Rechenzentren hinweg.
# 1. Einführung & Funktionsweise
One-to-Nearest.
Im Gegensatz zu Unicast (One-to-One) oder Multicast (One-to-Many) ist Anycast eine Routing-Eigenschaft.
- Zwei OPNsense-Instanzen an verschiedenen Standorten geben via BGP das gleiche IP-Präfix (z.B.
/32einer Loopback-IP) bekannt. - Die Router im Internet/Backbone wählen den Pfad mit den geringsten BGP-Hops.
- Fällt ein Standort aus, zieht er sein BGP-Announcement zurück, und der Traffic fließt automatisch zum zweiten Standort.
# Architektur-Übersicht (Mermaid)
graph TD
USER1[User in Berlin] -->|Shortest Path| FW1[OPNsense RZ-Berlin]
USER2[User in Munich] -->|Shortest Path| FW2[OPNsense RZ-Munich]
FW1 & FW2 ---|Both announce| IP[Shared Anycast IP: 1.2.3.4]
subgraph "Public Internet / AS Backbone"
IP
end
# 2. Einrichtung in der Praxis
Loopbacks und BGP-Präfixe.
# Schritt 1: Loopback Interface anlegen
Da die Anycast-IP nicht physisch an einem Port hängt, nutzen wir ein Loopback-Interface.
Interfaces -> Other Types -> Loopback.- Name:
ANYCAST_LB. IP:1.2.3.4/32.
# Schritt 2: BGP Konfiguration (FRR)
Routing -> BGP.
- Prefix List: Erstellen Sie eine Liste, die nur Ihre Anycast-IP enthält.
- Route Map: Erlauben Sie den Export dieses Präfixes an Ihre Nachbarn (Neighbors).
- Network: Tragen Sie
1.2.3.4/32in den BGP Network-Bereich ein.
# 3. Deep Dive: Anycast für DNS
Maximale Performance für Clients.
Das populärste Beispiel für Anycast ist DNS (z.B. Google 8.8.8.8).
- Vorteil: User erhalten die Antwort vom geografisch nächsten Server -> Minimale Latenz.
- Vorteil: Automatische DDoS-Dämpfung, da die Last weltweit auf viele Standorte verteilt wird.
# 4. Day-2 Operations: Health Checks
Den ‘toten’ Knoten vermeiden.
Anycast ist gefährlich, wenn der BGP-Prozess läuft, aber die eigentliche App (z.B. der Webserver) abgestürzt ist.
- Lösung: Nutzen Sie den Health Checker im FRR-Plugin.
- Aktion: Ein Skript prüft den Dienst (z.B.
curl localhost:80). Wenn der Check fehlschlägt, muss das Skript die Anycast-IP vom Loopback-Interface entfernen oder den BGP-Prozess stoppen.
# 5. Troubleshooting & “War Stories”
Wenn die Pakete die Seite wechseln.
# Top 3 Fehlerbilder
-
Symptom: Sessions (TCP) brechen ständig ab.
- Ursache: “Route Flapping”. Das Internet-Routing ändert sich, und die Pakete des Users landen plötzlich beim anderen Anycast-Knoten. Da dieser die TCP-Session (State) nicht kennt, bricht die Verbindung ab.
- Lösung: Anycast ist ideal für UDP (DNS). Für TCP benötigen Sie sehr stabile BGP-Verbindungen.
-
Symptom: Ein Knoten bekommt 100% des Traffics, der andere 0%.
- Ursache: BGP-Asymmetrie oder ein Provider hat eine bessere Anbindung an beide Standorte.
- Lösung: Nutzen Sie AS-Path Prepending am bevorzugten Standort, um die Last künstlich zu verlagern.
-
Symptom: IP wird nicht weltweit bekanntgegeben.
- Lösung: Viele Provider akzeptieren keine
/32Präfixe. Sie müssen oft mindestens ein/24Subnetz für Anycast im öffentlichen Internet nutzen.
- Lösung: Viele Provider akzeptieren keine
# “War Story”: Das “Ghost” DNS-Problem
Ein Admin betrieb zwei DNS-Server via Anycast. Ein Server hatte eine Fehlkonfiguration in der Zonen-Datei. Das Ergebnis: Die Hälfte der Firma (nahe Standort A) konnte keine Mails senden, die andere Hälfte (nahe Standort B) schon. Da beide Server die gleiche IP hatten, war es in den Logs der Clients unmöglich zu sehen, welcher Server gerade antwortete. Lehre: Geben Sie Anycast-Servern immer eine zusätzliche Unicast-Management IP, über die Sie den Gesundheitszustand und die Version der Daten individuell prüfen können.
# 6. Monitoring & Reporting
Die Routing-Präsenz prüfen.
# BGP Neighbors Status
Routing -> Diagnostics -> BGP.
- KPI: Wird das Anycast-Präfix aktiv an den Provider übertragen? (
Advertised Prefixes).
# 7. Fazit & Empfehlung
Anycast ist die “Oberklasse” des Routings.
- Empfehlung: Nutzen Sie Anycast für DNS und NTP Dienste in großen, standortübergreifenden Netzen.
- Warnung: Vermeiden Sie Anycast für zustandsbehaftete (Stateful) HTTP-Applikationen, es sei denn, Sie haben volle Kontrolle über den BGP-Pfad oder nutzen spezialisierte Lösungen wie Cloudflare Magic Transit.
# Anhang: Cheatsheet
| Aufgabe | Pfad / Befehl |
|---|---|
| Loopback erstellen | Interfaces -> Other Types -> Loopback |
| BGP Export prüfen | vtysh -c "show ip bgp neighbor <IP> advertised-routes" |
| Route Test | Diagnostics -> Network -> Traceroute |
| BGP Log | /var/log/frr/frr.log |