Pi-Hole mit unbound im eigenen Netzwerk betreiben - Deskmodder.de (2024)

Der Adblocker Pi-Hole ist in der IT-Szene bereits seit einigen Jahren bekannt. Nun erobert er auch zunehmend den Consumer-Markt. Eine perfekte Ergänzung dazu ist unbound. Als DNS-Resolver übernimmt unbound künftig alle DNS-Anfragen im Netz und leitet sie an die Root-DNS-Server des Internets weiter. Damit entfallen Dienste wie Quad9 oder DNS0.eu, die teilweise bereits im Blog vorgestellt wurden. Neben einer deutlichen Beschleunigung der DNS-Abfragen hat man auch den Vorteil, dass mögliche Netzsperren kein Thema mehr sind.

Pi-Hole mit unbound im eigenen Netzwerk betreiben - Deskmodder.de (1)

Diese Hardware braucht es

Um Pi-Hole und unbound zu nutzen, braucht man natürlich nicht, wie in meinem Fall, gleich einen eigenen Homeserver mit VMware oder einer anderen Virtualisierungslösung. Auch auf einem Raspberry Pi läuft die Kombination der beiden Dienste sehr gut. Neben diesen beiden Möglichkeiten kommt natürlich auch ein NAS infrage, vorausgesetzt es unterstützt VMs. Die Anbindung über LAN an den jeweiligen Router wird jedoch für alle Anwendungsszenarien empfohlen.

Pi-Hole installieren

Als Basis für die Erstellung der Anleitung wurde eine VMware VM mit einem Ubuntu Server in der Version 22.0.4.1 LTS verwendet. Die Anleitung kann im Folgenden abweichen, wenn eine andere Linux-Version verwendet wird. Auch eine Installation über einen Docker-Container ist möglich. Auf diese Möglichkeit gehe ich hier jedoch nicht ein.

Ein einziger Befehl reicht aus, um Pi-Hole zu installieren. Unter Umständen muss jedoch vorher das Paket curl über sudo apt install curl installiert werden. Die Installation des Pakets erfolgt komfortabel per Skript direkt aus GitHub über curl -sSL https://install.pi-hole.net | bash.

Pi-Hole mit unbound im eigenen Netzwerk betreiben - Deskmodder.de (2)

Während der Installation erfolgt u. a. die Abfrage des Upstream-DNS-Servers. Hier wird ein beliebiger Anbieter aus der Liste ausgewählt. Dieser wird einfach ersetzt, nachdem unbound installiert und konfiguriert wurde. Des Weiteren wird nach der Installation des Web UI gefragt, was besonders für Einsteiger von Vorteil ist. Hat man den kompletten Wizard durchlaufen, beginnt bereits Pi-Hole zu installieren. Nach deren Abschluss wird der Startbildschirm mit der IPv4- und IPv6-Adresse sowie dem Passwort zum Einloggen in Pi-Hole angezeigt.

Pi-Hole mit unbound im eigenen Netzwerk betreiben - Deskmodder.de (3)

Wer das Passwort ändern oder ganz löschen möchte, wovon ich abrate, kann dies schnell und einfach mit dem Kommando sudo pihole -a -p erledigen. Damit ist Pi-Hole auch schon installiert. Mit unbound geht es weiter.

unbound installieren

Mit sudo apt install unbound und der anschließenden Bestätigung, die ausgewählten Pakete wirklich installieren zu wollen, wird unbound installiert. Danach muss nur noch kurz gewartet werden. Dann ist der Dienst mit den benötigten Abhängigkeiten installiert. Auch wenn die root.hints über die Abhängigkeiten vom Paketinstaller automatisch mitinstalliert werden sollten, empfiehlt es sich, die root.hints über den folgenden Befehl herunterzuladen:

wget https://www.internic.net/domain/named.root -qO-| sudo tee /var/lib/unbound/root.hints

