Anleitungen

Pi-hole und Mullvad VPN auf einem Raspberry Pi verwenden

Pi-hole und Mullvad VPN auf einem Raspberry Pi verwenden
Inhaltsverzeichnis

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.

Übersicht des Raspberry Pi

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!

Übersicht des Mullvad VPN

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.

Terminal
nmcli con show

NetworkManager-Verbindungsliste

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.

Terminal
sudo nmtui

Oder ü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.

Terminal
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

Terminal
sudo nmcli device reapply eth0

Informationen der Schnittstelle prüfen

Prüfe anschließend, ob Adresse, Gateway und DNS den zuvor gesetzten Werten entsprechen.

Terminal
nmcli device show eth0

Details der NetworkManager-Schnittstelle

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.

Terminal
sudo apt update && sudo apt full-upgrade -ysudo reboot

Systemaktualisierung des Raspberry Pi

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.

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

Willkommensbildschirm des Pi-hole-Installers

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.

Auswahl der Pi-hole-Installerschnittstelle

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

Auswahl des Pi-hole-Upstream-DNS

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.

Abgeschlossene Pi-hole-Installation

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.

Anmeldung an der Pi-hole-Weboberfläche

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.

Terminal
sudo pihole setpassword

Pi-hole-Dashboard

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

Terminal
sudo apt install wireguard wireguard-tools resolvconf -y

WireGuard-Installation

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:

Terminal
sudo chmod 600 /etc/wireguard/mullvad.conf

Tunnel starten und prüfen

Terminal
sudo wg-quick up mullvad

Prüfe Status und öffentliche IP:

Terminal
sudo wg showcurl https://am.i.mullvad.net/connected

Die Antwort sollte "You are connected to Mullvad" sowie Servername und öffentliche IP enthalten. Aktiviere anschließend den automatischen Start:

Terminal
sudo systemctl enable wg-quick@mullvad

Aktivierter WireGuard-Dienst

Zum Stoppen während der Fehlersuche:

Terminal
sudo wg-quick down mullvad

Netzwerkverkehr 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:

Terminal
ip link show

Heißt die WireGuard-Schnittstelle beispielsweise wg0, ersetze mullvad in den folgenden Befehlen durch wg0.

IPv4-Weiterleitung aktivieren

Terminal
sudo sysctl net.ipv4.ip_forward

Deaktivierte IPv4-Weiterleitung

Der Wert muss 1 sein. Bei 0 kann der Pi selbst ins Internet, aber keinen Verkehr anderer LAN-Geräte weiterleiten. Aktiviere sie sofort:

Terminal
sudo sysctl -w net.ipv4.ip_forward=1

Mache die Einstellung dauerhaft:

Terminal
echo 'net.ipv4.ip_forward=1' | sudo tee /etc/sysctl.d/99-router.confsudo sysctl --system

Prüfe erneut:

Terminal
sudo sysctl net.ipv4.ip_forward

Aktivierte IPv4-Weiterleitung

Weiterleitung erlauben und NAT hinzufügen

Erlaube Verkehr vom LAN zu Mullvad und etablierte Rückantworten:

Terminal
sudo iptables -A FORWARD -i eth0 -o mullvad -j ACCEPTsudo iptables -A FORWARD -i mullvad -o eth0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

Maskiere den weitergeleiteten Verkehr:

Terminal
sudo iptables -t nat -A POSTROUTING -o mullvad -j MASQUERADE

Installiere nach einem erfolgreichen Test den Helfer für dauerhafte Regeln:

Terminal
sudo apt install iptables-persistent -y

Bestätige das Speichern der aktuellen IPv4-Regeln:

Gespeicherte IPv4-Firewallkonfiguration

Wiederhole dies für IPv6:

Gespeicherte IPv6-Firewallkonfiguration

Speichere die Änderungen:

Terminal
sudo netfilter-persistent save

Dauerhafte Firewallregeln

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:

Terminal
ping 192.168.21.82

Ersetze die IP durch die tatsächliche Adresse deines Pi. Danach teste Cloudflares DNS-Server 1.1.1.1:

Terminal
ping 1.1.1.1

Führe zuletzt eine DNS-Auflösung aus:

Terminal
nslookup example.com

Bei 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:

Terminal
sudo wg show

Mullvad-Verkehrsprüfung

Die Transferzähler sollten steigen. Prüfe die öffentliche VPN-Adresse direkt vom PC:

Terminal
curl https://am.i.mullvad.net/connected

Ausgabe der Mullvad-Verbindungsprüfung

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.

Mullvad-Verbindungsprüfung

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.

  • 1
    Interner 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.
  • 2
    Gehe zu Settings und dann zu DNS.
  • 3
    Deaktiviere unter Upstream DNS Servers Cloudflare und alle anderen ausgewählten Anbieter.
  • 4
    Wähle Custom und gib eine der obigen Mullvad-DNS-Adressen ein. Bei Bedarf kannst du IPv4- und IPv6-Resolver hinzufügen.
  • 5
    Klicke unten auf der Seite auf Save.

Pi-hole-DNS-Einstellungen

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.
  • 2
    Scrolle zu DNS over HTTPS.
  • 3
    Wähle Off.
  • 4
    Starte Firefox neu und führe die Mullvad-Prüfung erneut aus.

Chrome

  • 1
    Öffne chrome://settings/security.
  • 2
    Deaktiviere unter Use secure DNS die Einstellung.
  • 3
    Starte Chrome neu und führe die Mullvad-Prüfung erneut aus.

Edge

  • 1
    Öffne edge://settings/privacy.
  • 2
    Suche Use secure DNS und deaktiviere die Einstellung.
  • 3
    Starte 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.

Wozu dient die Verwendung von Pi-hole mit Mullvad auf einem Raspberry Pi?

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.

Kann ein Raspberry Pi Pi-hole und Mullvad WireGuard gleichzeitig ausführen?

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.

Warum braucht der Raspberry Pi eine statische IP-Adresse?

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.

Wie leite ich den Datenverkehr meines Heimnetzwerks durch Mullvad?

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.

Welchen Mullvad-DNS-Server sollte ich mit Pi-hole verwenden?

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.

Warum zeigt die Mullvad-Verbindungsprüfung mit Cloudflare ein DNS-Leak?

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.

Wie behebe ich ein durch den Browser verursachtes DNS-Leak?

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.

Bruma

Autor

Bruma

Veroffentlicht:
Aktualisiert: