Anleitung: Einrichten eines Raspberry Pi als DNS-basierten Ad-Blocker + DNSSEC mit Unbound

Problem:

  • Du willst, genau wie ich, keine Werbung in deinem lokalen Netzwerk sehen, während du im Internet surfst
  • Du bist auch daran interessiert, deinen lokalen DNS-Server vor möglichen DNS-Spoofing/Cache-Poisoning-Angriffen zu schützen
  • Du hast Angst, dass dein ISP oder dein Upstream-DNS-Anbieter (1.1.1.1, 8.8.8.8 usw.) deine DNS-Anfragen auswertet, um dich zu verfolgen oder dir „bessere“ Werbung zu liefern
Raspberry Pi 2: it's an older model, sir, but it checks out
Raspberry Pi 2: it’s an older model, sir, but it checks out

Lösung:

  • Erstens solltest du dich mit Linux / Ubuntu / Debian auskennen und wissen, wie DNS funktioniert
  • Zweitens ist diese Anleitung für eine „Headless“-Einrichtung gedacht, d.h. du brauchst weder Monitor noch Tastatur für deinen Raspberry Pi. Alles wird über SSH / die Kommandozeile erledigt, also brauchst du auch Putty oder einen anderen SSH-Client (Windows 10/11 hat ihn bereits integriert)
  • Damit du dich per SSH verbinden kannst, braucht der Raspberry Pi eine IP und eine Möglichkeit, sich mit ihm zu verbinden, also reicht dein Router oder Modem, solange es einen freien Ethernet-Anschluss hat
  • Du brauchst eine freie statische IP-Adresse in deinem Netzwerk, unter der der Raspberry Pi als DNS-Server des Netzwerks läuft, sowie einen externen Internetzugang für den Raspberry Pi über Port 53 (TCP für DNSSEC und UDP für DNS)
  • Kaufe einen Raspberry Pi mit einem Ethernet-Anschluss – ältere Modelle sind für deine Zwecke ausreichend, da ein DNS-Server nicht viel Leistung benötigt
    • Du wirst wahrscheinlich ein Gehäuse und vielleicht ein paar Kühlkörper brauchen (ich habe sie gekauft, aber ich denke, für DNS-Server-Zwecke sind sie nicht notwendig)
    • Du brauchst auf jeden Fall eine Micro-SD-Karte als Speicher / „Festplatte“ für das Gerät (32 GB sind mehr als genug für einen DNS-Server)
    • Ich habe ein Paketangebot für den Pi selbst und das gesamte Zubehör auf Amazon gefunden, aber ich überlasse die Einkaufsdetails deinem
  • Installiere das Debian-basierte Betriebssystem – Raspbian OS
    • Du brauchst einen separaten Linux- oder Windows-Rechner und eine Möglichkeit, auf Micro-SD-Karten auf diesem Gerät zu schreiben
  • Installiere Pi-Hole auf deinem neuen Raspberry Pi
  • Installiere und konfiguriere Unbound

Details (Schritt für Schritt):

Nun, das klingt ziemlich einfach, oder? Folge einfach den obigen Anleitungen und schon kann es losgehen! Wenn es dir aber so geht wie mir und du nur so viel über Netzwerke und DNS weißt, dass es gefährlich ist, dann werde ich dich im Folgenden Schritt für Schritt durch den ganzen Prozess führen, aber ich überlasse es dir, selbst zu recherchieren, was genau Pi-Hole und Unbound als Linux-Pakete sind und was sie tun. Außerdem bin ich kein DNSSEC- oder DNS-über-HTTPS- oder DNS-über-TLS-„Profi“, daher kann ich nicht allzu sehr ins Detail gehen, aber ich werde mein Bestes tun. Bitte informiere mich über das Kontaktformular, wenn ich etwas falsch dargestellt habe oder wenn ich einfach nur verdammt falsch liege.

Schritt 1: Bereite Deinen Raspberry Pi zum Einschalten vor

  • Das ist ganz einfach. Kaufe einen Pi, ein Gehäuse, ein Netzteil (Handy-Ladegerät funktioniert), eine Micro-SC-Karte und baue alles zusammen, aber lass die Micro-SD-Karte bis nach dem nächsten Schritt draußen

Schritt 2: Installiere das Betriebssystem Raspbian (kann optional sein)

  • Zunächst einmal wird auf einigen Raspberry Pi’s bereits Raspbian installiert. Wenn das bei dir der Fall ist, kannst du mit Schritt 3 weitermachen. Achte aber darauf, dass SSH in deiner vorinstallierten Version von Raspbian aktiviert ist
  • Wenn du Raspbian installieren musst, ist die gute Nachricht, dass es super einfach ist, ABER es gibt wichtige Optionen, die du während der Installation beachten musst
  • Schließe deine Micro-SD-Karte an dein „Setup“-Gerät an und sei darauf vorbereitet, sie zu löschen und zu beschreiben
  • Gehe zur Raspberry Pi-Website und lade das Installationsprogramm für das Installationsgerät deiner Wahl herunter
    • Da ich Windows verwende, habe ich mich für Windows entschieden und die Datei imager_xxx.exe heruntergeladen, die das Raspbian-Imaging-Programm zum Überschreiben der Micro-SD-Karte installiert
    • Starte den nun installierten Imager
    • Die Standardoption installiert Raspbian mit einer vollständigen Debian-basierten Desktop-Umgebung, aber für dieses Projekt brauchst du diesen Overhead nicht (du kannst die Desktop-Oberfläche gerne behalten, wenn du den Raspberry Pi für andere Zwecke nutzen willst)
      • Da ich den Desktop nicht benötige, habe ich unter „Betriebssystem“ „Raspberry Pi OS (other)“ und dann „Raspberry Pi Lite (32-bit)“ ausgewählt
Système d'exploitation = OS
Système d’exploitation = Betriebssystem
  • STOPP! WARTEN! Ich weiß, dass du „Weiter“ oder „Los“ drücken willst, aber hier ist der Trick, wie oben beschrieben
    • SSH ist unter Raspbian OS aus Sicherheitsgründen standardmäßig deaktiviert, aber du brauchst es, und du brauchst einen Admin-Benutzer, der sich per SSH am Pi anmeldet
    • Klicke auf das kleine Zahnrad in der unteren linken Ecke des Imager-Fensters
      • Konfiguriere die Einstellungen hier so, wie du es für richtig hältst, aber schalte auf jeden Fall SSH ein und erstelle einen Benutzer (der standardmäßig admin sein wird, also SICHERE DIESE DATEN) und deaktiviere vielleicht das Wi-Fi-Radio, da du es nicht brauchst, weil du einen Pi mit einem Ethernet-Anschluss gekauft hast, richtig? Richtig?!?! Außerdem ist es sinnvoll, die Zeitzone hier zu konfigurieren
  • Jetzt lädt der Imager die notwendigen Raspbian OS-Dateien herunter, konfiguriert die oben genannten Einstellungen und schreibt sie auf deine Micro-SD-Karte – kinderleicht
  • Wenn du fertig bist, kannst du die SD-Karte in den Steckplatz des Raspberry Pi schieben und ihn in Betrieb nehmen

Schritt 5: Verbinde Dich per SSH mit Ihrer neuen Raspbian-Installation

  • Jetzt kannst du dich über SSH mit dem Raspberry Pi verbinden (Putty oder der eingebaute Windows SSH-Client oder normales Linux SSH)
  • Stelle sicher, dass der Pi per Ethernet mit deinem Router, Modem oder einem DHCP-Server verbunden ist, damit er eine IP-Adresse erhält
  • Hier ist die „Headless“-Einrichtung (ohne Monitor/Tastatur) etwas knifflig, da du wissen musst, welche IP-Adresse deinem Pi vom Router/DHCP-Server zugewiesen wurde. Ich gehe aber davon aus, dass du genug über Netzwerke weißt, um dies über das Admin-Portal deines Routers/DHCP-Servers herauszufinden
    • Natürlich darfst du deinen Raspberry Pi und den zukünftigen DNS-Server nicht dem Internet aussetzen! Aus diesem Grund ist SSH auf Raspbian standardmäßig deaktiviert, weil zu viele Leute den Port 22 für das Internet geöffnet haben! Sei nicht dieser Typ!
  • Jetzt, wo du die IP hast, loggst du dich per SSH über Port 22 in deinen Raspberry Pi ein und verwendest den Benutzernamen und das Passwort, die du während des Imaging-Prozesses erstellt hast (falls du keinen neuen Admin-Benutzer erstellt hast, lautet der Standardwert für Raspbian: Benutzername: pi und Passwort: raspberry (alles Kleinbuchstaben und denk daran, dass Groß- und Kleinschreibung in der Linux-Welt eine Rolle spielen!))

