Netzwerk & Firewall

Pi-hole auf Raspberry Pi installieren – DNS-Werbeblocker einrichten

1. Einleitung

Pi-hole ist ein DNS-Sinkhole, das auf Netzwerkebene unerwünschte Inhalte wie Werbung und Tracker blockiert, ohne dass Client-Software installiert werden muss. Es funktioniert als DNS-Server für Ihr Heimnetzwerk und filtert Anfragen zu bekannten Werbe- und Tracking-Domains heraus.

Die Vorteile von Pi-hole:

  • Blockiert Werbung im gesamten Netzwerk
  • Reduziert Bandbreitenverbrauch
  • Verbessert Ladezeiten von Webseiten
  • Schützt vor Malware und Phishing
  • Funktioniert mit allen Geräten im Netzwerk
  • Detaillierte Statistiken und Logging

2. Systemvoraussetzungen

Komponente Minimum Empfohlen
Raspberry Pi Modell Pi 2 Model B Pi 4 Model B (2GB+)
RAM 512 MB 2 GB oder mehr
Storage 8 GB microSD 32 GB microSD (Class 10)
Netzwerk 10/100 Ethernet oder WLAN Gigabit Ethernet

Unterstützte Betriebssysteme:

  • Raspberry Pi OS (Bullseye oder neuer)
  • Ubuntu 20.04 LTS oder neuer
  • Debian 11 (Bullseye) oder neuer

Benötigte Netzwerk-Ports:

Port Protokoll Zweck Firewall
53 TCP/UDP DNS-Anfragen Öffnen erforderlich
80 TCP Web-Interface (HTTP) Öffnen empfohlen
443 TCP Web-Interface (HTTPS) Optional
4711 TCP FTL API Intern

3. Vorbereitung

System aktualisieren

Stellen Sie zunächst sicher, dass Ihr Raspberry Pi auf dem neuesten Stand ist:

sudo apt update
sudo apt upgrade -y
sudo apt autoremove -y

Statische IP-Adresse einrichten

Pi-hole benötigt eine statische IP-Adresse. Bearbeiten Sie die DHCP-Konfiguration:

sudo nano /etc/dhcpcd.conf

Fügen Sie am Ende der Datei folgende Zeilen hinzu (passen Sie die IP-Adressen an Ihr Netzwerk an):

interface eth0
static ip_address=192.168.1.100/24
static routers=192.168.1.1
static domain_name_servers=1.1.1.1 8.8.8.8
⚠️ Hinweis: Ersetzen Sie 192.168.1.100 durch eine freie IP-Adresse in Ihrem Netzwerk und 192.168.1.1 durch die IP Ihres Routers.

Abhängigkeiten installieren

Installieren Sie die erforderlichen Pakete:

sudo apt install curl wget git dialog -y

System neustarten

sudo reboot

4. Installation

Pi-hole Installer herunterladen und ausführen

Laden Sie das offizielle Pi-hole Installationsskript herunter:

curl -sSL https://install.pi-hole.net | bash

Alternativ können Sie das Skript erst herunterladen und dann prüfen:

wget -O basic-install.sh https://install.pi-hole.net
less basic-install.sh
sudo bash basic-install.sh

Installationsassistent durchlaufen

Der interaktive Installer führt Sie durch folgende Schritte:

  1. Willkommensnachricht: Bestätigen Sie mit „OK“
  2. Spenden-Hinweis: Bestätigen Sie mit „OK“
  3. Netzwerk-Interface: Wählen Sie Ihr Netzwerk-Interface (meist eth0 oder wlan0)
  4. Upstream DNS Provider: Wählen Sie einen DNS-Anbieter (empfohlen: Cloudflare oder Quad9)
  5. Blocklists: Aktivieren Sie die Standard-Blocklisten
  6. Admin Web Interface: Aktivieren Sie das Web-Interface
  7. Web Server: Installieren Sie den Webserver (lighttpd)
  8. Logging: Aktivieren Sie das Query-Logging
  9. Privacy Mode: Wählen Sie den gewünschten Privacy-Level