Der Download ist abgeschlossen. Nun muss unbound noch konfiguriert werden. Dazu wird die Konfigurationsdatei in einem Editor geöffnet, in meinem Fall nano.

sudo nano /etc/unbound/unbound.conf.d/pi-hole.conf

Pi-Hole mit unbound im eigenen Netzwerk betreiben - Deskmodder.de (4)

Der folgende Inhalt wird in die Konfigurationsdatei eingetragen. Falls keine IPv6-Adresse am lokalen Internetanschluss zur Verfügung steht, muss die entsprechende Zeile natürlich angepasst werden.

server:# If no logfile is specified, syslog is used# logfile: „/var/log/unbound/unbound.log“verbosity: 0interface: 127.0.0.1port: 5335do-ip4: yesdo-udp: yesdo-tcp: yes# May be set to yes if you have IPv6 connectivitydo-ip6: yes# You want to leave this to no unless you have *native* IPv6. With 6to4 and# Terredo tunnels your web browser should favor IPv4 for the same reasonsprefer-ip6: no# Use this only when you downloaded the list of primary root servers!# If you use the default dns-root-data package, unbound will find it automatically#root-hints: „/var/lib/unbound/root.hints“# Trust glue only if it is within the server’s authorityharden-glue: yes# Require DNSSEC data for trust-anchored zones, if such data is absent, the zone becomes BOGUSharden-dnssec-stripped: yes# Don’t use Capitalization randomization as it known to cause DNSSEC issues sometimes# see https://discourse.pi-hole.net/t/unbound-stubby-or-dnscrypt-proxy/9378 for further detailsuse-caps-for-id: no# Reduce EDNS reassembly buffer size.# IP fragmentation is unreliable on the Internet today, and can cause# transmission failures when large DNS messages are sent via UDP. Even# when fragmentation does work, it may not be secure; it is theoretically# possible to spoof parts of a fragmented DNS message, without easy# detection at the receiving end. Recently, there was an excellent study# >>> Defragmenting DNS – Determining the optimal maximum UDP response size for DNS <<<# by Axel Koolhaas, and Tjeerd Slokker (https://indico.dns-oarc.net/event/36/contributions/776/)# in collaboration with NLnet Labs explored DNS using real world data from the# the RIPE Atlas probes and the researchers suggested different values for# IPv4 and IPv6 and in different scenarios. They advise that servers should# be configured to limit DNS messages sent over UDP to a size that will not# trigger fragmentation on typical network links. DNS servers can switch# from UDP to TCP when a DNS response is too big to fit in this limited# buffer size. This value has also been suggested in DNS Flag Day 2020.edns-buffer-size: 1232

Nach dem Einfügen und Speichern des Inhalts der Konfigurationsdatei muss der unbound-Dienst mit dem folgenden Befehl neu gestartet werden.

sudo service unbound restart

Ob unbound funktioniert, kann mit folgendem Befehl getestet werden.

dig pi-hole.net @127.0.0.1 -p 5335

Pi-Hole mit unbound im eigenen Netzwerk betreiben - Deskmodder.de (5)

Pi-Hole mit unbound im eigenen Netzwerk betreiben - Deskmodder.de (6)

Bei der ersten Anfrage wurde die URL, die im Beispiel verwendet wurde, innerhalb von 144 ms gefunden. Die Zeit, in der unbound nun die Ziel-Adresse kennt, beträgt bei einem zweiten Aufruf 0 ms. In Zukunft müssen die Zieladressen erst beim ersten Mal abgerufen werden. Das Öffnen einer Webseite oder App dauert daher länger. In Zukunft wird das Abrufen der Adressen jedoch nahezu in Echtzeit erfolgen.

Pi-Hole und unbound miteinander verbinden