Schritt 6: installiere Pi-Hole

  • Zuerst solltest du sicherstellen, dass Raspbian 100% aktuell ist, da der Imager nicht unbedingt die neuesten Debian-Updates bereitstellt: sudo apt update && sudo apt upgrade -y
    • sudo (als admin ausführen) fragt natürlich nach deinem Passwort, das du während des Imaging konfiguriert hast
  • Für den nächsten Schritt ist die gute Nachricht, dass dieser Schritt super einfach ist, da die Crew von pi-hole.net ein Bash-Skript erstellt hat, das sich um alles für uns kümmert
  • Jetzt führe diesen Befehlt aus: curl -sSL https://install.pi-hole.net | bash
    • zK: Man sollte keine zufälligen Skripte und URLs in die Bash einspeisen, aber in diesem Fall verspreche ich, dass es sicher ist (vertraue mir nicht und klicke stattdessen auf den Link oben und lese die GitHub-Seite von pi-hole)
  • Jetzt ist ein guter Zeitpunkt, um einen Kaffee zu trinken, denn das Skript wird eine Reihe von Diensten herunterladen und installieren, Raspbian aktualisieren und generell alles für dich einrichten
Installing Pi-Hole per SSH / the terminal
Installation von Pi-Hole per SSH / Terminal

Schritt 6: Erste Konfiguration des Pi-Hole-Dienstes

  • Sobald alle Dienste heruntergeladen und durch das obige Skript installiert wurden, werden dir einige anfängliche Konfigurationsbildschirme angezeigt: Hier findest du eine ausführlichere Erklärung dieser Einstellungen mit Screenshots, falls du daran interessiert bist
  • Du kannst alle Bildschirme mit Ausnahme von drei Bildschirmen überspringen oder einfach die Standardeinstellungen übernehmen
    • Erster Bildschirm, klicke auf OK
    • Auf dem zweiten Bildschirm „Initiating network interface“ erfährst du, dass dein neuer DNS-Server eine statische IP-Adresse benötigt; dazu komme ich gleich.
    • Auf dem dritten Bildschirm „Select Upstream DNS Provider“ empfehle ich OpenDNS, da es sich um ein Open-Source-Projekt handelt, DNSSEC unterstützt (das du später ebenfalls konfigurieren wirst) und diese Einstellung für deine Zwecke nicht allzu wichtig ist, da du Unbound installieren wirst, das die Anzahl der DNS-Anfragen, die du Upstream sendest, massiv reduzieren wird und somit deine Privatsphäre schützt
    • Bildschirme 4-8, ok, ok, ok, ok… (wähle die Standardeinstellung „StevenBlack’s Unified Host List“ als deine Sperrliste)
    • STOP WAIT WICHTIG: Auf Bildschirm 9, „Installation complete“, wird dir die URL des Admin-Webinterfaces angezeigt, also die IP-Adresse des Pi + /admin/, und du erhältst ein zufällig generiertes Passwort für das Admin-Webinterface, das NICHT das Admin-Passwort ist, das du bei der Installation festgelegt hast! Notiere dir dieses Passwort, und ja, es hat keinen Benutzernamen!
      • Natürlich kannst du das Passwort für das Web-Interface im Terminal mit dem Befehl ändern: pihole -a -p
  • Ok, fertig! Du hast jetzt einen werbeblockierenden DNS-Server, der auf einer IP in deinem Netzwerk sitzt. Super!

