Surfen mit Spamblock und privater

Mit dem Thema werde ich keine überragende Neuigkeiten vermitteln. Es geht immerhin um das Projekt Pi-Hole, was bei den meisten bekannt sein dürfte. An dieser Stelle hilft eigentlich schon die Installationsanleitung auf der Projektseite weiter und alles ist gut. Ja und nein, denn hier soll es auch etwas um die Hardware gehen.

Ein DNwas?

Kurz zur Klärung: Was macht ein DNS? Ein DNS (Domain Name Server) wandelt eine Adresse im Netzwerk(die wir Menschen uns am besten merken können) in die (aktuell gültige) IP-Adresse (quasi die Telefonnummer des Zielrechners, mit dem ein PC besser arbeiten kann) um. Kleines Beispiel: Die Domain google.de wird im Hintergrund in die IP 142.250.181.195 aufgelöst.

Was macht nun der PiHole so tolles? Zum einen geht nicht jede Anfrage an einen externen Server -> nur über den DNS-Server lässt sich dann schlechter tracken, was sich gerade wer ansieht. Zum anderen kann man PiHole mit sog. Blocklisten füttern, quasi schwarze Listen von Webadressen, die für Spam bekannt sind, mal korrumpiert wurden, oder anderweitig aufgefallen sind. Zudem kann man auch den Zugriff von (einzelnen) Geräten im Netzwerk nach draußen einschränken. Aus persönlicher Erfahrung: Kann hilfreich sein, zB. bei billigen Soundbars etc. die ständig nach China telefonieren wollen.

Hardware – Es braucht nicht viel!

Grundsätzlich ist immer die Frage: Wie groß ist mein Netzwerk und welchen Komfort will ich, denn danach richtet sich auch die Hardware. Grundsätzlich konnte ich gute Erfahrungen mit einem Raspberry Pi1B machen. Der Arbeitsspeicher ist bei meinem System im Schnitt zu 20-25% ausgelastet, die CPU im Schnitt bei 25-30% (mit Ausnahmen bei Updates o.ä.). Das gilt für ein direkt installiertes System im kleinen Familiennetzwerk mit ~30-50 Teilnehmern (dazu zählen auch Lautsprecher, TV, Konsolen, Handys und IoT-Komponenten) und anderen Services. Der PiHole war hier auch DHCP-Server. Sprich für den Job vollkommen ausreichend. Allerdings: Mehr Teilnehmer -> mehr Anfragen -> mehr Arbeit und damit höhere Latenzzeiten -> eventuell etwas längere Ladezeiten bei neuen Domainanfragen.

Soll’s etwas mehr sein? PiHole vielleicht im Docker? Tests mit dem Pi2B waren definitiv unbefriedigend. Einen Pi3 war gerade nicht verfügbar, aber ein Pi4 mit 8GB Arbeitsspeicher. Mit der Installation von Docker, Portainer und PiHole ist dieser dann kaum noch gefordert. In meinem Falle allerdings gut, da dieser auch noch andere Aufgaben übernehmen soll.

Installation – direkt

An der Stelle kann ich nur die Anleitung auf der pi-hole-Projektseite empfehlen. Vorher das Image via Raspberry Pi Imager auf eine SD-Karte installieren (hier empfiehlt sich eine einfache Variante, ohne Desktop, der nur Ressourcen frisst). Nicht vergessen SSH zu aktivieren und schon einen Nutzer mit Passwort anzugeben. Sobald dann der Pi das erste mal startet, bezieht dieser sich eine IP vom DHCP und kann nun gefunden werden (hierzu empfiehlt sich die App Fing).

Einloggen via ssh -p22 <user>@<ip-adresse> in der Shell unter Linux, oder mit Putty unter Windows. Danach erst einmal das System updaten, dann die Installation gemäß der pi-hole-Projektseite durchführen und den DNS im Router eintragen.

sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y
curl -sSL https://install.pi-hole.net | bash

