Seltsames Problem mit Unbound DNS

Started by Classic89, August 06, 2025, 06:46:14 PM

Previous topic - Next topic
Hallo zusammen,

nachdem ich lange Zeit hier nur stiller Mitleser war und hier auch unteranderem einige nützliche Dinge beim Aufbau meines Netzwerks hinter einer OPNSense gelesen habe, habe ich mich nun entschlossen hier auch mal anzumelden. Hintergrund ist, dass ich ein für mich äußerst seltsames Problem mit Unbound DNS habe und mir beim googlen bisher weder jemand mit einem vergleichbaren Problem, noch eine passende Lösung begegnet ist.

Zum Hintergrund, ich habe vor kurzem nachdem ich länger mit einer Testumgebung herum gespielt habe mein gesamtes Netzwerk hinter die OPNSense gezogen. Das ist mittlerweile auch weitestgehend abgeschlossen und es funktioniert soweit fast alles. Bis auf das oben genannte Problem mit Unbound. Ich hatte in meinem vorherigen Setup auf meinem Proxmox Server einen LXC mit Pi-Hole + Unbound als rekursiver Resolver als DNS-Server laufen. Dieser LXC ist zunächst mit hinter die Sense gezogen und fungiert dort aktuell weiterhin als Netzwerk-weiter DNS-Server. Das funktioniert soweit alles gut, Firewall-Regeln sind so formuliert dass der Pi-Hole aus allen VLAN's erreicht werden kann und er auch nach draußen telefonieren kann. Zusätzlich habe ich über Port-Forwarding Regeln eingerichtet, das alle DNS-Anfragen an andere Server automatisch an Pi-Hole umgeleitet werden. Auch das funktioniert (mit Hilfe hier aus dem Forum) sehr gut. Allerdings merke ich beim Surfen eine gewisse Latenz beim Aufrufen von Webseiten. Unter anderem aus diesem Grund (aber auch weil es logischer und einfacher erscheint) wollte ich den Unbound in dem Pi-Hole LXC durch die OPNSense-eigene Instanz von Unbound ersetzen. Diese habe ich dann ähnlich konfiguriert wie bereits die Version in dem LXC und dann in Pi-Hole als Upstream DNS-Server gesetzt sowie dem Pi-Hole in der Firewall Zugriff gewährt. Das klappt auch soweit und die Latenz ist spürbar geringer.

Allerdings habe ich jetzt einen seltsamen Fehler. Und zwar kann ich bestimmte Homepages nicht mehr aufrufen. Zum Beispiel aliexpress.com. Hier kommt z.B. im Browser Brave der Fehler "DNS_PROBE_POSSIBLE". Versuche ich das gleiche aus Chrome, bekomme ich den Fehler "DNS_PROBE_FINISHED_NXDOMAIN". In den Logs vom Pi-Hole kann ich sehen, dass der Query beantwortet wird, gleiches in den Logs von Unbound. Wenn ich im Windows Terminal

nslookup aliexpress.com

aufrufe, wird mir auch eine IP des Webservers geliefert. Allerdings kann ich die Homepage nicht aufrufen. Gleiches passiert zum Beispiel bei dhl.de, allerdings nur wenn ich den Login-Screen erreichen will (login.dhl.de). Auch hier kann man in den Logs sehen, dass der Query beantwortet wird. Aufgerufen im Browser kann es allerdings nicht.

Nun hatte ich Unbound in meinem LXC sehr aggresiv und konfiguriert und dies soweit erkennbar auch in der Konfiguration in OPNSense übernommen. Dachte also zunächst dass es vielleicht damit zu tun hat. Allerdings taucht der Fehler auch in der Standard-Konfiguration von Unbound auf. Wenn ich den Upstream-Server zurück auf die Unbound Instanz in dem LXC schalte, funktioniert wieder alles tadellos. Blocklisten in Unbound sind keine konfiguriert (der Query steht auch auf "pass") und Pi-Hole blockiert hier auch nichts, sonst würde es ja mit der anderen Unbound Instanz auch nicht funktionieren. Wenn ich den Upstream DNS auf Quad9 setze, funktioniert es auch. Also muss es hier an der Unbound Instanz in OPNSense liegen.