Schritt 7: Lege eine statische IP-Adresse für deinen Pi-Hole/DNS-Server fest

  • Wie von Pi-Hole während der Installation empfohlen, musst du dem Raspberry Pi eine statische IP zuweisen
  • Führe in der SSH-/Terminalsitzung den folgenden Befehl aus, um die Netzwerkkonfigurationsdatei für Raspbian zu öffnen: sudo nano -w /etc/dhcpcd.conf
    • Ich nehme an, du weißt, wie man eine Datei in nano bearbeitet?
  • Du musst die Zeilen für IPv4 „auskommentieren“ und sie so bearbeiten, dass sie zu deinem Netzwerk und deiner gewünschten statischen IP passen
  • Finde den Abschnitt in der Datei, der wie folgt aussieht:
# Example static IP configuration:
# interface eth0
# static ip_address=192.168.178.58/24
# static ip6_address=fd51:42f8:aede:d92e::ff/64
# static routers=192.168.178.1
# static domain_name_servers=192.168.178.1 8.8.8.8
  • Lass es so aussehen und speichere dann (STRG+O, STRG+X):
# Example static IP configuration:
 interface eth0
 static ip_address=YOUR_DESIRED_STATIC_IP_FOR_PIHOLE/24
# static ip6_address=fd51:42f8:adee:d92e::ff/64
 static routers=YOUR_ROUTER_OR_GATEWAY_IP
 static domain_name_servers=YOUR_DESIRED_STATIC_IP_FOR_PIHOLE
  • Nachdem du die neue Konfiguration gespeichert hast, musst du den Raspberry Pi neu starten, damit die Einstellungen wirksam werden UND du musst diese IP auch auf deinem DHCP-Server, Router oder Gateway auf statisch setzen
  • Um den Pi neu zu starten, führe diesen Befehl aus: sudo reboot
  • Hinweis: Du wirst diese statische IP auch für zukünftige Putty-/SSH-Zwecke benötigen, also dokumentiere sie!

Schritt 8: Anmeldung bei der Webschnittstelle und Konfiguration von Sperrlisten

  • Du kannst dich nun in das Pi-Hole-Webinterface einloggen. Wenn dein Raspberry Pi eine statische IP hat, wie oben konfiguriert (192.168.178.250), navigiere zu http://192.168.178.250/admin/ (beachte das Fehlen von HTTPS, da du nur über dein lokales Netzwerk auf das Gerät zugreifen wirst und es nicht über eingehende Ports aus dem Internet erreichbar ist, richtig? Richtig?!?)
  • Du wirst einen Zertifikatsfehler erhalten, da du die Einrichtung eines TLS-Zertifikats und die ganze HTTPS-Sache überspringen kannst, also akzeptiere „das Risiko“ in deinem Browser und logge dich in dein Pi-Hole-Webinterface ein
I find the UI/UX of Pi-Hole to be really top notch for an open-source project.  Great job!
Ich finde das UI/UX von Pi-Hole wirklich erstklassig für ein Open-Source-Projekt. Tolle Arbeit!
  • Ich werde hier nicht jede einzelne Seite durchgehen, sondern nur die wichtigen Dinge hervorheben, aber hier ist die Dokumentation von Pi-Hole selbst
  • Die erste wichtige Seite ist die „Adlists“-Seite, denn hier kannst du dich für weitere Werbeblocker und andere Arten von Blockern anmelden, die alle von Freiwilligen kostenlos gepflegt werden
    • Ich habe zum Beispiel eine dieser Listen für meinen Bruder eingerichtet, der vier Kinder hat. Du hast Werbung mit der Standardliste von Steven Black blockiert, wie du es bei der Einrichtung getan hast, aber ich habe auch eine Porno-Blockierliste für sein Netzwerk hinzugefügt, um seine Kinder zu schützen
    • Hier findest du weitere Blockierlisten, die du in Pi-Hole überprüfen und abonnieren kannst, und auch hier kann Google dein Freund sein, also sieh es dir an
  • Die zweite wichtige Seite ist „Domains“, wo du bestimmte Websites auf eine sichere Liste setzen oder blockieren kannst
    • Ich habe zum Beispiel kleine Shopping-Aggregator-Seiten auf die Whitelist gesetzt, weil ich manchmal möchte, dass die Werbe-/Tracking-Links für einige Seiten funktionieren, aber generell möchte ich NICHT getrackt werden
    • Ich habe zum Beispiel (.|^)googleadservices.com$ auf die Safe-List gesetzt, damit die Google Shopping-Links funktionieren.
    • Ich überlasse es dir, hier mit den Domains herumzuspielen, je nachdem, was dir am besten gefällt
  • Schließlich kannst du unter „Tools → Update Gravity“ die Blocklisten, die du abonniert hast, manuell aktualisieren, aber diese Aktualisierung findet auch automatisch sonntags (in deiner Zeitzone) zwischen 3:00 und 5:00 Uhr morgens statt, so dass manuelle Aktualisierungen nicht erforderlich sind