Soweit sollte es damit schon mal laufen. Nun nur noch den DHCP-Server (meist zu diesem Zeitpunkt der Router an der Telefondose/Kabelanschluss passend umstellen, dass er den DNS-Server mit verteilt.

Installation – docker

Lange nicht mein Thema, nun packe ich liebend gerne alles mögliche in Container, sofern es Sinn macht. Wenn die Ressourcen da sind und man nicht zu Hardware nah arbeiten muss, warum nicht?

Auch hier gleiches Vorgehen: Vorher das Image via Raspberry Pi Imager auf eine SD-Karte installieren (hier empfiehlt sich eine einfache Variante, ohne Desktop, der nur Ressourcen frisst). Nicht vergessen SSH zu aktivieren und schon einen Nutzer mit Passwort anzugeben. Sobald dann der Pi das erste mal startet, bezieht dieser sich eine IP vom DHCP und kann nun gefunden werden (hierzu empfiehlt sich die App Fing).

Einloggen via ssh -p22 <user>@<ip-adresse> in der Shell unter Linux, oder mit Putty unter Windows. Ab hier weicht die Installation etwas ab, da erst der Docker installiert werden muss. Ich mach es mir gerne einfach und schreibe ein Script, welches dann ein Presetting durchführt. Dafür einfach

  • eine neue Datei mit nano install.sh öffnen
  • folgendes Script rein kopieren
  • die Stellen wie <DNS IP> und <Router IP> entsprechend ersetzen
  • mit STRG+X schließen und
  • das Script mit sudo sh install.sh ausführen
#!/bin/bash

# Updaten etc.
sudo apt update && sudo apt upgrade -y && sudo autoremove -y

# Docker installieren
sudo apt install docker-compose -y

# Install Portainer
# Ordner erstellen
wfolder="/opt/portainer"
sudo mkdir $wfolder

# Compose-Datei anlegen und füllen
cd $wfolder
sudo sh -c "echo 'version: \"3\"
services:
  portainer:
    image: portainer/portainer-ce:latest
    ports:
      - \"9000:9000\"
    environment:
      TZ: \"Europe/Berlin\"
    volumes:
      - \"$wfolder/data:/data\"
      - \"/var/run/docker.sock:/var/run/docker.sock\"
    restart: unless-stopped
volumes:
  data:' >> ./docker-compose.yml"

# Docker Container Starten
sudo docker-compose up -d

# Install Pi-Hole
# Ordner erstellen
wfolder="/opt/pihole"
sudo mkdir cd $wfolder

# Compose-Datei anlegen und füllen
cd cd $wfolder
sudo sh -c "echo 'version: \"3\"

services:
  pihole:
    container_name: pihole
    image: pihole/pihole:latest
    ports:
      - \"53:53/udp\"
      - \"53:53/tcp\"
      - \"67:67/udp\"
      - \"80:80/tcp\"
    environment:
      TZ: \"Europe/Berlin\"
      WEBPASSWORD: \"<dein PassWD>\"
    volumes:
      - \"cd $wfolder/etc-pihole:/etc/pihole\"
      - \"cd $wfolder/etc-dnsmasq.d:/etc/dnsmasq.d\"
    network_mode: host
    cap_add:
      - NET_ADMIN
    restart: unless-stopped' >> ./docker-compose.yml"

# Docker Container Starten
sudo docker-compose up -d

# define fixed IP
sudo sh -c "echo '\ninterface eth0
static ip_address=<DNS IP>/24
static routers=<Router IP>
static domain_name_servers=<DNS IP>' >> /etc/dhcpcd.conf"

sudo reboot now

Wenn alles gut durchgelaufen ist, sollte der Pi einmal durchstarten und bereit sein. Dann ist der Portainer über http://<DNS IP>:9000 und der PiHole über http://<DNS IP>/admin erreichbar.

Soweit sollte es damit schon mal laufen. Nun nur noch den DHCP-Server (meist zu diesem Zeitpunkt der Router an der Telefondose/Kabelanschluss passend umstellen, dass er den DNS-Server mit verteilt

Einrichtung

Ist der Pi-Hole gestartet, die Oberfläche ist erreichbar, dann geht es an die ersten Einstellungen

Die Adlist und allgemeinere Filter

Für die Addlists gibt’s diverse Seiten und Listen, die je nach Bedarf übertragen werden können. Zudem macht es Sinn auch regelmäßig mal in die Logs von einzelnen Geräten zu schauen: Was wird viel angefragt und sollte das auch so sein. Es lässt sich dann auch mit „(.*).cn(.*)“ beispielsweise Seiten eines ganzen Bereichs filtern.

Des weiteren lässt sich der DNS-Server, wie schon oben erwähnt, auch als DHCP-Server einstellen, also zur Verwaltung der lokalen IP-Adressen. Je nach Geschmack kann man für jedes Endgerät mit einer fixen IP-Adresse auch lokal DNS-Adressen vergeben. Damit wir die Weboberfläche des Druckers über eine Webadresse und nicht mehr nur über eine IP erreichbar. Das ist besonders dann interessant, wenn im Netzwerk Services laufen wie MQTT-Server, Smarthome, etc. dessen IP-Adresse man nicht überall manuell ändern möchte, sollte sich da mal was ändern.

Einstellungen im DHCP-Server

Ok, der Server läuft, aber die Logs bleiben noch immer leer? Weder Blocks noch Anfragen? Dann weiß der DHCP-Server noch nichts davon, dass er auch für alle Anfragen den DNS-Server angeben soll, sondern leitet noch immer über sich zum Provider-DNS-Server um. Dazu einfach mal die Anleitung des jeweiligen Herstellers zu rate ziehen, wie Anleitung Fritzbox 7490. Bei den meisten ist dies unter Netzwerkeinstellungen versteckt. Testweise kann dies auch erst mal nur Lokal angepasst werden, damit man nicht gleich das ganze Netzwerk lahm legt.

Wartung

Wie jedes System muss auch dies von Zeit zu Zeit mal gewartet werden. Hier sind es die Updates, die gelegentlich mal ausgeführt werden müssen.

Für die Direktinstallation:

  • Einloggen wie oben schon beschrieben
  • Befehlsaufruf: sudo apt update && sudo apt upgrade -y && sudo autoremove -y && sudo pihole -up && sudo reboot now (update System, Update PiHole, neustart)

Bei der Installation via Docker:

  • Einloggen wie oben schon beschrieben
  • Befehlsaufruf: sudo apt update && sudo apt upgrade -y && sudo autoremove -y && sudo reboot now (update System, neustart)
  • In Portainer:
    • Container auswählen und stoppen
    • Recreate auswählen
    • „Re-pull Image“ anwählen und bestätigen

Backup

Update ist allerdings nur das eine Ding, das andere ist die Datensicherung. Zum einen in PiHole unter Settings > Teleporter > Backup. Zum anderen geht es dann ein wenig tiefer: Wer auch die Logs sichern möchte, muss idealerweise bei Docker alle eingebundenen Ordner, in der Vollinstallation alles unter /etc/pihole sichern. Es sei aber auch soviel verraten: Auch hier gibt es schöne Lösungen, besonders für die mit einer Cloud oder einem NAS und Netzlaufwerken.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert