Wireguard Site-to-Site - DNS - wie funtkioniert das wirklich?

Started by wagman77, May 18, 2025, 10:30:52 AM

Previous topic - Next topic
Hallo zusammen,

aktuell stehe ich vor der Herausforderung, mehrere Außenstandorte über Wireguard Site2Site (WG S2S) Verbindungen mit dem "Headquater" zu verbinden.
Das "Headquarter" ist eine öffentliche Verwaltung (ca. 8000 Einwohner). Zur Gemeindeverwaltung gehören mehrere Schulen, Feuerwehren, KiTas usw.
Eines der Ziele ist es, z.B. die Windows-Clients der Außenstandorte an die zentralen Windows ADs anzubinden (für GPOs, WSUS etc.)
Die Opnsense in der Verwaltung habe ich auf einem Supermicro 1019D-FRN8TP, Xeon D-2146NT, ZFS gespiegelte SSDs, redundanten Netzteilen aufgesetzt.
Glasfaseranschluss aktuell 600Mbit. Alle Außenstandorte bekommen nach und nach Glasfaseranschlüsse. Zu einem späteren Zeitpunkt wollen wir in der Verwaltung mit einer zweiten Sense (ggf. als VM auf Proxmox Ceph Cluster) ein HA-Setup bauen.

Bevor ich etwas ausrolle, teste ich vorher von meiner Homelab-Umgebung zu unserer Firma.

Die erste Hürde, das S2S an sich aufzusetzten, war schnell genommen.
Ich erreiche von Site A aus alle Hosts über die IP Adresse von Site B und vice versa.

Nur leider funktionierte die Namensauflösung nicht. Wie auch, ich muss ja der Sense von Site B irgendwie beibringen,
wo die Namensauflösung für Site A stattfinden soll. Ein pragmatischer Ansatz war, den DNS von Site A einfach über DHCP zu verteilen.
Die Namensauflösung funktionert, aber wirklich charmant finde ich das nicht.

