Mit einem Raspberry Pi kann man ziemlich viele Dinge anstellen. Eine Möglichkeit ist, dass man einen Pi als DNS Server mit der Software Pi-Hole verwendet. Was ist der Vorteil von sowas?
Der DNS-Server als Werbeblocker
Wer sich heutzutage im Internet aufhält, wird bestimmt schon mal an der ein oder anderen Stelle ein kleines, unauffälliges Werbebanner gesehen haben. OK, Scherz beiseite, das Internet ist voll mit Werbung, unnützen blinkenden Bannern und sonstigem Unfug. Pi-Hole ist ein DNS-Server, der für die Umwandlung von Namen in IP-Adressen genutzt wird. Der Gimmick der Software ist, dass Sperrlisten genutzt werden, damit diverse Adressen nicht aufgelöst bzw. „anders“ aufgelöst werden. Wird z.B. ein Werbebanner von der Adresse ad.beispiel.de ausgeliefert und diese Adresse auf der Sperrliste steht, kann der Browser das eigentliche Werbebanner nicht aufrufen (z.B. weil er meint, der Server ist unter 127.0.0.1 erreichbar) und es wird nicht angezeigt. Super Sache, vor allem weil so nicht auf jedem Endgerät ein Werbeblocker installiert werden muss und man z.B. auch sein Handy deutlich besser und werbefreier nutzen kann. Eine Diskussion über das Sperren von Werbung und der armen armen Werbebranche sparen wir uns übrigens an dieser Stelle, wer Werbung sehen möchte und die Seiten unterstützen möchte, installiert entweder keinen Pi-Hole oder stellt seine Lieblingsseiten auf die Whitelist.
Gibt es Seiten oder Adressen, die fälschlicherweise geblockt werden, kann dies durch eine Whitelist umgangen werden. Weiterhin können Seiten, die nicht erkannt werden, so auf eine Blacklist kommen. Man sieht eine Statistik, wie viel geblockt wurde und auch was, wenn man möchte. Ich nutze den Pi-Hole zuhause in meinem privaten Netz seit ein paar Tagen und möchte hier einfach mal eine Anleitung schreiben, wie man das Gerät installiert. Here we go…
Die Grundinstallation
Wir starten mit einem Raspberry Pi der dritten Generation. Natürlich gehen auch Geräte der älteren oder neueren Generation, aber von dem dritten Modell habe ich noch ein paar hier rumliegen, die nicht (mehr) gebraucht werden.
Download von Raspbian
Wir starten mit dem Download von Raspbian, das Image bekommen wir unter https://www.raspberrypi.org/downloads/raspbian/. Ich nutze Raspbian Buster with desktop, die Variante mit zusätzlicher Software brauche ich in diesem Fall nicht.
Win32DiskImager
Um das Image später auf die SD-Karte zu spielen, nutze ich Win32DiskImager. Die Software kann unter anderem auf Sourceforge heruntergeladen werden: https://sourceforge.net/projects/win32diskimager/
SD Memory Card Formatter
Die Software SD Card Formatter kann die SD-Karte im Vorfeld formatieren und in das korrekte Format bringen. Die Software kann unter https://www.sdcard.org/downloads/formatter/ heruntergeladen werden.
Die Installation
Wir starten mit dem Aufruf der Software SD Memory Card Formatter und wählen unsere SD-Karte aus, die wir mit einem Kartenlesegerät an den PC / Notebook angeschlossen haben. Ich empfehle an dieser Stelle eine volle Formatierung der Karte, auch wenn dies länger dauert. Das hat den Vorteil, dass mögliche Fehler auf der Karte direkt erkannt werden und die Karte getauscht werden kann.
Ist die Karte komplett formatiert, können wir das heruntergeladene Image auf die SD-Karte kopieren. Dazu nutzen wir die Software Win32DiskImager, wählen die Karte aus, wählen das Image aus (was vorher entpackt werden muss) und schreiben es mit dem Button Write auf die Karte.
Wenn das Image vollständig auf die Karte geschrieben wurde, können wir die Karte in unseren kleinen Pi stecken und das System starten.
Falls man direkt nach dem Start auf das System zugreifen möchte, kann man auch eine Datei mit dem Namen SSH auf die Hauptebene sppeichern, in diesem Fall wird automatisch SSH aktiviert. Da nach dem ersten Start allerdings ein kleiner Wizard durchläuft, der einige wichtige Abfragen macht, empfiehlt sich die einmalige Nutzung von einem Monitor mit Maus/Tastatur.
Die ersten Schritte der Einrichtung
Startet das System das erste Mal, wird im ersten Schritt die Partition so vergrößert, dass die gesamte SD-Karte genutzt wird. Danach startet das System normal durch und begrüßt uns mit einem kleinen Assistenten. Mit Hilfe des Assistenten können wir die Sprache einstellen, das Tastatur-Layout sowie die ersten Updates einstellen. Nach den Updates möchte das System nochmal einen Neustart haben, danach können wir mit der Einrichtung des Netzwerks fortfahren.
Aktivieren von SSH & setzen von einem eigenen Hostnamen
Damit wir von außen per SSH auf das System kommen, empfiehlt sich die Aktivierung von SSH auf das System. Dies geschieht im Optionsmenü von unserem PI.
Hier können wir direkt einen eigenen Namen für unser System setzen
Unter Interfaces können wir nun SSH einschalten.
Nach einem Klick auf OK steht nun SSH zur Verfügung, wegen der Änderung des Hostnamen müssen wir das System allerdings einmal durchbooten.
Konfiguration einer statischen IP-Adresse
Damit der Raspberry Pi immer unter der gleichen IP-Adresse verfügbar ist, setzen wir die IP von DHCP auf statisch. Dies geschieht durch Anpassung der Datei /etc/dhcpcd.conf.
sudo nano /etc/dhcpcd.conf
Hier passen wir die folgenden Zeilen auf die von uns gewünschten Werte an:
# Example static IP configuration:
#interface eth0
#static ip_address=192.168.0.10/24
#static ip6_address=fd51:42f8:caae:d92e::ff/64
#static routers=192.168.0.1
#static domain_name_servers=192.168.0.1 8.8.8.8 fd51:42f8:caae:d92e::1
Die Datei wird gespeichert und wir starten unseren Pi ein letztes Mal durch, damit er die Netzwerk-Änderungen anwendet. Danach können wir uns erneut per SSH an dem System anmelden und mit der Pi-Hole Installation beginnen.
Die Installation von Pi-Hole
Nachdem nun alle benötigten Vorbereitungen getroffen sind, können wir nun die Installation der Pi-Hole Software starten. Dies geht ziemlich einfach, wir brauchen dazu nur den folgenden Befehl ausführen:
curl -sSL https://install.pi-hole.net | bash
Die Installation läuft weitestgehend von alleine durch, es werden allerdings einige Abfragen gemacht, wie man sein System gerne konfigurieren möchte.
Als erstes müssen wir die Upstream-DNS-Server angeben, die wir gerne benutzen möchten. Ich bevorzuge hier die OpenDNS-Server.
Danach erfolgt die Auswahl der Blocklisten, die wir gerne nutzen möchten. Ich lasse hier die Standard-Auswahl stehen.
Nun müssen wir wählen, ob wie Werbung über IPv4 und/oder IPv6 blocken möchten. Auch hier bleibt die Standard-Auswahl bei beiden Optionen stehen.
Nun bekommen wir nochmal unsere Netzwerk-Einstellungen gezeigt mit der Empfehlung, dass wir eine statische IP-Adresse benutzen sollten.
Im nächsten Schritt werden wir gefragt, ob wir das grafische Web-Interface nutzen möchten. Dies ist absolut empfohlen, da wir über das Web-Interface einiges einstellen und konfigurieren können, z.B. unsere Black- und Whitelisten.
Wenn die DNS-Abfragen gespeichert und aufgeführt werden sollen (was zu empfehlen ist für Fehlersuche und Troubleshooting), muss dies ebenfalls eingeschaltet werden. Bei einer Aktivierung kann dann noch das Log-Level ausgewählt werden.
Hat alles geklappt, wird die erfolgreiche Installation inkl. dem Kennwort für das Web-Interface gemeldet:
Die Anmeldung an der Webkonsole
Rufen wir nun die im Setup angezeigte URL auf, erwartet und das Webinterface von unserem Pi-Hole.
Hier erwartet und erstmal nur eine grobe Übersicht über die Anfragen, die geblockten Anfragen sowie die Anzahl der Domains auf der Blockliste. Melden wir uns nun mit dem Kennwort an, was im Setup angezeigt wurde, bekommen wir hier auch noch Möglichkeiten zur Anpassung der Einstellungen sowie zur Pflege der Listen für unsere eigenen Domains.
Die Aktivierung des Pi-Holes
Damit wir nun von dem Pi-Hole DNS Server profitieren, müssen wir ihn in unserem Internet-Router als DNS-Server einstellen. Ich in meinem Fall muss dies in meinem Ubiquiti USG Pro machen, hier stelle ich den DNS-Server vom WAN-Interface auf die vergebene Adresse in meinem lokalen Netzwerk.
An dieser Stelle können wir auch sehen, warum ich meinen Pi-Hole in den Screenshots pihole2 genannt habe: Es existiert bereits ein pihole1, der als primärer DNS-Server schon im Netzwerk aktiv ist. Da aber der Ausfall von dem einen Gerät einen Ausfall vom DNS verursachen würde, habe ich einfach zwei Raspberrys genommen, um eine Redundanz zu schaffen 🙂
Die Statistik vom ersten Gerät sieht auch etwas lebendiger aus als auf dem gerade erst konfigurierten Gerät:
Fazit
Damit wäre die Grundinstallation von unserem Pi-Hole, basierend auf einem Raspberry Pi 3, abgeschlossen. Das System arbeitet nun als DNS-Resolver für mein internes Netzwerk und ist mit den Standard-Regeln und -Listen auch erstmal gut ausgestattet. Man kann jederzeit eigene Filter oder ganze Listen hinzufügen, wenn man den Funktionsumfang noch erweitern möchte. Der Betrieb läuft flüssig, schnell und kostet dank dem geringen Stromverbrauch von einem Raspberry Pi kaum zusätzliches Geld.
Viel Spaß bei der Einrichtung und Nutzung von eurem eigenen Pi-Hole. Achtet vor allem mal auf die Werbung auf den mobilen Endgeräten im WLAN, die nach Nutzung des Pi-Holes dramatisch einbricht und viel weniger stört.
Normalerweise kommt ja an dieser Stelle immer die Bitte, diesen Blog doch bitte auf die Ausnahmeliste im Pi-Hole zu setzen. Müsst ihr bei meinem Blog nicht machen, da ich null Werbung schalte und wie gewohnt weiterhin meine Informationen frei zur Verfügung stelle. Vielleicht könnt ihr mir ja mal nen Kaltgetränk ausgeben, wenn ihr mich seht. Das ist irgendwie viel cooler 🙂
Perfekte Anleitung. Klappt super. Danke.
Ich suche nun noch nach einer Anleitung wie ich von meinem Smartphone (iPhone) aus per VPN auf das pihole „zugreifen“ kann bzw. also auch mein Smartphone unterwegs von Werbung befreien kann.
Hast du da einen Tipp? Habe bisher nichts gefunden.
Hi,
um den Pi auch von deinem Handy aus zu nutzen, müsstest du ein VPN mit deinem Handy aufbauen und sämtliche Daten über den VPN-Tunnel schicken (also kein Split Mode) sowie deinen Pi Hole als DNS Server nutzen.
Eine andere Möglichkeit wäre die Nutzung von Apps, die etwas ähnliches machen, z.B. Blokada. Hier wird im Prinzip das gleiche gemacht, ist die Frage ob du dem Betreiber die Daten von dir geben möchtest oder nicht 🙂
Gruß, Jan
Hm ja. Das dachte ich mir. Ich wollte von in der fritzbox einrichten und die Daten einfach im iPhone eingeben. Muss ich da unter Netzwerk und auch unter Internet/ Zugangsdaten je die ip des pihole bei DNS eingeben? Kennst du dich da aus? Hab versucht es ein wenig zu googeln, weiß aber nicht zu 100% was die richtige Einstellung ist.
Brauche ich für VPN der fritzbox auf jeden Fall einen Dynamic DNS Server oder kann ich da das pihole eintragen?
Danke für deine Hilfe.
… VPN in der fritzbox einrichten und die Daten…
Kannst dir deine Antwort glaube ich sparen. Habe eben gesehen dass meine fritzbox nur über IPv6 erreichbar ist. Mein Mobilfunkanbieter bietet jedoch nur IPv4 an. Eine direkt vpn Verbindung zur fb kann ich also vergessen wenn ich das richtig verstehe.
Muss also irgendwie über den pi gelöst werden. Mit Openvpn oder so. Leider hab ich noch keine Anleitung gefunden wie ich das mit pihole kombinieren kann, die ich auch verstehe. 😉
Hallo Jan, ich habe Pi-hole schon eine ganze Weile laufen und war sehr zufrieden. In letzter Zeit kommt die Werbung im Firefox wieder und ich habe das Problem entdeckt… dns over https. Trots Abschaltung von DoH im Firefox hab ich immernoch Werbung, z.B. auf wetter.com. Evtl hast Du ja eine Lösung.
Hallo Jan,
wo genau hängen Deine PiHoles genau?
Vor oder nach dem USG?
In Management oder einem anderen VLAN?
Danke und Gruss,
Matthias
Hallo Matthias,
meine PiHoles hängen im internen LAN, was in meinem Fall auch das Management-VLAN ist. Man könnte sie theoretisch auch in ein anderes Subnetz hängen und routen, wenn du Firewall-Regeln entsprechend vorhanden sind. Macht in meinem Heim-Netz aktuell aber keinen Sinn 🙂
Gruß, Jan
Habe nach dieser Anleitung pihole auf einem Raspi 2B aufgesetzt und alles sofort und ohne Probleme zum laufen bekommen. Jetzt noch ein bisschen Feintuning und alles ist perfekt.
Danke für diese Anleitung.
vielen Dank für die Anleitung, habe mir ein synology router bestellt, danach richte ich pi-hole ein.
Hallo Jan und alle Mitleser,
Als erstes möchte ich sagen, dass ich es sehr cool finde, dass hier dein umfangreiches Wissen mit deiner Community geteilt wird.
Und als nächstes dass ich diese Anleitung verwenden werde um mein pi4 heute Mittag einzurichten und dann weiteres Feedback geben werde.
Zudem wüsste ich gerne von dir welches Lehrmaterial ich mit einem niedrigem Wissensstand verwenden sollte um mich mehr mit der Networking Materie zu befassen.
Würde gerne ein paar Server zuhause erstellen können und evtl auch paar detected Gaming server…ubd zwar so, dass ich genau verstehe wie alles ineinander greift und nicht nur so dass es funktioniert. 🙄
Hoffe der Kommentar ist passend und nicht zu sehr ausschweifend.
Hallo Paul,
danke für die Blumen 🙂 Ich kann dir udemy als Quelle für Anleitungen und Tutorials ans Herz legen, weiterhin gibt es auf youtube auch einige gute Anleitungen zu gewissen Themen. Und ansonsten hilft arbeiten und probieren mit der Thematik immer gut, lesen von Tutorials und versuchen zu verstehen, wie die Dinge miteinander arbeiten oder eben auch nicht.
Viel Erfolg 🙂
Jan
Erst mal Kompliment und herzlichen Dank für die schöne Anleitung.
Leider funtkioniert bei mir die Pi-Hole Installation nicht.
Auf die Command-Line
curl -sSL https://install.pi-hole.net | bash
hin bekommen ich die folgende Meldung:
Failed to connect to install.pi-hole.net port 443: Keine Route zum Zielrechner
Grundsätzlich funktioniert die Internetverbindung.
sudo apt-get update
konnte ich erfolgreich ausführen.
Wäre froh um Tipps wie ich das Problem lösen kann.
Danke schon jetzt!!!
Hallo Markus,
wenn der Befehl nicht funktioniert sind hier zwei Alternativen aufgeführt: https://docs.pi-hole.net/main/basic-install/
Es gibt auch einige Berichte von anderen Menschen, die dieses Problem auch haben, die vorab ein Upgrade der Distribution machen mussten => https://discourse.pi-hole.net/t/unable-to-install-pi-hole-bash-curl-command-not-found/6734/7
Versuch das mal bitte, ansonsten Alternative A oder B mal probieren, ob es damit klappt.
Schönen Gruß
Jan
Pingback:Pi-Hole DNS Server als VM unter Hyper-V - Jans Blog