Pi-hole und Mullvad VPN auf einem Raspberry Pi verwenden

Einleitung
Hast du Angst, dass dein Internetanbieter deinen Datenverkehr ausspioniert und den gesamten Netzwerkverkehr zu Hause mitliest? Hast du genug von Werbung überall? Oder gefällt dir einfach nicht, dass ein beliebiges Unternehmen jede Mausbewegung und jeden Tastendruck beim Surfen sehen und verfolgen kann?
Dann bist du hier genau richtig!
In dieser praktischen und leicht verständlichen Anleitung richten wir einen netzwerkweiten Werbe- und Tracker-Blocker ein, der eine Art digitalen Schutzschild zwischen dir, deinem Internetanbieter und Analyseunternehmen bildet.
Wir verwenden Pi-hole (ein sehr beliebtes DNS-Filtersystem), um Werbung und einige der bekanntesten Tracker zu blockieren, sowie das Mullvad VPN (einen besonders datenschutzfreundlichen VPN-Anbieter), um deinen Webverkehr vor dem Internetanbieter zu verbergen.
Was wir benötigen
Beginnen wir mit einer Liste aller Dinge, die unser Heim- oder Büronetzwerk sicherer und privater machen.
Raspberry Pi
Das wichtigste Element unseres kleinen Projekts ist der Raspberry Pi. Der Raspberry Pi (meist einfach Pi genannt) ist ein bekannter kleiner PC, den Menschen wie wir gern nutzen, um zu Hause unkompliziert interessante Projekte zu testen, ohne einen teuren oder dedizierten Server zu benötigen. Seine leistungsfähige ARM-CPU und der großzügige Arbeitsspeicher können unsere Prozesse problemlos bewältigen. Damit bringt er alles mit, was wir für unseren netzwerkweiten Schutzschild brauchen.

Als Betriebssystem verwenden wir die eigens entwickelte Linux-Distribution Raspberry Pi OS, genauer die Lite-Version ohne grafische Benutzeroberfläche.
Beim Speicher empfehle ich die Variante mit 4 GB oder 8 GB RAM, obwohl die Einrichtung deutlich weniger benötigt.
Außerdem solltest du grundlegende Kenntnisse über Terminal und SSH-Verbindungen haben, da sie unsere wichtigste Schnittstelle zum Rechner sein werden.
Mullvad
Für dieses Projekt benötigen wir ein Mullvad-Konto. Mullvad ist ein beliebter, datenschutzfreundlicher VPN-Anbieter und derzeit vermutlich einer der sichersten auf dem Markt. Für die Nutzung ist nicht einmal eine E-Mail-Adresse erforderlich: Bei der Anmeldung erhältst du eine zufällige Kontonummer, und das ist alles, was du brauchst. Nicht einmal ein Passwort!

