
Ich verwende pfSense mit OpenVPN jetzt schon seit mehr als einem Jahrzehnt. Habe auch viele Dienste von pfSense intensiv genutzt (DNS-Resolver, DHCP, HA-Proxy, SquidGuard, natürlich Firewall...) Kurz gesagt – ich habe einige Erfahrung. Aber jetzt habe ich beschlossen, OpenVPN durch WireGuard zu ersetzen...
Ich habe auf der pfSense-Seite einen Tunnel erstellt, den Windows-Client konfiguriert und die Verbindung wird erfolgreich hergestellt. Ich kann auf (fast) alle Server hinter pfSense zugreifen. Aber dann ist mir etwas sehr, sehr Seltsames beim DNS-Verhalten aufgefallen. Ich muss meine Umgebung kurz beschreiben, um das Problem zu erklären. Also habe ich:
- Geteiltes DNS-Setup (internes DNS wird in private Adressen aufgelöst, während öffentliches DNS in öffentliche Adressen aufgelöst wird).
- Interne DNS-Server sind zwei Zentyal-Domänencontroller (im Netzwerk hinter pfSense). Sie sind autoritative Nameserver für die Hauptdomäne „mydomain.com“.
- Diese beiden sind so konfiguriert, dass sie DNS-Abfragen für andere Domänen an den DNS-Resolver bei pfSense weiterleiten. (Ich habe noch ein paar weitere Domänen im DNS-Resolver konfiguriert, weil er viel, viel benutzerfreundlicher und besser ist als Zentyal DNS.)
- Schließlich leitet der DNS-Resolver Abfragen für Domänen, die nicht aufgelöst werden, an einen externen DNS weiter.
DNS request -> Zentyal DNS (172.16.0.1) -> pfSense DNS Resolver (172.16.1.1) -> External DNS
Ich gebe zu, das Setup ist etwas seltsam, aber es hat jahrelang funktioniert.
Wenn ich meinen Windows 11-Rechner über OpenVPN verbinde, kann ich dies nslookup
problemlos für jede Domäne (die Hauptdomäne oder eine andere) tun. Aber wenn ich OpenVPN trenne und WireGuard verbinde, kann ich nur abfragendas WichtigsteDomain:
nslookup web.mydomain.com
Server: zentyal-1.mydomain.com
Address: 172.16.0.1
Name: web.mydomain.com
Address: 172.16.2.5
Aber wenn ich eine andere Domäne abfrage (die vom DNS-Resolver oder einem externen DNS verarbeitet wird), erhalte ich die Fehlermeldung „Abfrage abgelehnt“:
nslookup google.com
Server: zentyal-1.mydomain.com
Address: 172.16.0.1
*** zentyal-1.mydomain.com can't find google.com: Query refused
Dieselbe Anfrage, wenn ich über OpenVPN verbunden bin:
nslookup google.com
Server: zentyal-1.mydomain.com
Address: 172.16.0.1
Non-authoritative answer:
Name: google.com
Addresses: 2a00:1450:4001:80f::200e
142.250.185.142
Offensichtlich empfängt in beiden Fällen derselbe DNS-Server (zentyal-1) die Anfrage und derselbe Server antwortet. Einmal mit „Anfrage abgelehnt“ und einmal mit der erfolgreichen Antwort. Es sieht so aus, als ob der DNS-Resolver sich weigert, Zentyal zu antworten, wenn ich über WireGuard verbunden bin.
Meine WireGuard-Client-Konfiguration:
[Interface]
PrivateKey = XXXX=
Address = 172.16.26.2/24
DNS = 172.16.0.1
[Peer]
PublicKey = YYYYY=
AllowedIPs = 172.16.0.0/16
Endpoint = 1.2.3.4:51820
Und das ist noch nicht das Ende des seltsamen Verhaltens. Ich habe das Problem „Abfrage abgelehnt“ nur in der Eingabeaufforderung mit nslookup
. Es sieht so aus, als wären Browser überhaupt nicht von diesem Problem betroffen. ( nslookup
Ich kann google.com nicht abrufen, aber Firefox öffnet es ohne Probleme.) Zuerst dachte ich, es handele sich um eine Art DNS-Leck und die Browser fragen lokale DNS ab. Aber zu meiner großen Überraschung scheint das nicht der Fall zu sein. Der Browser erhält eine DNS-Antwort für eine Domäne, die von DNS Resolver mit privater IP verwaltet wird, was bedeutet, dass die Antwortmusste kommenvon hinter pfSense (vom DNS-Resolver) ...
Huhhhhhhh
Irgendwelche Ideen? Entschuldigen Sie den langen Text ... Danke!