ich nutze ein Pi-hole-Setup mit Unbound (nach der offiziellen Anleitung aus den Pi-hole Docs) und einer FRITZ!Box als Router und DHCP-Server.
Alle DNS-Anfragen gehen standardmäßig über Unbound ins Internet; nur lokale DNS-Namen (*.fritz.box) sollen über Conditional Forwarding an die FRITZ!Box weitergeleitet werden.
IPv6 → fd6a:xxxx:xxxx::/64 → fd6a:xxxx:xxxx::1 → funktioniert nicht zuverlässig
Symptom:
Lokale Hostnamen (über IPv4) werden korrekt aufgelöst.
IPv6-Hosts im LAN hingegen werden teilweise nicht aufgelöst.
Wenn ich ein nslookup auf eine IPv6-Adresse mache und explizit die FRITZ!Box als DNS-Server angebe (nslookup <host> fd6a:xxxx:xxxx::1), funktioniert die Auflösung.
Ich habe zum Beispiel die IPv6 der Fritz!Box genommen und diese konnte nicht sauber aufgelöst werden.
Das Verhalten deutet darauf hin, dass das IPv6-Conditional-Forwarding im aktuellen Release nicht zuverlässig aktiv ist.
Versionen:
Pi-hole Core: v6.1.4
FTL: v6.2.3
Web Interface: v6.2.1
FRITZ!Box: aktuelle Firmware
Unbound: nach offizieller Pi-hole-Anleitung eingerichtet
Frage:
Ist das ein bekanntes Problem mit IPv6-Conditional-Forwarding in Pi-hole v6?
Gibt es eine empfohlene Syntax oder einen Workaround, um IPv6-Forwarding (z. B. bei FRITZ!Box-Netzen mit /64) zuverlässig zu aktivieren?
pi@pihole:~ $ nslookup 192.168.178.1
1.178.168.192.in-addr.arpa name = fritz.box.
pi@pihole:~ $ nslookup fd28:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx
** server can't find x.x.x.x.x.x.x.x.x.x.x.x.x.x..x.x.x.x.x.x.x.x.x.x.x.x.x.8.2.d.f.ip6.arpa: NXDOMAIN
pi@pihole:~ $ nslookup 2001:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx
** server can't find x.x.x.x.x.x.x.x.x.x.x.x.x.x..x.x.x.x.x.x.x.x.x.x.x.x.x.1.0.0.2.ip6.arpa: NXDOMAIN
pi@pihole:~ $ nslookup fd28:x.x.x.x.x.x.x.x.x.x.x.x.x.x..x.x.x.x.x.x.x.x.x.x.x.x.x. 192.168.178.1
x.x.x.x.x.x.x.x.x.x.x.x.x.x..x.x.x.x.x.x.x.x.x.x.x.x.x.8.2.d.f.ip6.arpa name = fritz.box.
x.x.x.x.x.x.x.x.x.x.x.x.x.x..x.x.x.x.x.x.x.x.x.x.x.x.x.8.2.d.f.ip6.arpa name = www.fritz.box.
x.x.x.x.x.x.x.x.x.x.x.x.x.x..x.x.x.x.x.x.x.x.x.x.x.x.x.8.2.d.f.ip6.arpa name = fritzbox.internal.
x.x.x.x.x.x.x.x.x.x.x.x.x.x..x.x.x.x.x.x.x.x.x.x.x.x.x.8.2.d.f.ip6.arpa name = fritzbox.home.arpa.
x.x.x.x.x.x.x.x.x.x.x.x.x.x..x.x.x.x.x.x.x.x.x.x.x.x.x.8.2.d.f.ip6.arpa name = myfritz.box.
x.x.x.x.x.x.x.x.x.x.x.x.x.x..x.x.x.x.x.x.x.x.x.x.x.x.x.8.2.d.f.ip6.arpa name = www.myfritz.box.
x.x.x.x.x.x.x.x.x.x.x.x.x.x..x.x.x.x.x.x.x.x.x.x.x.x.x.8.2.d.f.ip6.arpa name = fritz.nas.
x.x.x.x.x.x.x.x.x.x.x.x.x.x..x.x.x.x.x.x.x.x.x.x.x.x.x.8.2.d.f.ip6.arpa name = www.fritz.nas.
x.x.x.x.x.x.x.x.x.x.x.x.x.x..x.x.x.x.x.x.x.x.x.x.x.x.x.8.2.d.f.ip6.arpa name = fritz-nas.fritz.box.
x.x.x.x.x.x.x.x.x.x.x.x.x.x..x.x.x.x.x.x.x.x.x.x.x.x.x.8.2.d.f.ip6.arpa name = fritz-nas.box.
x.x.x.x.x.x.x.x.x.x.x.x.x.x..x.x.x.x.x.x.x.x.x.x.x.x.x.8.2.d.f.ip6.arpa name = wpad.box.
x.x.x.x.x.x.x.x.x.x.x.x.x.x..x.x.x.x.x.x.x.x.x.x.x.x.x.8.2.d.f.ip6.arpa name = wpad.fritz.box.
x.x.x.x.x.x.x.x.x.x.x.x.x.x..x.x.x.x.x.x.x.x.x.x.x.x.x.8.2.d.f.ip6.arpa name = 192-168-178-1.fritz.box.
pi@pihole:~ $ nslookup 2001:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx 192.168.178.1
x.x.x.x.x.x.x.x.x.x.x.x.x.x..x.x.x.x.x.x.x.x.x.x.x.x.x.1.0.0.2.ip6.arpa name = fritz.box.
x.x.x.x.x.x.x.x.x.x.x.x.x.x..x.x.x.x.x.x.x.x.x.x.x.x.x.1.0.0.2.ip6.arpa name = www.fritz.box.
x.x.x.x.x.x.x.x.x.x.x.x.x.x..x.x.x.x.x.x.x.x.x.x.x.x.x.1.0.0.2.ip6.arpa name = fritzbox.internal.
x.x.x.x.x.x.x.x.x.x.x.x.x.x..x.x.x.x.x.x.x.x.x.x.x.x.x.1.0.0.2.ip6.arpa name = fritzbox.home.arpa.
x.x.x.x.x.x.x.x.x.x.x.x.x.x..x.x.x.x.x.x.x.x.x.x.x.x.x.1.0.0.2.ip6.arpa name = myfritz.box.
x.x.x.x.x.x.x.x.x.x.x.x.x.x..x.x.x.x.x.x.x.x.x.x.x.x.x.1.0.0.2.ip6.arpa name = www.myfritz.box.
x.x.x.x.x.x.x.x.x.x.x.x.x.x..x.x.x.x.x.x.x.x.x.x.x.x.x.1.0.0.2.ip6.arpa name = fritz.nas.
x.x.x.x.x.x.x.x.x.x.x.x.x.x..x.x.x.x.x.x.x.x.x.x.x.x.x.1.0.0.2.ip6.arpa name = www.fritz.nas.
x.x.x.x.x.x.x.x.x.x.x.x.x.x..x.x.x.x.x.x.x.x.x.x.x.x.x.1.0.0.2.ip6.arpa name = fritz-nas.fritz.box.
x.x.x.x.x.x.x.x.x.x.x.x.x.x..x.x.x.x.x.x.x.x.x.x.x.x.x.1.0.0.2.ip6.arpa name = fritz-nas.box.
x.x.x.x.x.x.x.x.x.x.x.x.x.x..x.x.x.x.x.x.x.x.x.x.x.x.x.1.0.0.2.ip6.arpa name = wpad.box.
x.x.x.x.x.x.x.x.x.x.x.x.x.x..x.x.x.x.x.x.x.x.x.x.x.x.x.1.0.0.2.ip6.arpa name = wpad.fritz.box.
und noch einer
pi@pihole:~ $ nslookup fd28:x.x.x.x.x.x.x.x.x.x.x.x.x.x..x.x.x.x.x.x.x.x.x.x.x.x.x fd28:x.x.x.x.x.x.x.x.x.x.x.x.x.x..x.x.x.x.x.x.x.x.x.x.x.x.x
x.x.x.x.x.x.x.x.x.x.x.x.x.x..x.x.x.x.x.x.x.x.x.x.x.x.x.x.8.2.d.f.ip6.arpa name = fritz.box.
x.x.x.x.x.x.x.x.x.x.x.x.x.x..x.x.x.x.x.x.x.x.x.x.x.x.x.x.8.2.d.f.ip6.arpa name = www.fritz.box.
x.x.x.x.x.x.x.x.x.x.x.x.x.x..x.x.x.x.x.x.x.x.x.x.x.x.x.x.8.2.d.f.ip6.arpa name = fritzbox.internal.
x.x.x.x.x.x.x.x.x.x.x.x.x.x..x.x.x.x.x.x.x.x.x.x.x.x.x.x.8.2.d.f.ip6.arpa name = fritzbox.home.arpa.
x.x.x.x.x.x.x.x.x.x.x.x.x.x..x.x.x.x.x.x.x.x.x.x.x.x.x.x.8.2.d.f.ip6.arpa name = myfritz.box.
x.x.x.x.x.x.x.x.x.x.x.x.x.x..x.x.x.x.x.x.x.x.x.x.x.x.x.x.8.2.d.f.ip6.arpa name = www.myfritz.box.
x.x.x.x.x.x.x.x.x.x.x.x.x.x..x.x.x.x.x.x.x.x.x.x.x.x.x.x.8.2.d.f.ip6.arpa name = fritz.nas.
x.x.x.x.x.x.x.x.x.x.x.x.x.x..x.x.x.x.x.x.x.x.x.x.x.x.x.x.8.2.d.f.ip6.arpa name = www.fritz.nas.
x.x.x.x.x.x.x.x.x.x.x.x.x.x..x.x.x.x.x.x.x.x.x.x.x.x.x.x.8.2.d.f.ip6.arpa name = fritz-nas.fritz.box.
x.x.x.x.x.x.x.x.x.x.x.x.x.x..x.x.x.x.x.x.x.x.x.x.x.x.x.x.8.2.d.f.ip6.arpa name = fritz-nas.box.
x.x.x.x.x.x.x.x.x.x.x.x.x.x..x.x.x.x.x.x.x.x.x.x.x.x.x.x.8.2.d.f.ip6.arpa name = wpad.box.
x.x.x.x.x.x.x.x.x.x.x.x.x.x..x.x.x.x.x.x.x.x.x.x.x.x.x.x.8.2.d.f.ip6.arpa name = wpad.fritz.box.
x.x.x.x.x.x.x.x.x.x.x.x.x.x..x.x.x.x.x.x.x.x.x.x.x.x.x.x.8.2.d.f.ip6.arpa name = 192-168-178-1.fritz.box.
Danke für die Bestätigung. Mir ist das aufgefallen, da ich Probleme hatte einige Clients an der IPv6 Adresse aufzulösen. Aktuell sieht es zwar in der PiHole Web UI gut aus, keine Clients ohne Hostnamen, aber generell gibt es das Problem der Namensauflösung noch.
Ich habe alle meine Clients in meinem Netzwerk mit festen IP Adressen in der Fritzbox versehen und diese IPv4 und die IPv6 FE80 Adressen in die Host Datei geschrieben. Damit passt dann die Zuordnung und das Reporting im Webinterface.
Ist nach dieser Erkenntnis wahrscheinlich ein unbewusster Workaound, aber funzt schon lange und zuverlässig.
Bei mir schon.
Wie schon geschrieben, ich verteile über die Fritzbox die FE80 Adresse und hab sie auch bei den DNS Server Einstellungen bei IPv6 angegeben.
Alle anderen FD28 oder FD80 Adressen funktionieren nicht eindeutig oder über längere Zeit. Das Ergebnis sieht man dann in den Top Clients mit IPv6 Adresse, die ohne Namen auftauchen.
Ob das an Pihole oder der Fritzbox liegt, kann ich nicht sagen.
Meiner Einschätzung nach am PiHole. Wenn ich einen lookup mache und die Antwort des PiHole nicht funktioniert, aber bei der FB doch, dann sehe ich den Fehler beim PiHole.
Du hast da einen guten Punkt vorgebracht, der mich zum Grübeln gerade bringt.
Ich habe „natürlich“ beide „never forward“ haken drin, weil bislang mein Gedanke war, diese requests will ich ja nicht an unbound oder einen externen upstream schicken.
Mir ist aber gerade nicht klar, wie sich das bei conditional forwarding verhält ?
Conditional Forwarding ist zunächst einmal keine vorgefertigte Funktion, sondern eine optionale Einstellung, deren Parameter von Dir selbst vorgegeben werden.
Wie sieht denn Deine Konfiguration aus: Bitte lade ein Debug Log hoch und poste hier anschließend nur die Token-URL.
Das Token generierst Du über
Sofern Pi-hole auch Rückwärtsanfragen für LLAs und GUAs an die Fritzbox weiterleiten soll, müssten auch für diese jeweils Einträge definiert werden.
Das ist aber nur eingeschränkt möglich bzw sinnvoll.
Für LLAs liefern Fritzboxen häufig keine Namensauflösung, und für öffentliche IPv6-Adressen mit GUA-Prefix sind strenggenommen öffentliche DNS-Server autoritativ (also die DNS-Server des ISPs, der das GUA-Prefix vergibt).
Die Fritzbox liefert für Rückwärtsanfragen zu GUAs zwar auch u.U. Namen aus, würde dadurch aber ggf. öffentlich vorhandene DNS-Einträge verschatten (das könnte z.B. unerwünscht sein, wenn ein Client in Deinem Netzwerk über einen DynDNS-Dienst aufgelöst werden soll).
Die Konfiguration eines Eintrags für das von der Fritzbox verwaltete GUA-Prefix wäre außerdem ständig zu aktualisieren, sobald sich das vom ISP zugeteilte GUA-Prefix ändert. Das kann je nach Vertrag regelmässig passieren (in D z.B. oft einmal täglich), und/oder nach einem Router-Neustart oder einer sonstigen Leitungsunterbrechung.
Bist Du zwingend auf die Rückwärtsauflösung von IPv6-Adressen zum GUA-Präfix Deiner Fritzbox angewiesen?
Dann könntest Du möglicherweise Conditional Forwarding abschalten und stattdessen die Fritzbox als Pi-holes einzigen Upstream einstellen, und die bisherigen Pi-hole-Upstreams (in Deinem Fall unbound) als Upstream Deiner Fritzbox.
Dazu müsstest Du dann allerdings auch Deine unbound-Konfiguration anpassen, sofern öffentliche DNS-Anfragen weiterhin über unbound laufen sollen.
Vielen Dank für die sehr ausführliche Analyse und Rückmeldung.
So wichtig ist es mir nicht, wichtig war mir zu verstehen, warum das nicht funktioniert und ob ich gegebenenfalls eine Fehlkonfiguration vorliegen habe.