Mullvad verfolgt außerdem eine strikte No-Logging-Richtlinie. Der Anbieter speichert weder den Datenverkehr noch DNS-Anfragen, Verbindungszeitpunkte, IP-Adressen oder Bandbreitennutzung seiner Kunden.
Das ist eine hervorragende Richtlinie, wenn du deinen Internetverkehr vom Internetanbieter fernhalten und keinen weiteren detaillierten Datensatz deiner Online-Aktivitäten erzeugen möchtest.
Ich habe Mullvad genau deshalb gewählt und weil ich die Unterstützung für freie Meinungsäußerung und ein offenes Internet sehr schätze. Für diese Anwendung ist der Anbieter meiner Meinung nach ideal!
1. Raspberry Pi vorbereiten
In dieser Anleitung behandeln wir die Einrichtung und das Flashen des Betriebssystems nicht, sondern beginnen direkt mit der Netzwerkkonfiguration. Keine Sorge: Online gibt es viele ausführliche und leicht verständliche Anleitungen.
Beginnen wir nun mit der Konfiguration der IP-Adresse des Pi.
2. Eine statische IP-Adresse festlegen
Damit der Raspberry Pi sowohl als DNS-Server (für Pi-hole) als auch als Gateway (für Mullvad) dient, brauchen wir eine statische IP-Adresse. Beim Verbinden eines Geräts per WLAN oder Ethernet weist der DHCP-Server automatisch eine Adresse zu; zu Hause übernimmt diese Aufgabe normalerweise der Router.
Das ist eine dynamische IP-Zuweisung. Für dieses Projekt benötigen wir jedoch eine statische Adresse. Bei einer dynamischen IP ist nicht garantiert, dass sie gleich bleibt. Der DHCP-Server könnte sie ändern, sodass andere Geräte den Raspberry Pi nicht mehr finden.
Deshalb legen wir eine feste Adresse fest, unter der alle Geräte den Raspberry Pi jederzeit erreichen können.
Für die Netzwerkeinstellungen verwenden wir das Dienstprogramm NetworkManager.
Alle Netzwerkschnittstellen auflisten
Zuerst prüfen wir alle Schnittstellen, damit wir nur die richtige ändern. Verwende dazu folgenden Befehl.
nmcli con show
In meinem Fall heißt die Verbindung netplan-eth0 und das Gerät eth0.
Mit der interaktiven Textoberfläche konfigurieren
NetworkManager bietet eine einfache Oberfläche oder die direkte Konfiguration über die Kommandozeile. Beide Wege sind richtig; wähle den für dich passenden.
sudo nmtuiOder über die Kommandozeile konfigurieren
Für diesen Fall empfehle ich die Kommandozeile, da sie schneller und einfacher ist. Ersetze Verbindungsname, Schnittstellenname und IP-Adressen durch die Werte deines Netzwerks.
sudo nmcli con mod netplan-eth0 ipv4.addresses "192.168.21.82/24" ipv4.gateway "192.168.21.1" ipv4.dns "192.168.21.1,1.1.1.1" ipv4.method manualÄnderungen anwenden
sudo nmcli device reapply eth0Informationen der Schnittstelle prüfen
Prüfe anschließend, ob Adresse, Gateway und DNS den zuvor gesetzten Werten entsprechen.
nmcli device show eth0
Der Raspberry Pi besitzt nun eine statische IP und kann im Netzwerk nicht mehr aus den Augen verloren werden. Bei einer SSH-Verbindung kann die Verbindung abbrechen; verbinde dich danach mit der neuen IP erneut.
3. Pi-hole installieren
Zuerst das System aktualisieren
Vor der Installation aktualisieren wir Betriebssystem und Pakete, damit die neuesten Sicherheitskorrekturen vorhanden sind. Starte danach den Raspberry Pi neu.
sudo apt update && sudo apt full-upgrade -ysudo reboot
Pi-hole installieren
Nun installieren wir Pi-hole mit dem offiziellen Ein-Schritt-Installer. Wer die Ausführung genau prüfen möchte, kann das Skript zunächst ansehen.
curl -sSL https://install.pi-hole.net | bash
Der Installer führt dich nun durch einige interaktive Bildschirme. Bestätige zunächst, dass der Raspberry Pi bereits eine statische IP hat, und klicke auf Continue.

Als Upstream-DNS können wir zunächst Cloudflare auswählen; das ändern wir später, sobald der Mullvad-Tunnel funktioniert.

Im nächsten Schritt legen wir die Standard-Blockliste fest. Pi-hole verwendet standardmäßig die StevenBlack Unified Hosts-Liste, ein guter Ausgangspunkt zum Blockieren bekannter Werbe- und Tracking-Domains. Bestätige die Auswahl.

Die Installation ist abgeschlossen. Notiere bei Bedarf den Link zum Pi-hole-Adminbereich und das Passwort. Die Adresse lautet meist http://<pi-ip>/admin oder http://pi.hole/admin.

Ein neues Passwort festlegen
Wenn du das automatisch erzeugte Passwort ändern möchtest, kannst du dies über die Kommandozeile tun. Verwende ein eigenes, sicher verwaltetes Passwort und niemals ein Passwort eines anderen Dienstes.
sudo pihole setpassword
Damit haben wir einen funktionierenden netzwerkweiten Werbe- und Tracker-Blocker. Mehr Informationen findest du in der offiziellen Dokumentation.
4. DNS für dein Netzwerk konfigurieren
Pi-hole filtert nur DNS-Anfragen, die tatsächlich an ihn gesendet werden. Für die Filterung im gesamten Netzwerk ändere die DHCP-Einstellungen des Routers, sodass die IP-Adresse des Raspberry Pi für jedes verbundene Gerät als primärer DNS-Server verteilt wird.
Manche Router erlauben das nicht; dann muss der DNS-Server auf jedem Gerät manuell gesetzt werden. Nach der Änderung erneuere die Lease oder verbinde die Clients neu und prüfe, ob der Raspberry Pi als DNS-Server eingetragen ist.
Auch der Raspberry Pi selbst kann über /etc/dhcpcd.conf oder NetworkManager Pi-hole als DNS verwenden. Sei dabei vorsichtig, denn falsche DNS- oder Netzwerkeinstellungen können die Verbindung vollständig unterbrechen.
5. WireGuard und Mullvad installieren
Sobald Pi-hole funktioniert, installieren wir WireGuard und richten den Mullvad-Tunnel ein. WireGuard ist ein modernes VPN-Protokoll, das einen sicheren, verschlüsselten Tunnel zwischen Raspberry Pi und VPN-Server herstellt. Es ist leichtgewichtig, schnell und einfach zu konfigurieren.
Mullvad stellt WireGuard-Konfigurationsdateien bereit, installiert oder verwaltet die Verbindung auf dem Raspberry Pi aber nicht selbst. WireGuard liest die Datei, baut die verschlüsselte Verbindung auf und leitet den Internetverkehr durch Mullvad. Der Tunnel ist die ausgehende Route des Pi, während Pi-hole die DNS-Anfragen filtert.
WireGuard installieren
sudo apt install wireguard wireguard-tools resolvconf -y
WireGuard ist nun installiert.
WireGuard konfigurieren
Lade im Mullvad-Konto eine WireGuard-Konfiguration herunter: Wähle WireGuard, Linux und einen Serverstandort. Speichere die Datei als mullvad.conf im Ordner /etc/wireguard.
Da sie deinen privaten Schlüssel enthält, beschränken wir den Zugriff auf root:
sudo chmod 600 /etc/wireguard/mullvad.confTunnel starten und prüfen
sudo wg-quick up mullvadPrüfe Status und öffentliche IP:
sudo wg showcurl https://am.i.mullvad.net/connectedDie Antwort sollte "You are connected to Mullvad" sowie Servername und öffentliche IP enthalten. Aktiviere anschließend den automatischen Start:
sudo systemctl enable wg-quick@mullvad
Zum Stoppen während der Fehlersuche:
sudo wg-quick down mullvadNetzwerkverkehr durch Mullvad leiten
Der Pi selbst nutzt nun Mullvad. Für andere Geräte muss er den Verkehr weiterleiten und maskieren. Dabei nehmen wir an:
- Die LAN-Schnittstelle ist eth0.
- Die Mullvad-WireGuard-Schnittstelle heißt mullvad, weil die Konfigurationsdatei mullvad.conf heißt.
- Die LAN-Adresse des Raspberry Pi ist 192.168.21.82.
Ersetze die Beispielwerte durch deine eigenen. Falls du die Schnittstellennamen nicht kennst:
ip link showHeißt die WireGuard-Schnittstelle beispielsweise wg0, ersetze mullvad in den folgenden Befehlen durch wg0.
IPv4-Weiterleitung aktivieren
sudo sysctl net.ipv4.ip_forward
Der Wert muss 1 sein. Bei 0 kann der Pi selbst ins Internet, aber keinen Verkehr anderer LAN-Geräte weiterleiten. Aktiviere sie sofort:
sudo sysctl -w net.ipv4.ip_forward=1Mache die Einstellung dauerhaft:
echo 'net.ipv4.ip_forward=1' | sudo tee /etc/sysctl.d/99-router.confsudo sysctl --systemPrüfe erneut:
sudo sysctl net.ipv4.ip_forward
Weiterleitung erlauben und NAT hinzufügen
Erlaube Verkehr vom LAN zu Mullvad und etablierte Rückantworten:
sudo iptables -A FORWARD -i eth0 -o mullvad -j ACCEPTsudo iptables -A FORWARD -i mullvad -o eth0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPTMaskiere den weitergeleiteten Verkehr:
sudo iptables -t nat -A POSTROUTING -o mullvad -j MASQUERADEInstalliere nach einem erfolgreichen Test den Helfer für dauerhafte Regeln:
sudo apt install iptables-persistent -yBestätige das Speichern der aktuellen IPv4-Regeln:

Wiederhole dies für IPv6:

Speichere die Änderungen:
sudo netfilter-persistent save
Netzwerkgeräte konfigurieren
Konfiguriere alle Geräte so, dass sie den Pi als DNS-Server und Gateway verwenden:
- Eine IP-Adresse im selben LAN wie der Raspberry Pi.
- Die IP-Adresse des Raspberry Pi als Standard-Gateway.
- Die IP-Adresse des Raspberry Pi als DNS-Server.
Unsere Geräte verwenden nun den neuen Netzwerkschutz.
Die Route schrittweise testen
Teste Netzwerk und Routing, bevor du dich zu früh freust. Prüfe zuerst die Erreichbarkeit des Pi:
ping 192.168.21.82Ersetze die IP durch die tatsächliche Adresse deines Pi. Danach teste Cloudflares DNS-Server 1.1.1.1:
ping 1.1.1.1Führe zuletzt eine DNS-Auflösung aus:
nslookup example.comBei Fehlern hilft diese Checkliste:
- Wenn der erste Test fehlschlägt, prüfe Netzwerkeinstellungen und Gateway des PCs.
- Wenn der erste Test gelingt, aber 1.1.1.1 fehlschlägt, prüfe IPv4-Weiterleitung, NAT-Regel und Mullvad-Firewallregeln.
- Wenn die öffentliche IP funktioniert, DNS aber nicht, prüfe, ob Pi-hole im LAN lauscht und der PC Pi-hole als DNS verwendet.
Während einer Anfrage kannst du mit folgendem Befehl prüfen, ob Verkehr durch den Tunnel läuft:
sudo wg show
Die Transferzähler sollten steigen. Prüfe die öffentliche VPN-Adresse direkt vom PC:
curl https://am.i.mullvad.net/connected
Damit besitzt du ein sicheres und privates Netzwerk. Vor dem Ende prüfen wir noch einmal, ob es wirklich geschützt ist.
6. Prüfen, ob wir wirklich sicher sind
Öffne die Mullvad-Verbindungsprüfung und kontrolliere Exit-IP und DNS-Resolver.

Bedeutung des Ergebnisses
Sind alle Bereiche grün, ist alles in Ordnung. Rote Bereiche weisen auf ein Problem hin.
- Gehört die Exit-IP zu einem Mullvad-Server, etwa **it-mil-wg-001** in Mailand, läuft der Verkehr korrekt durch Mullvad.
- Sind die DNS-Resolver Cloudflare-Adressen wie **172.70.x.x**, **1.1.1.1** oder die entsprechende IPv6-Adresse, leitet Pi-hole DNS-Anfragen derzeit an Cloudflare weiter.
Meist sind Using Mullvad VPN und No WebRTC leaks grün, während No DNS leaks rot ist. Der Grund: Wir verwenden Cloudflare als DNS-Resolver, und Mullvad wertet das als Problem.
Cloudflare ist ein datenschutzfreundlicher DNS-Resolver, wird aber nicht von Mullvad betrieben. Mullvad meldet No DNS leaks nur, wenn die Resolver zu Mullvad gehören.
Die DNS-Prüfung grün machen
Ändere den Upstream-DNS-Server von Pi-hole zu einem Mullvad-Resolver. In diesem Fall empfehle ich die erste Option, da Pi-hole bereits schädliche DNS-Anfragen blockiert.
- 1Interner Mullvad-DNS: 10.64.0.1. Funktioniert nur bei aktivem WireGuard-Tunnel.
- 2Öffentlicher Mullvad-DNS ohne Filterung: 194.242.2.2. Funktioniert auch bei einem kurzen Tunnelausfall.
- 3Öffentlicher Mullvad-DNS mit Werbe-, Tracker- und Malware-Blockierung: 194.242.2.4.
- 4Öffentlicher Mullvad-DNS nur mit Werbeblockierung: 194.242.2.3.
Öffne das Pi-hole-Dashboard und folge diesen Schritten:
- 1Öffne die Pi-hole-Administrationsoberfläche.
- 2Gehe zu Settings und dann zu DNS.
- 3Deaktiviere unter Upstream DNS Servers Cloudflare und alle anderen ausgewählten Anbieter.
- 4Wähle Custom und gib eine der obigen Mullvad-DNS-Adressen ein. Bei Bedarf kannst du IPv4- und IPv6-Resolver hinzufügen.
- 5Klicke unten auf der Seite auf Save.

