Fritz!Box, PiHole, DHCPv6 und das Query-Log

4 Mai 2024 - Lesezeit: 751 Minuten

Seit Monaten versuche ich meine Fritz!Box auf natives IPv6 umzustellen und parallel auch DHCPv6 für meine Clients zu aktivieren. Daran scheitert es tatsächlich auch nicht, aber mein PiHole zeigt im Query-Log immer nur die IPv6 Adresse der Clients an. Das nervt.

Natürlich habe ich versucht die Clients per "DNS Records" im PiHole einzutragen und damit die Anzeige des Clientnamen zu ermöglichen, aber das war ein Fehlschlag. Genau wie eine Config anzulegen, in der für eine Clientbezeichnung mehrere IPs hinterlegt werden können.
Da DHCPv6 alle Nase lang die lokale IP ändert, war das wie der Kampf gegen Windmühlen.

Also musste eine andere Lösung her.

Was sind die technischen Voraussetzungen?

Folgende Geräte sind in Nutzung:

  • Vodafone GigaMax Leitung per Kabel
  • Fritz!Box Cable
    • DHCPv4 und DHCPv6 aktiviert
    • Standard IPv4 DHCP Einstellungen mit 192.168.178.0/24 Netz
  • Raspberry Pi 4 mit installiertem PiHole
Vorbereitungen im PiHole

Ganz wichtig ist, dass ihr aus den Einstellungen im PiHole unter "Local DNS -> DNS Records" etwaige vorhandene Einträge mit Bezug auf eure Clients löscht. Außerdem eine etwaige manuelle Config unter /etc/dnsmasq.d mit der Auflistung von Clients mit den dazugehörigen IPs umbenennen oder löschen.

Unter "Settings -> DNS" hinterlegt ihr eure entsprechenden IPv4 und IPv6 DNS Server (ich selbst habe dort Localhost hinterlegt, weil ich noch einen DNSCrypt-Proxy an PiHole angeflanscht habe).

Einstellungen in der Fritz!Box

Beachtet bitte, dass alle von mir durchgeführten Einstellungen an der Fritz!Box im Bereich der Internetverbindung, mit einer Fritz!Box Cable an einem Vodafone Cable Max Anschluss getestet wurden.

Zuallererst sollte in der Fritz!Box IPv6 für den Internetzugang aktiviert werden. In meinem Beispiel habe ich natives IPv6 aktiviert, hier könnt ihr euch aber natürlich selbst austoben.

Unter "Internet -> Zugangsdaten -> IPv6" habe ich folgende Einstellungen aktiviert:

IPv6-Anbindung

IPv6 Internetverbindung in der Fritz!Box

Verbindungseinstellungen

Unter "Heimnetz -> Netzwerk -> Netzwerkeinstellungen -> IPv6-Einstellungen" sind bei mir folgende Einstellungen hinterlegt:

Router Advertisement im LAN aktiv

Weitere IPv6-Router im Heimnetz

DNSv6-Server im Heimnetz

Hier ist zu beachten, dass ihr bitte die IPv6 Adresse eures PiHoles eintragt, damit diese den Clients als DNS Server Adresse automatisch zugewiesen wird.

DHCPv6-Server im Heimnetz

Hier macht es quasi keinen Unterschied was eingetragen wird. Theoretisch könntet ihr den DHCP Server sogar deaktivieren, weil die Clients sich die IPv6 Adresse dann einfach per SLAAC selbst zuweisen und trotzdem über das Router Advertisement den DNS Server zugewiesen bekommen (allerdings funktioniert dies bei der Fritz!Box nur unzuverlässig).
Damit meine Fritz!Box aber in jedem Fall die IPv6 Adressen der Clients kennt, habe ich den DHCPv6 Server aktiviert.

Nun sollten alle IPv6-fähigen Clients in eurem Netzwerk nach und nach eine IPv6 Adresse per DHCPv6 bekommen.

Notwendige Config-Files im PiHole

Im PiHole gibt es zwei wichtige Bereiche, in denen Config-Files angepasst oder angelegt werden müssen. Zum einen "/etc/dnsmasq.d/", zum anderen "/etc/pihole/".

Fangen wir an...

/etc/pihole/

Wenn ihr in dieses Verzeichnis wechselt, sehr ihr diverse Dateien und Ordner. Relevant für uns ist die "pihole-FTL.conf" (WICHTIG: Wenn ihr hier falsche Einstellungen vornehmt, dann startet FTL im PiHole anschließend nicht mehr!)

Also die Datei öffnen und ggf. mit Kennwort bestätigen

sudo nano pihole-FTL.conf

In der Datei stehen meines Wissens nach in der Standardconfig folgende Dinge

#; Pi-hole FTL config file
#; Comments should start with #; to avoid issues with PHP and bash reading this file
PRIVACYLEVEL=0
RATE_LIMIT=1000/60

Wir fügen nun folgendes hinzu (die Erklärung der Einträge schreibe ich mit Kommentar über die Funktion)

#; FTL ignoriert Anfragen von der lokalen Maschine
IGNORE_LOCALHOST=yes
#; FTL analysiert nur A oder AAAA Anfragen (kann man machen, muss man aber nicht)
ANALYZE_ONLY_A_AND_AAAA=true
#; Kann man aktivieren, wenn man auf seinen Apple Geräten Private Relay aktiviert hat, was PiHole umgeht. Wird hiermit unterbunden
BLOCK_ICLOUD_PR=true
#; Sorgt dafür, dass das Query-Log alle X Minuten in die FTL Datenbank geschrieben wird
DBINTERVAL=30
#; Sorgt dafür, dass die FTL Datenbank nur Daten der letzten X Tage vorhält
MAXDBDAYS=30
#; Sorgt dafür, dass Firefox keine eigenen DoH am PiHole vorbei aufbauen kann
MOZILLA_CANARY=true
#; Die beiden Einträge sorgen dafür, dass FTL gezwungen wird, IPv6 und IPv4 Hostnames aufzulösen
RESOLVE_IPV6=yes
RESOLVE_IPV4=yes
#; Sorgt dafür, dass FTL die Netzwerktabelle prüft und schaut, ob eine IP Adresse bereits einer MAC-Adresse zugewiesen ist
NAMES_FROM_NETDB=true
#; Sorgt dafür, dass die Hostnamen für IP Adressen nur für die Clients abgefragt werden, die nicht in der Netzwerktabelle bekannt sind
REFRESH_HOSTNAMES=UNKNOWN

Wer noch mehr Einträge anpassen möchte, oder die genauen Beschreibungen der Einträge haben möchte, findet diese in der PiHole-Dokumentation.

/etc/dnsmasq.d/

Nun müssen wir noch einige Configs im Bereich DNSMasq.d anlegen. Hierfür wechselt bitte unter "/etc/dnsmasq.d/" und legt dort eine neue Config mit folgendem Befehl an (den Dateinamen könnt ihr auswählen wie ihr wollt)

sudo nano 59-query.conf

In dieser Datei passt ihr folgendes an

#Conditional_Forwarding_IPv6
rev-server=fd::/64,192.168.178.1
server=/arpa/192.168.178.1

Im Prinzip besagen die beiden Zeilen nichts anderes, als dass für unbekannte IP Adressen die Hostnamen bei der Fritz!Box abgefragt werden sollen.
In Verbindung mit den Konfigurationen in der "pihole-FTL.conf", werden euch nun im Query-Log die Namen anstatt der IP Adressen der Clients angezeigt.
Allerdings kann es ca. 5 Minuten dauern, bis die Anzeige korrekt ist. Wenn also der Client eine neue IPv6 Adresse zugewiesen bekommen hat, dann wird eine gewisse Zeit trotzdem im Log nur die IP angezeigt. Nach spätestens 5 Minuten wir dann der Hostname angezeigt (bei mir i.d.R. nach weniger als 60 Sekunden).

Abschlussworte

Ich hoffe, dass ich euch mit dieser kleinen Anleitung helfen konnte. Beachtet aber bitte, dass alle Einstellungen in erster Linie für meine Konfiguration hier zu Hause gelten und getestet sind. Es kann also sein, dass auf Grund eurer Konfigurationen in eurem Netzwerk, die ein oder andere Einstellung anders gesetzt werden muss.

Daher probiert diese Anleitung bitte nicht zwischen Tür und Angel aus. Ich sitze an dem Thema seit ungefähr 4 Wochen und habe rund 15 Stunden reine Arbeitszeit da reingesteckt.
Insofern nehmt euch Zeit dafür und probiert aus.

Fragen wie immer gerne in den Kommentaren oder per Mastodon.

Über

Hier soll es um Technik, Politik und meine persönliche Meinung gehen. Da ich meinen RaspberryPi mit PiHole sehr mag und daran gerne bastle, versuche ich hier auch immer Neuigkeiten darum zu teilen.

Politisch links-neutral und ich glaube fest daran, dass alle Menschen einfach nur Menschen sind.