Ich bin mittlerweile relativ ratlos und konnte bisher im Internet nichts dazu finden. Vielleicht kann mir hier ja jemand weiterhelfen :)

Hast Du zufällig "Harden DNSSEC Data", "Aggressive NSEC" oder "Strict QNAME Minimisation" gesetzt? Das funktioniert oft nicht.
Intel N100, 4* I226-V, 2* 82559, 16 GByte, 500 GByte NVME, ZTE F6005

1100 down / 800 up, Bufferbloat A+

Ja, ich hatte alle drei an. Hatte ich in meiner "eigenen" Unbound Instanz auch. Da hat es immer relativ problemlos funktioniert.

Habe jetzt mal alle drei ausgemacht, dann ging die beiden genannten Seiten wieder. Spannend das es vorhin, als ich Unbound komplett auf die Standard-Einstellungen zurück gesetzt hatte (also alles in Advanced aus) nicht ging. Dann gilt es jetzt wohl durch Try&Error herauszufinden welche der drei Einstellungen der Übertäter war.

Weißt du zufällig was das Problem mit den drei Einstellungen ist?

Ich weiß es nicht im Detail, aber speziell "Strict QNAME Minimisation" hat hier im Forum schon oft zu Problemen geführt, weil der Hilfetext nahelegt, man bekomme damit mehr Privacy, weshalb viele User das mal auf Verdacht einschalten, um irgendwann später festzustellen, dass manche Domains das nicht unterstützen.

Es gibt halt viele Betreiber von Domains, die so richtig nichts hinbekommen. Besonders schön sind z.B. auch Domains, wo DKIM-Einträge vorhanden sind, die E-Mails aber nicht oder falsch unterschrieben sind.
Intel N100, 4* I226-V, 2* 82559, 16 GByte, 500 GByte NVME, ZTE F6005

1100 down / 800 up, Bufferbloat A+

Danke dir auf jeden Fall für den Tipp! Aber bringt QNAME Minimisation nicht auch mehr Privacy?

Was mich aber wundert ist, ich habe "qname-minimisation" in meinem selbst konfigurierten Unbound in dem LXC auch auf "yes", und dort klappt die DNS-Auflösung der beiden genannten Fälle.

würde empfehlen den Pi-Hole durch das Adguard-Plugin zu ersetzen - ähnlich effektiv und läuft direkt auf der Sense
VMW / PMX / PFS / OPS

Wenn die Namesauflösung mit den üblichen Netzwerktools funktioniert, im Browser aber nicht, dann hilft vielleicht ein Blick in dessen Konfiguration. Will der vielleicht DNS over HTTPs machen oder besteht auf DNSSEC? Dann müssten die Firewall Regeln evtl noch dafür angepasst werden. Im LAN würde ich ohnehin eher darauf verzichten. Schon mal in den FW Logs nachgesehen ob das was blockiert wird?

Quote from: mooh on August 07, 2025, 01:18:01 PMWenn die Namesauflösung mit den üblichen Netzwerktools funktioniert, im Browser aber nicht, dann hilft vielleicht ein Blick in dessen Konfiguration. Will der vielleicht DNS over HTTPs machen oder besteht auf DNSSEC? Dann müssten die Firewall Regeln evtl noch dafür angepasst werden. Im LAN würde ich ohnehin eher darauf verzichten. Schon mal in den FW Logs nachgesehen ob das was blockiert wird?

