Pi-hole – Der Deal mit der Hafenbehörde

Containerschiff

Containerschiff (Symbolbild)

Bereits im August habe ich über Pi-hole geschrieben. Damals hatte ich mir einen Raspberry Pi 3 geholt und nach Anleitung aus dem Heise-Verlag mit der Filterbeere bestückt. (Der ehemals kostenpflichtige Artikel ist jetzt offenbar nur noch durch den Kauf des gesamten Heftes zu erhalten.) Es handelt sich um eine speziell für den Raspi zusammengestellte Lösung, die als DNS-Server im lokalen Netz fungiert.

Ein DNS (Domain Name System) löst menschenlesbare Servernamen wie z.B. “juengling-edv.de” in die zugeordneten IP-Adressen auf. Alle DNS-Anfragen, die über diesen Dienst laufen, erhalten als Antwort also u.a. eine IP-Adresse, mit der dann erst der eigentliche Server im Netzwerk kontaktiert werden kann. Diese Antwort wird eine kurze Zeit gepuffert, so dass nicht dauernd unnötigerweise DNS-Anfragen geschickt werden müssen. Aber irgendwann ist immer das erste Mal, und dann kommt Pi-hole in’s Spiel.

Einmal beim ersten Aufruf einer Website muss diese Namensauflösung durchgeführt werden. Wenn die Anfrage aus dem Cache des Pi-hole beantwortet werden kann, ist das Thema schnell erledigt. Falls nicht, wird sie an den nächst-höheren DNS-Server weitergeleitet, was z.B. der des Internet-Routers sein kann oder so bekannte wie 1.1.1.1 oder 8.8.8.8. In dieser Weise kann es weiter gehen, bis der letzte und oberste Server gefunden ist. Wann immer in dieser Kette eine Antwort erfolgt, wird diese dann rückwärts weiter gegeben, auch wenn die endgültige Antwort des Big Boss “ich weiß es nicht” lautet.

Im Falle von Pi-hole kann noch eine weitere Situation eintreten, nämlich wenn der angefragte Name auf einer Sperrliste steht. Dann antwortet dieser sofort mit einem 404-Error. Alles in allem keine dumme Sache, aber es dauert einen Moment, bis sich die neue Situation im Netz durchgesetzt hat. Also Geduld, dass nicht alles sofort geblockt wird.

Docker

Wie man sich denken kann, hat der Pi mit dem DNS-Server nicht allzu viel zu tun. Wenn Pi-hole also die meiste Zeit eh nur rumgammelt, liegt es nahe, dem Prozessor noch ein wenig mehr zuzumuten. Da die parallele Installation verschiedener Tools eventuell etwas “hakelig” ist, bietet sich das geniale Tool Docker hierzu an.

Docker vereinfacht die Bereitstellung von Anwendungen, weil sich Container, die alle nötigen Pakete enthalten, leicht als Dateien transportieren und installieren lassen. Container gewährleisten die Trennung und Verwaltung der auf einem Rechner genutzten Ressourcen. (Wikipedia)

Der Name leitet sich vermutlich aus dem englischen Wort für Hafenarbeiter ab. Die vorinstallierten Pakete heißen folgerichtig “Container”. Insofern ist die Docker-Software eigentlich eine Containerverwaltung. Die “Images” für diese Container kann man sich entweder selbst erstellen oder von Docker-Hub herunterladen. “Hub” ist wohl am besten mit Hauptumschlagplatz zu übersetzen.

Damit Docker auf dem Pi benutzt werden kann, muss es zunächst einmal installiert werden. Dazu hat Sebastian Brosch eine gute Anleitung verfasst. Insbesondere das Update am Ende seines Artikels ist interessant, das die ganze Arbeit auf einen Einzeiler reduziert. Das alles macht man am besten via SSH auf dem Raspberry Pi, der dazu übrigens nur das minimale Raspbian Stretch Lite benötigt. Klar gibt es Raspbian auch mit graphischer Oberfläche, aber wozu Ressourcen verschwenden, wenn man die später ohnehin nicht mehr benötigt?

Praktischerweise gibt es bereits ein offizielles Docker-Image für Pi-hole, wo auch das passende Docker-Kommando beschrieben ist, das das Image in einem Schritt herunterlädt, auspackt, installiert und startet.

Danach sollte die Admin-Oberfläche von Pi-hole bereits über die IP-Adresse des Pi, z.B. http://192.168.123.45/admin erreichbar sein. Ein Linux-System, also auch der Raspi, verrät uns übrigens seine eigenen IP-Adressen mit dem Kommando hostname -I.

Integration in das Netzwerk

Wenn ich nichts vergessen habe, sind jetzt nur noch drei Dinge zu erledigen. Erstens muss dafür gesorgt werden, dass der Raspi im Netzwerk immer über ein und dieselbe IP-Adresse erreichbar ist. Bei der Fritz-Box ist das z.B. sehr einfach möglich, indem unter “Heimnetz -> Netzwerk -> Netzwerkverbindungen” der Stift rechts in der Zeile des Gerätes angeklickt wird. Dann aktiviert man “immer die gleiche IPv4-Adresse zuweisen” und bestätigt die Einstellung.

Raspi-IP-Adresse

Zweitens muss der Router in seinen DHCP-Einstellungen diese IP-Adresse als DNS-Server mitgeteilt bekommen. In der Fritz-Box ist das unter “Heimnetz -> Netzwerk -> Netzwerkeinstellungen -> IPv4-Adressen” der Wert für “Lokaler DNS-Server”.

Drittens empfiehlt es sich, in der Pi-hole-Oberfläche unter “Settings -> DNS” die Einstellung “Never forward non-FQDNs” herauszunehmen und “Use Conditional Forwarding” zu aktivieren. Für letzteres muss dann noch die interne IP-Adresse der Fritz-Box (oder des verwendeten Routers) sowie der von diesem für das Netzwerk festgelegte Name eingegeben werden. Dann sollten alle internen Geräte auch wieder über deren symbolischen Namen erreichbar sein.

Und dann braucht es nur noch ein wenig Geduld, bis die Änderungen auf den Geräten angekommen sind. Das kann etwas dauern, für Ungeduldige empfiehlt sich ein Neustart.

Und wie geht es weiter?

Wenn das alles erledigt ist und funktioniert, können weitere Docker-Container nach gleichem Muster installiert werden. Docker selbst ist ja nun auf dem Pi verfügbar, weitere installationen beschränken sich dann nur noch auf die Ausführung des richtigen “docker run”-Kommandos. Dabei ist natürlich die Größe der SD-Karte sowie die Speicher- und Prozessorauslastung zu beachten, damit unser kleiner Pi nicht zu sehr in’s Schwitzen kommt.

Ein kleiner Hinweis zu den regelmäßigen Updates sei ebenfalls gestattet, denn wir wollen ja nicht den Fehler wiederholen, der in der IoT-Welt regelmäßig für Schlagzeilen sorgt :-)

Ähnliche Artikel:

Schreibe einen Kommentar

Deine Email-Adresse wird nicht veröffentlicht.

19 + 20 =