Auf der Suche nach der Lösung habe ich verschiedene Ansätze gefunden (sicherlich gibt es mehrere).
- "Full Tunnel" (gesamten Datenverkehr von Site B über A routen. Über NAT Outbound Regel für das Netz von Site B, damit ins Internet geroutet wird.
- Query Forwarding

Kurzum: Wenn mich hier jemand in die richtige Richtung stoßen könnte, wäre ich sehr dankbar.

Falls jemand das ganze Setup an sich nicht gut findet, haut's einfach raus. Ich bin lern- und kritikfähig.

Das hängt ein bisschen davon ab, ob die Sites unabhängig sein sollen. Natürlich kannst Du das auch alles zentral regeln mit einer OpnSense als DHCP-Server (DHCP-Relay). Das würde aber voraussetzen, dass Deine Verbindungen redundant und super stabil sind, sonst wäre bei einem Ausfall der Kopplung alles kaputt.

Wenn Du also den DHCP und DNS in jeder Site separat machst, kann Du auch lokale DNS-Zonen machen (z.B. sitea.internal, siteb.internal).
Und dann bietet es sich an, gegenseitig DNS-Forwards auf die anderen Zonen einzurichten. Somit ist jede Site für sich "lebensfähig", mit eigener Internet-Anbindung und die Kopplung ist "lose".

Für besonders wichtige, zentrale Dienste kann man auch noch Overrides einrichten (z.B. domainserver.sitea.internal), das hilft aber nur für die Namensauflösung - anwendungsspezifische Probleme werden damit allerdings nicht gelöst, z.B. beim Ausfall eines zentralen Dienstes wie einem Domain-Server bei Ausfall der Wireguard-Verbindung. Das musst Du ggf. separat lösen, weil es kein Netzwerkproblem ist.
Intel N100, 4* I226-V, 2* 82559, 16 GByte, 500 GByte NVME, ZTE F6005

1100 down / 800 up, Bufferbloat A+

Genau so, wie du das beschreibst (jede Site unabhängig) möchte ich das einrichten.
Alles zentral ist mir "zu heiß".

Mit der Einrichtung lokaler DNS-Zonen habe ich keine Erfahrung. Macht man das in Unbound?
Zumindest habe ich dort das mit den Forward Queries gesehen.
Kannst du mir ein konrektes Beipiel geben?

Das geht in Unbound (Services: Unbound DNS: Query Forwarding), DNSmasq (Services: Dnsmasq DNS & DHCP -> Domains) und DNSCrypt-Proxy (Services: DNSCrypt-Proxy: Configuration -> Forwarders).

Der Ansatz ist immer der Gleiche: Eine bestimmte Domain wird auf einen anderen Nameserver delegiert, also z.B. siteb.internal -> "192.168.7.1:53". Abgesehen davon richtest Du den lokalen DHCP und DNS so ein, wie es Dir beliebt.

Wenn Du z.B. dem aktuellen OpnSense-Ansatz folgst, ist es ja so, dass Unbound der Haupt-DNS-Server ist, der alles auflöst (entweder per DoT mit Upstream-Servern oder als Resolver). DNSmasq ist ein lokaler Dienst, der DHCP macht und diese Namen auch in seinem lokalen DNS einträgt. Im Unbound delegierst Du ja auch Deine lokale Domain zu DNSmasq, z.B. sitea.internal -> 127.0.0.1:530053. Genau an der selben Stelle kannst Du auch siteb.internal -> 192.168.7.1:53 machen, wenn der Unbound für Site B auf 192.168.7.1 läuft (der fragt dann ja "seinen" DNSmasq, der von Dir aus eventuell auf Port 53053 nicht erreichbar ist).

Wenn Du Reverse-Auflösung benötigst, kannst Du jeweils zusätzlich noch beispielsweise 7.168.192.in-addr.arpa delegieren.

Sinngemäß geht das aber genauso mit Kombinationen aus Unbound und ISC DHCP oder Kea. Auch der Nameserver ist dabei egal, es ginge z.B. auch Bind. Du kannst, wenn eine Remote Site z.B. gar keine OpnSense hat, sondern eine Fritzbox oder ein Unifi Gateway, das ganz genauso tun, DNS ist DNS, solange Du per VPN da hinkommst.

Intel N100, 4* I226-V, 2* 82559, 16 GByte, 500 GByte NVME, ZTE F6005

1100 down / 800 up, Bufferbloat A+

Super, das bringt mich in die richtige Richtung. Das Prinzip habe ich verstanden.
Tatsächlich ist es so, dass ich nicht an allen Standorten OPNSensen habe. In den Feuerwehrhäusern und KiTas steht z.B. nur eine Fritzbox.
Für eine handvoll Clients überall OPNsensen hinzustellen, wäre auch mit Kanonen auf Spatzen geschossen.
Da die Kommune ein elektronisches Schließsystem hat (ein Updater-Leser kommuniziert mit einem zentralen Server) und dafür ist ebefalls Site2Site notwendig.
Das habe ich wie folgt gelöst: Debian + Wireguard auf einen Nuc installiert, Portweiterleitung von UDP 51820 auf den NuC, statische Route für das Zielnetz am Hauptstandort in der Fritte eingetragen. Testweise habe ich PiHole installiert, weil mir irgendwann klar wurde, dass ich einen DNS brauche.
Das Zielnetz von Site A (in dem Fall Homelab -> Firma) löst auch auf. Beim Zugriff auf meine Laufwerksfreigaben, bekomme ich allerdings eine seltsame Fehlermeldung von Windows (Freigabe existiert schon oder sowas ähnliches). Vermutlich muss ich den DHCP auf der Fritte ausschalten und vom NuC aus machen, sprich Kea + DNSCrypt oder Bind drauf. Ich bin gespannt :-)

Bei Fritzboxen muss man drei Hinweise geben:

1. Site2Site mit Wireguard funktioniert super, dazu braucht es keinen separaten NUC - außerdem: was ist daran dann weniger Kanonen auf Spatzen als mit einer OpnSense? Die Hardware doch dann wohl nicht.

2. AVMs "interner" DNS kann m.W. nur plain-Namen oder welche mit der Domain .fritz.box und die kann man m.W. auch nicht ändern. Selbst so etwas wie Aliase oder Namen auf andere Domains anzulegen, geht nicht. Insofern ist die Nutzbarkeit als DNS-Server eingeschränkt. Wenn man mehrere Sites mit Fritzboxen hat, muss man sich überlegen, wie man damit umgeht, dass die eben keine unterschiedlichen Domains nutzen können. Kann sein, dass man das über Tricksereien mit den übergebenen vs. der delegierten Domain hinbekäme, das kann aber beliebig kompliziert werden.
Ich würde das eher über Overrides an der (zentralen) OpnSense lösen, also in dieser Richtung auf die Delegation verzichten - das setzt natürlich statische DHCP-Reservierungen für die benötigten Geräte voraus.

3. Der normale DNS der Fritzbox kann in der Rolle als Client so etwas wie Domain-Delegationen im Wireguard-Setup unter "Verwendete DNS-Domains der WireGuard®-Gegenstelle.", man kann aber keinen spezifische IP:PORT angeben, vermutlich wird die IP der Wireguard-Gegenstelle (welche?) und Port 53 genutzt.
Intel N100, 4* I226-V, 2* 82559, 16 GByte, 500 GByte NVME, ZTE F6005

1100 down / 800 up, Bufferbloat A+

Tatsächlich haben wir ursprünlich den Plan verfolgt, den integrierten Wireguard der Fritzbox zu nutzen. Für meinen Proof of Concept hat man mir eine 7590AX ausgeborgt, die das Site2Site mit meiner Opnsense in der Firma anstandslos gemacht hat, mit der Einschränkung, dass ich in der Fritzbox nur ein Netzwerksegment angeben konnte. Eine wg. conf selbst hochladen, hat nicht gefunzt, vermutlich habe ich was falsch gemacht.
In der einen Lokation ist eine FB 7490, die bei der WG Konfiguration eine Fehlermeldung ausgeworfen hat: Es ist ein Fehler aufgetreten. Toll!
Die FB in der 2. Lokation ist etwas älter und kann überhaupt kein WG. Firewaren sind jeweils aktuell.
Jetzt könnte man versuchen, ob man das über IpSec gebacken bekommt, aber irgendwie sind mir die Dinger zu unflexibel.

Natürlich kostet ein Mini-PC mit OPNSense nicht die Welt, aber bei den knappen Kassen der öffentlich Hand wollten wir erst mal keinen Invest tätigen.

Ich werde erst mal den Weg über den NuC gehen. Hauptsache ist, es funktioniert erst mal :-)

Das Hauptproblem bei den Wireguard-Konfigurationen besteht darin, dass man sie nachträglich auch nicht mehr ändern kann, z.Z. um zusätzliche Netzbereiche einzutragen. Da gibt es aber einen Trick für: https://www.mengelke.de/Projekte/FritzBox-JSTool
Intel N100, 4* I226-V, 2* 82559, 16 GByte, 500 GByte NVME, ZTE F6005

1100 down / 800 up, Bufferbloat A+

Herzlichen Dank, das war alles sehr hilfreich. Für den weiteren Test habe ich auf meinem Wireguard-Server Test-NuC noch DNSmasq installiert,
auf der Fritzbox den DHCP-Server ausgeschaltet, die DNS Queries, die mein Windows AD (Firma "Site A") auflösen muss weitergeleitet und schon funktioniert das Ganze. Ich bin begeistert! Auf OPNsense muss das dann genauso umzusetzten sein, komfortabler sogar, da über WebGUI.
Ob ich mich mal an das Fritzbox Tool ranwage... mal sehen. Jedenfalls bleiben die Teile erst mal bestehen, weil in den Einrichtungen auch die Telefonie drüber läuft.