⚠️ Hinweis: Notieren Sie sich das Admin-Passwort, das am Ende der Installation angezeigt wird!

5. Konfiguration

Admin-Passwort setzen

Falls Sie das Passwort ändern möchten:

pihole -a -p

Zusätzliche Blocklisten hinzufügen

Beliebte Blocklisten können über das Web-Interface oder die Kommandozeile hinzugefügt werden:

# Beispiel: StevenBlack's Hosts-Liste
pihole -w adlist add https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts

# Blocklisten aktualisieren
pihole -g

Whitelist und Blacklist konfigurieren

Domains zur Whitelist hinzufügen:

pihole -w example.com

Domains zur Blacklist hinzufügen:

pihole -b ads.example.com

6. Firewall-Regeln setzen

UFW Firewall konfigurieren

Falls UFW installiert ist, öffnen Sie die erforderlichen Ports:

# UFW aktivieren
sudo ufw enable

# Pi-hole Ports öffnen
sudo ufw allow 53/tcp
sudo ufw allow 53/udp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# SSH-Zugang sicherstellen
sudo ufw allow ssh

# Status prüfen
sudo ufw status

iptables Regeln (falls UFW nicht verwendet wird)

# DNS Port öffnen
sudo iptables -A INPUT -p tcp --dport 53 -j ACCEPT
sudo iptables -A INPUT -p udp --dport 53 -j ACCEPT

# Web-Interface öffnen
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT

# Regeln speichern
sudo iptables-save > /etc/iptables/rules.v4

7. Dienst starten und beim Systemstart aktivieren

Pi-hole sollte automatisch gestartet werden. Prüfen Sie den Status:

# Pi-hole Status prüfen
pihole status

# FTL Status prüfen
sudo systemctl status pihole-FTL

# Dienste beim Boot aktivieren
sudo systemctl enable pihole-FTL
sudo systemctl enable lighttpd

Dienste manuell starten/stoppen

# Pi-hole starten
sudo systemctl start pihole-FTL

# Pi-hole stoppen
sudo systemctl stop pihole-FTL

# Pi-hole neustarten
sudo systemctl restart pihole-FTL

8. Installation verifizieren

Web-Interface testen

Öffnen Sie einen Browser und navigieren Sie zu:

  • http://[IP-ADRESSE]/admin
  • Beispiel: http://192.168.1.100/admin

DNS-Funktionalität testen

# DNS-Auflösung testen
nslookup google.com [PI-HOLE-IP]

# Beispiel:
nslookup google.com 192.168.1.100

# Pi-hole Query-Test
dig @192.168.1.100 google.com

Werbeblocker testen

# Test einer bekannten Werbe-Domain
nslookup doubleclick.net 192.168.1.100

Die Antwort sollte 0.0.0.0 oder eine ähnliche blockierte Adresse sein.

Router-Konfiguration

Konfigurieren Sie Ihren Router, um Pi-hole als DNS-Server zu verwenden:

  1. Loggen Sie sich in Ihr Router-Interface ein
  2. Navigieren Sie zu den DHCP/DNS-Einstellungen
  3. Setzen Sie den Primary DNS auf die IP-Adresse Ihres Pi-hole
  4. Setzen Sie den Secondary DNS auf einen Backup-Server (z.B. 1.1.1.1)
  5. Speichern Sie die Einstellungen und starten Sie den Router neu

9. Troubleshooting

Häufige Fehler und Lösungen

Problem: Pi-hole blockiert alle DNS-Anfragen

Symptom: Keine Internetverbindung nach Pi-hole Installation

Lösung:

# Upstream DNS-Server prüfen
pihole -a -t

# DNS-Konfiguration reparieren
sudo pihole -r

