PiHole DNS für alle erzwingen
Fritzbox: Pi-Hole erzwingen – Auch für Geräte, die dieses umgehen wollen
Manche Geräte scheren sich nicht um die systemseitigen DNS-Einstellungen und fragen einfach bei einem anderen DNS-Server nach. Demzufolge kann dieser Datenverkehr nicht mehr via Pi-hole gefiltert- bzw. blockiert werden. Abhilfe schafft das Sperren bestimmter Ports im Router.
Einen großen Teil meines täglichen Netzwerkverkehrs filtere ich via Pi-hole bzw. blockiere dort eine Menge Werbe- oder „Tracking“-Server. Ich habe jedoch die Vermutung, dass sich mein FireTV-Stick nicht immer an meinen im Netzwerk hinterlegten DNS-Server (dem Pihole) hält bzw. mitunter daran vorbei kommuniziert. Insbesondere SmartTVs scheinen dafür bekannt zu sein. Vielleicht können so etwas sogar einzelne Anwendungen auf Windows oder Android. Man verliert somit die Kontrolle über diesen Netzwerkverkehr.
DNS-Anfragen erfolgen hier über die beiden Ports 53 oder 853. Und diese kann man in seinem Router bzw. auf der Fritz!Box (Fritzbox) relativ einfach sperren x. Wie das geht, zeige ich im Folgenden.
x Entsprechende Geräte / Apps sollten allerdings eine „Fallback“-Funktionalität auf den regulär im Netzwerk eingetragenen DNS-Server (unser Pihole) enthalten. Hätten sie eine solche nicht, käme hier gar keine Verbindung mehr zustande.
Schritt 1: Die erweiterte Ansicht aktivieren
Einige Optionen sind unter „Fritz!OS“ versteckt. Diese müssten erst einmal sichtbar gemacht werden („Erweiterte Ansicht“). Dies gelingt einfach oben rechts im Menüpunkt, welcher unter den drei Punkten zugänglich ist. Zumindest muss dies bei meinem (alten) FritzOS erfolgen, denn ansonsten sieht man später die angelegten Blockierfilter, kann sie jedoch nie „scharf stellen“. Ggf. wurde dieser Fehler in einer neuen Version bereits behoben.
Schritt 2: Pihole (Raspberry Pi) der Unbeschränkt-Gruppe zuordnen
Die besagten Ports sollen später natürlich nicht für Pihole selbst blockiert werden bzw. nicht für das Gerät, auf welchem es läuft (bei mir ein Raspberry Pi). Daher fügen wir dieses Netzwerkgerät erst einmal der Netzwerkgruppe bzw. dem Zugangsprofil „Unbeschränkt“ zu unter:
Internet › Filter › Zugangsprofile › Unbeschränkt
Standardmäßig befindet sich noch kein Gerät in dieser Gruppe. Normalerweise sollten sich alle (weiteren) Geräte in der Gruppe ›Standard‹ befinden. Dazu gleich mehr.
Schritt 3: Filter für Port-Blockierungen anlegen
Nun definieren wir zwei Ports, die später blockiert werden können:

unter: Internet › Filter › Listen › Netzwerkanwendung hinzufügen fügen wir zwei neue Regeln mit je zwei Einträgen hinzu:
Name: „DNS-Sperre Standard (Pihole-Zwang)“
Konfiguration UDP: Quellport: beliebig | Zielport: 53
Konfiguration TCP: Quellport: beliebig | Zielport: 53
sowie
Eintrag: „DNS-Sperre DoT (Pihole-Zwang)“
Konfiguration UDP: Quellport: beliebig | Zielport: 853
Konfiguration TCP: Quellport: beliebig | Zielport: 853
Nach dem Speichern hat sich noch nichts geändert, keine Bange. Denn diese Regeln müssen ja erst einem bestimmten Profil („Zugangsprofil“) zugeordnet werden:
Schritt 4: Die neuen Regeln dem Standard-Profil zuweisen
Nun wechseln wir zu Internet › Filter › Zugangsprofile › Standard
… bzw. editieren dieses Standard-Profil: Hier weisen wir diesem unten unter „Gesperrte Netzwerkanwendungen“ die beiden neuen Regeln zu.
Alle Geräte, die unter diesem Standard-Profil laufen – dies sollten alle außer dem Pi-hole-Gerät sein – können nun nicht mehr auf diese beiden Ports zugreifen. Das war’s schon.
Konfiguration testen
Man kann nun testen, ob auf dem jeweiligen Gerät Pi-hole umgangen werden kann, indem man versucht, eine Domain mittels fremden DNS-Server aufzulösen. Hierzu nutzt man die Konsole (unter Windows die Eingabeaufforderung) und sendet zunächst z. B. diesen Befehl ab:
nslookup google.de
Dies sollte eine Erfolgsmeldung verursachen, denn damit nutzt man einfach den regulären DNS-Server (bzw. Pihole). Dort sollte man „google.de“ für diesen Test natürlich nicht gesperrt haben.
Sendet man aber diesen Befehl:
nslookup google.de 8.8.8.8
… sollte es zu einem Timeout kommen. Denn wir haben ja verboten, dass alle Geräte in der Standard-Gruppe einen fremden DNS-Server (hier 8.8.8.8) nutzen können (via Port 53 bzw. 853).
Durch die beiden gesperrten Ports kann nur noch das Pihole-Gerät DNS-Anfragen vornehmen. Standard DNS (Port 53) wie auch DNS over TLS (Port 853) ist von nun an autark für alle Geräte in der Standard-Gruppe nicht mehr möglich. Wozu auch? Jegliche DNS-Anfragen wollen wir im Heimnetz ja strikt durch den Pihole schleusen.
Problem: DNS over HTTPS (DoT)
DNS-Anfragen, die via „DNS over HTTPS“ (DoT) mittels einer Domain erfolgen – mitunter „Privates DNS“ genannt – können durch die Geräte / die Software dennoch vorgenommen werden. Hier hilft kein Sperren spezieller Ports, da diese Anfragen über den „normalen“ Port (443) erfolgen, welcher für den regulären Internetverkehr geöffnet bleiben muss.
Ich helfe mir hierbei so, dass ich diese Domains für „Privates DNS“ in meinem Heimnetz via Pihole sperre. Hierzu nutze ich diese Liste. Warum sollte ich diese Server auch in meinem Heimnetzwerk zulassen? Ich möchte ja gerade, dass Domainnamen nur über den unter Pihole hinterlegten DNS-Server (bei mir „Unbound“) aufgelöst werden können – und durch keine anderen.
Nur wenn ich mich mit meinem Smartphone außerhalb meines Heimnetzes bewege, nutze ich ggf. privates DNS. Dann greifen diese Pihole- bzw. diese Router-Regeln ja eh nicht x.
x Außer man ist via VPN stets mit dem Heimnetz verbunden – was bei mir in der Regel der Fall ist und im Übrigen überraschend stabil und akkuschonend funktioniert.