Step 9: Unbound einrichten

  • Jetzt wirst du Unbound installieren, aber was ist Unbound und warum interessiert es dich?
    • Auch hier bin ich kein Super-Netzwerkexperte, daher findest du weitere Informationen in der Unbound-Dokumentation oben. Im Wesentlichen verwandelt Unbound deine Pi-Hole-Installation in einen RECURSIVE DNS-Server. Das bedeutet, dass Unbound deinen Pi-Hole-DNS-Server zwingt, die gesamte Adresskette aufzulösen, wenn er einen Look-up durchführt. Das bedeutet, dass Pi-Hole alle Abfragen so lokal wie möglich hält und nur dann Upstream-DNS-Server abfragt, wenn es das MUSS. Indem du nicht ständig die Upstream-DNS-Server von Google oder dem ISP abfragst, verhinderst du, dass diese Drittanbieter ein Profil deiner Suchanfragen erstellen. Außerdem bleiben die DNS-Anfragen deines lokalen Geräts intern zwischen deinem Gerät und der Pi-Hole-Installation, was ebenfalls zur Sicherheit beiträgt, da die Rückgriffe auf Nicht-DNSSEC-Anfragen über Port 53 UDP im Klartext erfolgen und möglicherweise abgefangen werden können
    • Wenn du wie ich bist und den Unterschied zwischen DNSSEC, DNS über HTTPS und DNS über TLS nicht ganz verstehst und warum rekursives DNS mit DNSSEC „privater und sicherer“ ist als die Verschlüsselung deiner DNS-Anfragen mit TLS an einen vertrauenswürdigen Upstream-Provider, dann lies diesen sehr detaillierten Artikel, der die Konzepte besser versteht als ich
  • Wie auch immer, folge einfach den obigen Dokumenten/Anleitungen, um Unbound zum Laufen zu bringen
    • Es sind im Wesentlichen 3 Schritte:
      • Installiere Unbound per SSH / Terminal (denke daran, dich per SSH in die neue statische IP einzuwählen)
      • Bearbeite die Datei pi-hole.conf mit nano, wie in der Dokumentation beschrieben
      • Aktualisiere die maximale Paketgröße für DNSSEC-Abfragen (ich nehme den Autor einfach beim Wort, dass dies notwendig ist) 😉
      • Schließlich änderst du im Pi-Hole Web-Interface deinen Upstream-DNS-Anbieter von OpenDNS zu einem rekursiven Look-up, indem du den „Custom 1 (IPv4)“ server to 127.0.0.0#5335
    • In der Unbound-Dokumentation ist alles genau beschrieben, und ich habe beim Abschnitt „Add logging to Unbound“ aufgehört

Schritt 10: Richte dein Pi als DNS-Server deines Netzwerks ein und teste (LETZTER SCHRITT!)

  • Ok, letzter Schritt! Ja! Ich gehe auch davon aus, dass du weißt, wie du den DNS-Server deines Routers ändern kannst
  • Richte deinen Router / dein Gateway so ein, dass es das Pi-Hole als DNS-Server für sich und seine DHCP-Clients verwendet
  • Starte deinen Router / dein Gateway neu, damit der DHCP-Server allen deinen Clients neue Adressen zuweist
  • Jetzt ist es an der Zeit zu testen:
    • Die Befehle: ipconfig /flushdns und nslookup sind deine Freunde in der Windows-Welt
    • Der Befehl: digist dein Freund unter Linux und OS X, wobei es in der Testphase sehr hilfreich und wichtig ist, den lokalen DNS-Cache zu leeren, daher findest du hier eine Hilfe für Linux and OS X
    • Hier sind einige gute Testbeispiele aus den Unbound-Dokumenten, die du über deine SSH-/Terminal-Sitzung auf dem Pi ausführen kannst
      • dig fail01.dnssec.works @127.0.0.1 -p 5335
      • dig dnssec.works @127.0.0.1 -p 5335
    • Du kannst mit dieser Seite weiter testen, ob DNSSEC funktioniert
  • TIPP ZUR FEHLERBEHEBUNG:
  • Teste auf jeden Fall mit Websites, die du normalerweise nicht besuchst: nslookup whitehouse.gov zum Beispiel, weniger etwas wird vielleicht auf der Router-Ebene zwischengespeichert
  • Außerdem ist mir das passiert, als mein Bruder ein Netzwerk mit mehreren Subnetzen hatte: Wenn DNS für den Raspberry Pi im Terminal korrekt aufgelöst wird, aber nicht auf deinen Geräten / Clients, dann überprüfe die Einstellungen unter „Settings → DNS“