Danke für den Tipp. Die Namensauflösung im Browser funktioniert ja allerdings mit meinem "eigenen" Unbound, nur wenn ich mit den gleichen Einstellungen Unbound auf der Sense benutze, funktioniert es in manchen Fällen nicht. Hatte um das auszuschließen es ja bewusst in mehreren Browsern ausprobiert (Brave, Chrome und Edge), überall das gleiche: Der eigene Unbound funktioniert, der auf der Sense bei den genannten Seiten nicht. Das irgendwas geblockt wird konnte ich jetzt in den Logs nicht sehen, aber dann würde es ja eigentlich in beiden Fällen nicht funktionieren. Oder sehe ich das falsch? 

Habe jetzt selbst noch mal ein wenig rumexperimentiert und es funktioniert mit Unbound auf der Sense wirklich nur dann, wenn ich "Harden DNSSEC Data", "Aggressive NSEC" und "Strict QNAME Minimisation" ausschalte. Sobald eines der drei an ist, treten wieder die alten Probleme auf. Und das wiederum finde ich dann schon seltsam, weil in meinem eigenen Unbound alle drei Einstellungen aktiv sind. Und da macht es wie gesagt keine Probleme.

Gut, vielleicht nochmal zur Klarstellung: Wenn "Dein" unbound im selben Netzwerk ist wie dein PC, dann ist keine Firewall dazwischen. Wenn jedoch die unbound Instanz auf der Sense verwendet wird, spielen die FW-Regel mit. Hier könnte eine Ursache liegen.

Die zweite Möglichkeit ist der verwendete unbound selbst. Wird die gleiche Version benutzt? Ich würde auch mal die Konfigurationsdateien vergleichen. Auf der Sense ist das /var/unbound/unbound.conf. Darin werden auch noch andere Dateien "include"d. Aus dem Vergleich der beiden Instanzen sollte klar werden, was der Unterschied ist.

Quote from: mooh on August 08, 2025, 01:52:25 PMGut, vielleicht nochmal zur Klarstellung: Wenn "Dein" unbound im selben Netzwerk ist wie dein PC, dann ist keine Firewall dazwischen. Wenn jedoch die unbound Instanz auf der Sense verwendet wird, spielen die FW-Regel mit. Hier könnte eine Ursache liegen.

Die zweite Möglichkeit ist der verwendete unbound selbst. Wird die gleiche Version benutzt? Ich würde auch mal die Konfigurationsdateien vergleichen. Auf der Sense ist das /var/unbound/unbound.conf. Darin werden auch noch andere Dateien "include"d. Aus dem Vergleich der beiden Instanzen sollte klar werden, was der Unterschied ist.

Danke für die Klarstellung, ich werde mir die Logs nochmal genau ansehen ob dort etwas auftaucht.

Danke auch für den Hinweis mit der Config, schaue ich mal rein. Kann ich Unbound auf der Sense eigentlich theoretisch auch über das Config-File konfigurieren? Also zum Beispiel dort meine Config zum testen mal reinkopieren? Oder beißt sich das mit Einstellungen der Sense?

Ich habe es jetzt glaube ich gelöst bekommen.

Nach einem direkten Vergleich der Config-Files (danke für den Tipp mooh!) ist mir aufgefallen, dass ich bei meiner "eigenen" Konfiguration nur "qname-minimisation: yes" gesetzt hatte (was laut der Dokumentation von Unbound anscheinend eh der Default ist), während die Konfiguration in der Sense nur nach "qname-minimisation-strict" fragt. Habe "qname-minimisation-strict" jetzt auf "no" gesetzt und in einer "custom.conf" Datei die restlichen Einstellungen die ich selbst vorgenommen hatte, aber nicht von der Sense aus der GUI gesetzt werden konnten, eingestellt. Jetzt scheint es seit gestern Vormittag stabil zu laufen und ich konnte bisher keine Seite finden, die nicht im Browser aufgelöst werden kann.

Danke euch allen für die Hinweise!


in /var/unbound/unbound.conf steht
# Custom includes
include: /var/unbound/etc/*.conf
Scheinbar kann man dort lokale Anpassungen in ein oder mehrere Dateien packen.