Für die Verbindung von Pi-Hole mit unbound ist nun der Aufruf des Web-UI über die im Vorfeld bekannte IP-Adresse bzw. den Hostnamen erforderlich. Mit dem vergebenen Passwort loggt man sich ein. Unter dem Punkt Settings ruft man die DNS-Einstellungen auf. Auf der linken Seite werden unter Upstream DNS-Servers alle Häkchen entfernt. Im rechten Feld wird unter Custom 1 (IPv4) 127.0.0.1#5335 eingetragen. Zusätzlich muss unter Custom 3 (IPv6) die lokale IPv6-Adresse ::1#5335 eingetragen werden, sofern man unbound für die Verwendung mit IPv6 konfiguriert hat. Anschließend wird noch DNSSEC aktiviert und die Einstellungen gespeichert. Schon ist die Verbindung zwischen den beiden Diensten hergestellt.

Automatische root.hints-Updates

Es empfiehlt sich nun, ein Update-Skript zu erstellen, damit unbound auch nach zukünftigen Updates von root.hints zuverlässig funktioniert. Dieses kann in einem beliebigen Ordner liegen.

#!/bin/bashwget -O root.hints https://www.internic.net/domain/named.root &&(mv -fv root.hints /var/lib/unbound/service unbound restart)

Das erstellte Skript wird nun ausführbar gemacht. Je nachdem, wie das Skript benannt wurde, muss dazu das Befehl angepasst werden.

sudo chmod +x update_unbound_dns.sh

Zum automatischen Ausführen des Updater-Skripts ist nun ein Cron-Job erforderlich. Im Crontab ist hierbei unter Umständen eine Anpassung des Scriptpfades erforderlich.

sudo nano /etc/crontab

* * * */3 * root /home/user/update_unbound_dns.sh >/dev/null 2>&1

In der hier gezeigten Einstellung werden die root.hints nun automatisch alle drei Monate durch den Cronjob auf den neuesten Stand gebracht, sodass es keine Probleme mit unbound geben sollte.

DNS-Server im Router ändern

Damit Pi-Hole und unbound nun im gesamten Netzwerk funktionieren, muss nun noch der DNS-Server im eigenen Router geändert werden. Im Fall der FRITZ!Box ist dieser Punkt unter Internet – DNS-Server zu finden. Die Adressen des Pi-Hole Hosts müssen dort nun unter IPv4 und IPv6 eingetragen werden.

Pi-Hole mit unbound im eigenen Netzwerk betreiben - Deskmodder.de (7)

Anschließend müssen die Einstellungen noch gespeichert werden und schon funktioniert der Dienst. Die DNS-Anfragen, die von den eigenen Geräten gestellt werden, sollten nun auch über die Weboberfläche von Pi-Hole erscheinen. Über die Web-Benutzeroberfläche können weitere Filterlisten hinzugefügt und bestehende Listen aktualisiert werden. Für Eltern mit minderjährigen Kindern werden zudem entsprechende Listen im Netz angeboten, die für Minderjährige ungeeignete Inhalte blockieren. Außerdem können über das Web-UI Seiten auf eine Whitelist gesetzt oder ganze Dienste wie zum Beispiel TikTok komplett gesperrt werden.

Pi-Hole mit unbound im eigenen Netzwerk betreiben

Pi-Hole mit unbound im eigenen Netzwerk betreiben - Deskmodder.de (2024)
Top Articles
Latest Posts
Article information

Author: Van Hayes

Last Updated:

Views: 5888

Rating: 4.6 / 5 (66 voted)

Reviews: 81% of readers found this page helpful

Author information

Name: Van Hayes

Birthday: 1994-06-07

Address: 2004 Kling Rapid, New Destiny, MT 64658-2367

Phone: +512425013758

Job: National Farming Director

Hobby: Reading, Polo, Genealogy, amateur radio, Scouting, Stand-up comedy, Cryptography

Introduction: My name is Van Hayes, I am a thankful, friendly, smiling, calm, powerful, fine, enthusiastic person who loves writing and wants to share my knowledge and understanding with you.