Note the settings under "Potentially dangerous options" bordered in red, as you may need to allow for DNS queries to the Pi-Hole from multiple INTERNAL hops away
Beachte die rot umrandeten Einstellungen unter „Potentiell gefährliche Optionen“, da du eventuell DNS-Anfragen an das Pi-Hole von mehreren INTERNEN Hops entfernt zulassen musst
  • Wenn du sicher bist, dass dein Raspberry Pi ordnungsgemäß mit einer Firewall ausgestattet ist, prüfe, ob deine Clients und Geräte eine Antwort von Pi-Hole erhalten können, wenn du diese Einstellungen ein wenig lockerst

Ok, das war’s! Wenn deine Geräte Lookup-Antworten von ihrem Server „pi.hole“ erhalten, bist du startklar. Öffne einige Wetter- oder Nachrichtenseiten und schau, ob du mit Werbung zugemüllt wirst. Überprüfe auch die anderen Websites, die du möglicherweise blockiert hast. Wenn du sie nicht erreichen kannst (Site not found / 404), funktioniert alles wie vorgesehen.

Abschließende Anmerkungen / Caveats:

Glückwunsch, wenn du so weit gekommen bist und alles funktioniert. Es ist kompliziert, aber du hast es geschafft und hoffentlich etwas dabei gelernt. Bitte melde dich bei mir über das Kontaktformular, wenn ich dir helfen kann. Oben habe ich schon die Vorbehalte erwähnt, denn es gibt ein paar Möglichkeiten, wie Werbung trotzdem an Pi-Hole vorbeikommt, und manchmal willst du sie vielleicht sogar zulassen.

Zunächst solltest du die Grenzen der DNS-Filterung verstehen. Wenn die Werbung von einer Seite kommt, die NICHT auf einer der Blocklisten steht, die du abonniert hast, dann wird sie vom Gerät angezeigt. Pi-Hole kann nicht blockieren, was es nicht kennt, aber wenn die Werbung von der Quelle des Inhalts kommt, den du konsumieren willst, kann Pi-Hole sie nicht blockieren, ohne den Inhalt zu blockieren. Das bedeutet: Wenn du dir ein YouTube-Video ansiehst und eine Videowerbung von goodcontent.youtube.com bekommst, wird Pi-Hole KEINEN Inhalt von *.youtube.com blockieren, da du ja den Rest des echten YouTube-Videos sehen willst. Die großen Tech-Unternehmen sind schlau genug, um dir Werbung von ihren Hauptdomänen zu zeigen und nicht von goodcontent.youtube.adspammer.com, die leicht blockiert werden könnte.

Zweitens gibt es Fälle, in denen du die Werbe- oder Inhaltsfilterung überspringen möchtest. Hier hast du mehrere Möglichkeiten. Du kannst die fraglichen Seiten zur Safe-List im Pi-Hole Web-Interface hinzufügen, wie du es bei Google Shopping gemacht hast, oder du kannst den DNS-Server deines Geräts entweder manuell in den Einstellungen ändern oder einen VPN-Client aktivieren, der oft einen sicheren Tunnel zu den DNS-Servern des VPN-Dienstes bereitstellt. Ich benutze zum Beispiel TorGuard und die haben einen werbeblockierenden DNS-Anbieter für ihren VPN-Dienst oder einen kommerziellen, wie 8.8.8.8. Das liegt ganz bei dir. Viel Glück!

Schreibe einen Kommentar

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