Problem: Web-Interface nicht erreichbar

Symptom: Admin-Panel lädt nicht

Lösung:

# Lighttpd Status prüfen
sudo systemctl status lighttpd

# Lighttpd neu starten
sudo systemctl restart lighttpd

# Ports prüfen
sudo netstat -tlnp | grep :80

Problem: Hohe CPU-Last

Symptom: System läuft langsam, hohe CPU-Auslastung

Lösung:

# Query-Logging reduzieren
pihole -l off

# Log-Rotation konfigurieren
sudo nano /etc/logrotate.d/pihole

# FTL neu starten
sudo systemctl restart pihole-FTL

Problem: Blocklisten werden nicht aktualisiert

Lösung:

# Manuelle Aktualisierung
pihole -g

# Berechtigungen prüfen
sudo chown -R pihole:pihole /etc/pihole/

# Cron-Job prüfen
sudo crontab -u pihole -l

Log-Dateien für Debugging

# Pi-hole Logs anzeigen
pihole -t

# FTL Debug-Informationen
pihole -d

# System-Logs prüfen
sudo journalctl -u pihole-FTL --since "1 hour ago"

Netzwerk-Debugging

# Netzwerk-Konfiguration prüfen
ip addr show
ip route show

# DNS-Server testen
dig @127.0.0.1 google.com
dig @1.1.1.1 google.com

10. Updates und Wartung

Pi-hole aktualisieren

# Pi-hole auf neueste Version aktualisieren
pihole -up

# Nur Core aktualisieren
pihole -up --check-only

Blocklisten aktualisieren

# Alle Blocklisten aktualisieren
pihole -g

# Automatische Updates via Cron (täglich um 3:30 Uhr)
sudo crontab -e
# Folgende Zeile hinzufügen:
# 30 3 * * * /usr/local/bin/pihole -g >/dev/null 2>&1

Backup erstellen

# Konfiguration sichern
pihole -a -t > pihole-backup.txt

# Komplettes Backup
sudo tar -czf pihole-backup-$(date +%Y%m%d).tar.gz /etc/pihole/ /opt/pihole/

Regelmäßige Wartungsaufgaben

  • Prüfen Sie monatlich auf Pi-hole Updates
  • Überwachen Sie die Speichernutzung der Logs
  • Erstellen Sie regelmäßig Backups der Konfiguration
  • Prüfen Sie die Netzwerk-Performance
  • Aktualisieren Sie das Basis-Betriebssystem

11. Fazit und nächste Schritte

Sie haben erfolgreich Pi-hole auf Ihrem Raspberry Pi installiert und konfiguriert. Ihr Netzwerk ist jetzt vor Werbung und Trackern geschützt.

Empfohlene nächste Schritte:

  • Überwachung einrichten: Nutzen Sie das Web-Interface zur Überwachung der DNS-Anfragen
  • Erweiterte Blocklisten: Fügen Sie zusätzliche, spezialisierte Blocklisten hinzu
  • HTTPS aktivieren: Richten Sie SSL-Zertifikate für das Web-Interface ein
  • Unbound installieren: Für zusätzliche Privatsphäre einen rekursiven DNS-Server einrichten
  • Failover konfigurieren: Einen zweiten Pi-hole als Backup einrichten
  • VPN Integration: Pi-hole mit einem VPN kombinieren für Schutz außerhalb des Heimnetzwerks

Weiterführende Ressourcen:

  • Offizielle Pi-hole Dokumentation: https://docs.pi-hole.net/
  • Pi-hole Community Forum: https://discourse.pi-hole.net/
  • GitHub Repository: https://github.com/pi-hole/pi-hole
⚠️ Wichtiger Hinweis: Stellen Sie sicher, dass Sie immer einen Backup-DNS-Server konfiguriert haben, falls Pi-hole ausfällt. Dies gewährleistet die kontinuierliche Internetkonnektivität in Ihrem Netzwerk.