Schlagwort: Pihole

Ein Upgrade für den Homeserver Teil 8 – Pihole

Seit gut drei Jahren betreibe ich einen RaspberryPi als Homeserver. Zunächst reichte dieser noch gut aus. Mit der Zeit wurde aber nicht nur die Zahl der Anwendungen, die auf dem Raspberry laufen, mehr, sondern auch die Leistungsanforderungen der Anwendungen selbst. Besonders meine ich damit die Influx Datenbank, die seit über drei Jahren jede Minuten um einen Datensatz der PV-Anlage größer wird. Die Datenbank braucht mittlerweile über 10 Minuten zum Starten. Auch diese Webseite braucht zum Laden deutlich länger, als sie sollte. Wenn ich den Raspberry komplett neu starte, braucht es ca. eine Stunde, bis alle Anwendungen wieder laufen. Das ist definitiv zu viel. Es sollte also ein neuer Rechner her. In dieser Artikelserie möchte ich davon berichten.


Übersicht aller Artikel dieser Serie


Was ist Pihole?

Pihole ist ein Netzwerkweiter Blocker auf DNS-Ebene, unter anderem zum Blockieren von Werbung und Trackern

Vorbereitungen

Auf Ubuntu läuft standardmäßig ein DNS-Service auf Port 53. Das ist schlecht, denn auf Port 53 soll später unser Pihole laufen. Der Service lässt aber deaktivieren mit:

Jetzt ist unser Ubuntu aber ohne DNS-Server unterwegs, d. h., es ist nicht mehr dazu in der Lage Domains aufzulösen. Das lässt sich mit einem Eintrag in einer Datei beheben:

Dort ändern wir die Zeile nameserver 127.0.0.53 in nameserver 192.168.178.1 oder eben die IP-Adresse eines anderen DNS-Servers.

Ubuntu ist jetzt fertig für die Installation von Pihole.

Installation von Pihole

Wir installieren wieder Pihole in einem Docker-Container. Dazu geben wir dem Container einen Namen, wählen das Image „pihole/pihole:latest“ und geben die Port 53 und 80 frei. Port 53 sowohl über TCP, als auch über UDP.

Installation von Pihole in Docker

Dann legen wir 2 Volumes an:

Installation von Pihole in Docker

Und setzen über Environment Variablen die Zeitzone und das Passwort.

Installation von Pihole in Docker

Der Pihole Container kann jetzt erstellt werden und ist dann unter dem gewählten Port mit /admin erreichbar, also: http://IP_ADRESSE:PORT/admin

Dort kann man jetzt Einstellungen vornehmen, wobei das erstmal nicht nötig ist. Pihole funktioniert auch schon auf Standardeinstellungen sehr gut.

Hinzufügen von Blocklisten

Trotzdem verwende ich einige weitere Blocklisten. Hauptsächlich sind das die Blocklisten von rpilist.

Lokale Hostnames in Pi-hole korrekt auflösen

Seit einigen Jahren suchte ich schon nach einer Lösung, Hostnames im lokalen Netzwerk mit Pi-Hole korrekt aufzulösen. Nun bin ich selbst auf eine Lösung gekommen.

1. Möglichkeit: Conditional Forwarding

Diese Möglichkeit hatte ich einige Zeit, ich war damit aber nie so wirklich zufrieden, da immer hinter den Hostnames ein .fritz.box ergänzt werden musste, also z.B. raspberrypi.fritz.box.

Bei „Settings“ > „DNS“ > „Advanced settings“ muss man dazu folgende Punkte einstellen:

  • Unter „Never forward non-FQDNs“ und „Never forward reverse lookups for private IP ranges“ keinen Haken setzen.
  • Unter „Use Conditional Forwarding“ einen Haken setzen.
  • Den Bereich des lokalen Netzwerkes eingeben, zum Beispiel 192.168.178.0/24. /24 steht für x.x.x.1 bis x.x.x.255.
  • Die IP Adresse des DHCP Servers, meist der Router, eingeben, z.B. 192.168.178.1.
  • Als Local Domain Name verwende ich fritz.box

2. Möglichkeit: Der Router als einziger DNS Server

Diese Möglichkeit funktionierte bei mir schon besser. Bei „Settings“ > „DNS“ > „Advanced settings“ muss man dazu folgende Punkte einstellen:

  • In dem linken Kasten „Upstream DNS Servers“ alle Haken rausnehmen.
  • Im rechten Kasten „Upstream DNS Servers“ Als Custom 1 und Custom 3 die IP Adressen (IPV4 und IPV6) der Fritzbox bzw. des Routers eintragen.

Nun funktionieren die Hostnames wie gewohnt.