Warte einige Sekunden und prüfe erneut unter mullvad.net/check. Bei korrekter Einrichtung sollte No DNS leaks grün erscheinen und nur Mullvad-DNS-Server auflisten.
Wenn weiterhin ein DNS-Leak angezeigt wird
Die häufigste Ursache ist, dass der Browser seinen eigenen DNS-over-HTTPS-Dienst verwendet und die System- und Pi-hole-Einstellungen umgeht. Deaktiviere deshalb sicheres DNS im verwendeten Browser.
Firefox
- 1Öffne Settings und dann Privacy & Security.
- 2Scrolle zu DNS over HTTPS.
- 3Wähle Off.
- 4Starte Firefox neu und führe die Mullvad-Prüfung erneut aus.
Chrome
- 1Öffne chrome://settings/security.
- 2Deaktiviere unter Use secure DNS die Einstellung.
- 3Starte Chrome neu und führe die Mullvad-Prüfung erneut aus.
Edge
- 1Öffne edge://settings/privacy.
- 2Suche Use secure DNS und deaktiviere die Einstellung.
- 3Starte Edge neu und führe die Mullvad-Prüfung erneut aus.
Bleibt das Ergebnis unverändert, teste in einem privaten Fenster oder mit einem anderen Browser. So lässt sich feststellen, ob der Leak vom Browser und nicht von Pi-hole, WireGuard oder Mullvad verursacht wird.
Wenn der neue Test gelingt, ist dein Netzwerk vollständig abgeschirmt.
Fazit
Damit sind wir am Ende. Dein Raspberry Pi fungiert nun als netzwerkweiter Werbe- und Tracker-Blocker und leitet den Internetverkehr durch das Mullvad VPN.
Halte Raspberry Pi OS, Pi-hole, WireGuard und die Mullvad-Konfiguration aktuell, damit die Einrichtung zuverlässig funktioniert und die neuesten Sicherheitsupdates erhält.
Das war es für heute. Ich hoffe, diese Anleitung war hilfreich, und wir sehen uns bald wieder!
Haufig gestellte Fragen
Finden Sie schnelle Antworten auf die haufigsten Fragen zu diesem Thema.
Pi-hole blockiert Werbung und Tracker auf DNS-Ebene, während Mullvad den Internetverkehr durch einen verschlüsselten VPN-Tunnel leitet. Zusammen bieten sie netzwerkweiten DNS-Filter und VPN-Schutz für Geräte, die den Raspberry Pi als DNS-Server und Gateway verwenden.
Ja. Ein Raspberry Pi kann Pi-hole als Netzwerk-DNS-Server und WireGuard als Mullvad-VPN-Client ausführen. Mit aktivierter IPv4-Weiterleitung und konfiguriertem NAT kann er auch den Verkehr anderer Geräte durch den VPN-Tunnel leiten.
Der Raspberry Pi benötigt eine stabile IP-Adresse, damit andere Geräte ihn immer als DNS-Server und Gateway finden. Eine wechselnde DHCP-Adresse könnte die DNS-Filterung unterbrechen und Geräte daran hindern, das VPN-Gateway zu erreichen.
Aktiviere IPv4-Weiterleitung auf dem Raspberry Pi, erlaube Weiterleitung zwischen LAN- und WireGuard-Schnittstelle, füge eine Masquerade-Regel für die VPN-Schnittstelle hinzu und konfiguriere jedes Gerät so, dass es den Pi als Gateway und DNS-Server verwendet.
Verwende 10.64.0.1 als internen Mullvad-DNS, wenn der WireGuard-Tunnel aktiv ist. Für öffentlichen Mullvad-DNS nutze 194.242.2.2 ohne Filterung, 194.242.2.4 mit Werbe- und Tracker-Blockierung oder 194.242.2.3 nur mit Werbeblockierung.
Cloudflare wird nicht von Mullvad betrieben, daher kann die Mullvad-Prüfung ein DNS-Leak melden, obwohl der VPN-Tunnel korrekt funktioniert. Für die Anzeige No DNS leaks konfiguriere Pi-hole mit einem Mullvad-DNS-Resolver statt mit Cloudflare.
Deaktiviere DNS over HTTPS oder sicheres DNS im Browser und führe die Mullvad-Verbindungsprüfung erneut aus. Wenn sich das Ergebnis nicht ändert, teste in einem privaten Fenster oder mit einem anderen Browser, um festzustellen, ob der Browser Pi-hole umgeht.
