c't 3003: Pi-Hole kann Ladezeiten halbieren | Tutorial

Pi-Hole blockt Malware, Werbung und alles was sonst noch nervt im Netz. c't 3003 hat die Raspi-Software auf Herz und Nieren getestet.

Lesezeit: 16 Min.
In Pocket speichern
vorlesen Druckansicht Kommentare lesen 349 Beiträge
Von
  • Jan-Keno Janssen

Das Pi-Hole gibt es schon seit 2015 und tut auf tausenden Raspberry Pis seinen Dienst. c't 3003 hat sich die Software genauer angeschaut.


Transkript des Videos:

Das Internet kann ein sehr, sehr nerviger Ort sein: Überall poppt Zeugs auf, das man nicht sehen will oder das einem sogar Schadsoftware aufdrängt. Wie schön wäre es doch, wenn es irgendwas geben würde, das nur die Sachen durchlässt, die ich sehen will – und nicht die, die ich nicht sehen will? Und: Sowas gibt’s tatsächlich! Heißt Pi-Hole, läuft sogar auf 10 Jahre alten Raspberry Pis – und lässt sich innerhalb von fünf Minuten installieren, ich zeige euch am Ende des Videos, wie das geht. Außerdem erkläre ich euch, was Pi Hole kann und was nicht. Bleibt dran.

Liebe Hackerinnen, liebe Internetsurfer, herzlich willkommen hier bei…

Man muss das so klar sagen: Es gibt Websites, die sind so mit Werbung vollgestopft, dass man sie überhaupt nicht mehr richtig benutzen kann; also wirklich buchstäblich nicht benutzen kann, weil zum Beispiel ein nicht wegklickbares Dings vor dem Inhalt aufpoppt. Will man das beheben, kann man beispielsweise Browser mit integriertem Werbeblocker wie Brave installieren – aber man muss das dann auf jedem Gerät machen, auf dem man Internet-Inhalte konsumiert will – und bei einigen kann man gar keine alternativen Browser installieren, zum Beispiel auf Fernsehern oder E-Book-Readern.

Und hier kommt der Pi-Hole ins Spiel, der arbeitet nämlich extrem elegant: Einmal installiert, sieht und hört man ihn nicht mehr, aber auf jedem zuhause mit dem Internet verbundenen Gerät werden auf einmal keine unerwünschten Dinge wie Spyware, Cryptominer und aggressive Werbung mehr geladen.

Ganz gut, oder? Vor allem: Dadurch bauen sich Websites auch schneller auf, logisch, weil weniger Zeugs geladen werden muss.

Hier, mal zum Vergleich, gemessen mit dem eingebauten Netzwerkanalyse-Tool von Firefox: Hier einmal heise.de mit Pi-Hole, und einmal ohne. Und hier golem.de einmal mit und einmal ohne.

So, aber jetzt erstmal was ganz Wichtiges: Viele Leute stellen sich Pi-Hole wie so einen Wasserfilter oder sowas vor, also dass die gesamten Daten durch den Raspi durchfließen müssen, um darin gefiltert zu werden. Nein, so ist das nicht, dieses mentale Bild bitte jetzt sofort löschen!

Ich pflanz euch jetzt mal das richtige Bild ein: Also wenn ihr auf eine Website geht, zum Beispiel ct.de, dann verbindet sich euer Gerät nicht direkt mit ct.de, sondern mit der IP-Adresse von ct.de. Und die weiß euer Gerät nicht aus dem Kopf, die muss es erstmal nachschauen. Und das geht mit dem sogenannten DNS, dem Domain Name System. Das funktioniert ungefähr wie ein Telefonbuch.

Wenn ihr nix selbst einstellt, kriegt ihr von diesem DNS nix mit, standardmäßig wird als DNS-Server immer der vom Provider verwendet, also zum Beispiel von der Telekom. So, und jetzt kommt der Pi-Hole ins Spiel. Im Router, zum Beispiel hier in meiner Fritzbox, stellt ihr nämlich jetzt einen lokalen DNS-Server ein – und das ist dann einfach die IP-Adresse des Raspberry Pi, auf dem Pi-Hole läuft.

Wenn ihr jetzt mit irgendeinem Gerät auf ct.de gehen wollt, fragt euer Router nicht mehr beim DNS-Server von der Telekom nach der ct.de-IP-Adresse, sondern bei eurem Raspi mit Pi Hole. Konkret passieren beim Aufruf einer Website etliche solcher DNS-Anfragen, es wird ja von etlichen Orten Zeugs wie Bilder, Skripte, Tracker geladen – jeder Website-Aufruf verursacht dutzende oder sogar hunderte DNS-Anfragen.

Und diese ganzen Anfragen kriegt jetzt also der Raspi. Sobald dieser eine Anfrage als Phishing-Seite oder Werbung erkennt, sagt Pi Hole: Nee, für diese Anfrage gebe ich dir jetzt keine IP-Adresse. Falls das also zum Beispiel ein Werbebanner war, wird das einfach nicht geladen.). Falls ihr euch jetzt fragt, woher der Raspi die „richtigen“ Adressen weiß: Sehr gute Frage, der Pi Hole nutzt dafür einfach einen externen DNS-Server, also zum Beispiel den, den eurer Provider sowieso standardmäßig nehmen würde; oder ihr sucht euch selbst einen aus. Ich habe hier ganz gute Erfahrungen mit dem von Cloudflare gemacht, der ist zuverlässig und schön schnell. Wie ihr den aktiviert, zeige ich euch gleich im Tutorial.

Das bedeutet also, dass nicht der ganze Datenverkehr durch den Raspi geleitet wird, sondern es laufen nur diese sogenannten DNS-Anfragen darüber. Die Datentransfer-Geschwindigkeit wird davon null beeinflusst. Nur der Seitenaufbau könnte THEORETISCH langsamer sein, weil ja schließlich jede DNS-Anfrage einen kleinen Umweg nimmt: Statt direkt beim DNS-Server anzufragen, wird halt erst beim Raspi gefragt, der die Anfrage mit seiner Filterliste vergleicht und die Anfrage an einen DNS-Server weiterschickt, falls sie nicht in der Liste auftaucht.

ABER: In der Praxis fühlt sich das Surfen trotzdem schneller an, weil ja viele Anfragen gar nicht erst verarbeitet werden müssen (also zum Beispiel für Tracker oder den Download von Bannern); und außerdem wird bei DNS sehr viel aus dem Cache gearbeitet, das heißt, die Anfragen werden eh aus dem Zwischenspeicher beantwortet – da spielt es dann keine Rolle, ob da noch ein Pi-Hole im System hängt.

Und jetzt nochmal ein kleiner Disclaimer: Der Pi-Hole ist (unter anderem) ein Werbeblocker; und Werbung zahlt unter anderem einen Teil des Gehalts von Journalisten-Keno. Privat-Keno nervt Werbung allerdings genauso wie euch. Es ist vertrackt. Was ihr machen könntet: Wenn ihr findet, dass wir bei heise einen guten Job machen, dann denkt doch mal über ein Pur-Abo nach. Da zahlt ihr ein paar Euro im Monat und habt absolut keine Werbung mehr; es ist wirklich erstaunlich, wie viel schneller die Website damit wird: hier einmal heise.de ohne Abo mit Pi-Hole und einmal mit Pur-Abo.

Oder: Ihr fangt an bei uns zu arbeiten, da bekommt ihr dann heise+ und heise pur abo umsonst – alle Stellenangebote habe ich in der Beschreibung verlinkt.

Aber zurück zu Pi-Hole, ich habe mal den c't-Experten Peter Siering gefragt, ob er die Software allen empfehlen würde.

Peter: Allen, die technisch dazu in der Lage sind, ja.

Keno: Warum?

Peter: Weil es einfach superpraktisch ist. Wenn ich vergleiche: Ich habe zuhause einen Pi-Hole laufen, im Verlag aber keinen. Und der Unterschied beim Besuchen von Webseiten ist eklatant. Das fischt so viel Werbung weg, dass man wieder die Inhalte sieht.

Keno: Das deckt sich mit meinen Tests, allerdings hab ich trotz Pi-Hole einiges an Werbung gesehen, woran liegt das, Peter?

Peter: Es filtert ja nicht weg, sondern es macht ja was anderes. Es beantwortet Namensanfragen nach geblacklisteten Diensten anders als sie normalerweise beantwortet würden und dadurch erscheinen manche Sachen nicht. Man sieht durchaus Werbung, aber eben viel, viel weniger. Das ist das Entscheidende. Und klar, die Werbetreibenden wissen natürlich, dass es diese Techniken gibt und die versuchen auch drum rum zu kommen natürlich.

Keno: So, und wie geht das hier jetzt alles? Total einfach. Was ihr haben müsst: Irgendeinen Raspi – es reicht auch ein Raspi 1 – möglichst mit einer Netzwerkschnittstelle. Ihr könntet den Pi-Hole auch über WLAN anbinden, wenn ihr zum Beispiel nur einen Raspberry Pi Zero W habt, wo ja nur WLAN eingebaut ist und keine Netzwerkbuchse. Aber das sollte man nur im Notfall machen, weil DNS sehr latenz-empfindlich ist und Kabel-Internet deutlich latenzärmer als WLAN und beim Raspi WLAN oft auch nicht sonderlich dauerstabil arbeitet, gerade bei älteren Modellen... Falls ihr keinen Raspi habt: Die Teile sind häufig ausverkauft, aber auf der Website https://rpilocator.com/ findet sich sehr häufig an Anbieter mit Raspis im Angebot.

Zusätzlich zum Raspi braucht ihr: Ein Netzteil, und eine MicroSD-Karte. Auf der MicroSD-Karte muss ein Betriebssystem sein, das bekommt ihr da drauf mit dem Raspberry Pi Imager was auf Windows, Linux und macOS läuft. Hier dann unter „Betriebssystem“ „Raspberry PI OS (other)“ auswählen und dann auf „Raspberry PI OS Lite (32-Bit“). Die Lite-Variante ist ohne grafische Benutzeroberfläche, die reicht für Pi-Hole, wenn ihr wollt, könnt ihr das aber auch auf der normalen Raspi OS-Version installieren.

Dann eure MicroSD rein, bei „SD-Karte“ den Kartenleser auswählen und auf „Schreiben“ klicken, kurz warten, MicroSD raus aus dem Kartenleser und rein in den Raspi. Jetzt könntet ihr einen Monitor per HDMI anschließen. Aber es geht auch cooler, weil man für Pi-Hole nämlich gar keine Monitorausgabe braucht. Dafür drückt ihr vor dem MicroSD-Schreiben im Raspberry Pi Imager einmal Steuerung-Shift-X und ihr seid im geheimen Einstellungsmenü. Hier das Häkchen setzen bei SSH und ein sicheres Passwort eingeben. „Speichern“ und dann „Schreiben“ klicken. Damit ist jetzt die sogenannte Secure Shell aktivierte, das ist eine in der Unix-Welt sehr häufig verwendete Möglichkeit, einen entfernten Rechner per Kommandozeile fernzusteuern; und zwar verschlüsselt.

So, jetzt MicroSD wieder in den Raspi und den Raspi per Netzwerkkabel an den Router anschließen und Strom dran. Ihr könnt den Raspi jetzt fest in Routernähe unterbringen oder irgendwo eingraben, ihr müsst da im Normalfall jetzt nie wieder dran.

Um Pi Hole zu installieren, müsst ihr kurz die IP-Adresse des Raspis herausfinden. Die seht ihr zum Beispiel im Router, hier bei einer Fritzbox unter „Heimnetz“/„Netzwerk“. Wenn ihr schon mal hier seid, könnt ihr direkt mal auf den Stift hier rechts klicken und das Häkchen setzen bei „Diesem Netzwerkgerät immer die gleiche IPv4-Adresse zuweisen“. Jetzt solltet ihr euch mal kurz eure IP-Adressen in einen Editor copy-pasten, dann habt ihr das gleich griffbereit. Bei IPv6 gibt es mehrere, ihr braucht die mit „fd00“ am Anfang.

Und jetzt könnt ihr euch mit ssh auf dem Raspi einloggen. Einfach ein Terminal starten und „ssh IP-ADRESSE -l pi“ eingeben. „pi“ ist der Standard-Username. Das System kennt euren SSH-Key noch nicht, deshalb jetzt einmal „yes“ eintippen und dann wird der abgespeichert.

Jetzt müsst ihr nur noch das Passwort eingeben, das ihr beim Beschreiben der MicroSD-Karte vergeben habt. Charmanterweise geht SSH unter Linux, macOS und Windows. Bei Windows müsst ihr allerdings nicht die normale „Eingabeaufforderung“ starten, sondern die PowerShell.

Und alles, was ab jetzt passiert, ist jetzt das gleiche, auch wenn ihr den Raspi an einem Monitor hängen habt und ihr den mit einer direkt angeschlossenen Tastatur bedient. Pi-Hole installiert ihr mit dem Befehl „curl -sSL https://install.pi-hole.net | bash“.

Ihr werdet jetzt ein paar Sachen gefragt: zum Beispiel hier mehrfach nach der statischen IP-Adresse. In meinem Fall antworte ich immer mit „Yes“, ich habe ja im Router eingestellt, dass dieser die aktuell vergebene Adresse für den Raspi auf ewig beibehalten soll.

Bei der Frage nach den DNS-Servern könnt ihr euch einen aussuchen, der euch am sympathischsten ist. Bei mir sind die Cloudflare-Server am schnellsten, deshalb nehme ich die.

Ganz wichtig sind die Filterlisten, nehmt zuerst einfach die voreingestellte, ihr könnt dann später noch welche hinzufügen.

Ja, das Web-Interface will ich haben, weil sich Pi-Hole damit super komfortabel bedienen lässt. Jo, den Webserver will ich auch, weil sonst funktioniert das Web-Interface ja nicht. Und ich will auch loggen, weil man dadurch natürlich vor allem zu Anfang besser sehen kann, was der Pi-Hole so macht. Läuft das Teil erstmal rund, könnte man das wieder abschalten.

Ja, show everything, vor allem für den Anfang ist das praktisch.

Und schon ist er installiert, der Pi-Hole. Ihr solltet euch am Ende unbedingt das Web-Interface-Passwort hier merken, das braucht ihr, um den Pi-Hole zu steuern.

Tja, und jetzt geht ihr nochmal in die Fritzbox, auf „Heimnetz“, „Netzwerkeinstellungen“, dann geht ihr auf "IPv4-Einstellungen" und dann bei "Lokaler DNS-Server" die vorher copy-pastete IP-Adresse aus eurem Editor reinwerfen. Auf ok. Dann auf "IPv6-Einstellungen". Dort "Unique Local Addresses (ULA) immer zuweisen." Dann nur noch bei DNSv6-Server im Heimnetz die copy-pastete ipv6-adresse rein und etwas weiter unten "DNS-Server, Präfix (IA_PD) und IPv6-Adresse (IA_NA) zuweisen" anhaken. Auf OK und nun müsst ihr die Änderung auf der Fritzbox noch bestätigen: Einfach irgendeine Taste am Router drücken.

Ihr könnt jetzt sicherheitshalber die Fritzbox neu starten und vielleicht den Rechner auch. Wenn ihr jetzt in einem beliebigen Gerät in eurem Netzwerk die gespeicherte IP-Adresse des Raspis eingebt und „/admin“ dahinter hängt, könnt ihr den Pi-Hole steuern. Am besten direkt bookmarken. Einmal das Passwort eingeben, das euch bei der Installation gezeigt wurde und ihr könnt losfrickeln. Aber eigentlich müsst ihr das gar nicht, weil das Ding out of the box schon gut funktioniert. Interessant ist aber das Query Log. Hier könnt ihr nachschauen, was eure Geräte so machen, und ob überhaupt Sachen geblockt werden. Wenn ihr nicht wollt, dass bestimmte Sachen geblockt werden, könnt ihr hier im Query Log hinter dem geblockten Eintrag einfach "Whitelist" klicken. Danach wird das nicht mehr geblockt. Ohnehin sind die Statistiken interessant: Bei mir wird grundsätzlich fast ein Viertel aller Anfragen geblockt – krass, oder? Zusätzliche Blocklisten könnt ihr unter "Group Management"/"Adlists" einfügen. Updaten könnt ihr die Filterlisten mit "Tools"/"Update Gravity". Und wenn mal was nicht klappt, könnt ihr unter "Settings" mal "Restart DNS resolver" versuchen, das hat bei mir einmal geholfen, als sich der Pi-Hole verschluckt hat. Aber das war wirklich nur das eine Mal, ansonsten lief das bei mir schon Monate lang problemlos durch.

Ich bin der Meinung, dass das Internet heute ziemlich kaputt ist; und mit Pi Hole kann man sich zumindest ein bisschen gegen diese Kaputtheit wehren und das Netz etwas besser nutzbar machen. Es beruhigt einfach auch, dass irgendwelche Malware wie Cryptotrojaner gar nicht erst geladen werden. Also ich werde meinen Pi-Hole hier sicherlich weiterlaufen lassen. Das Ding zieht übrigens so wenig Ressourcen, dass auf meinem Raspi 4 zusätzlich zu Pi-Hole noch ein Plex-Server, ein Samba-NAS und Grafana laufen – zu diesen Sachen machen wir bestimmt auch nochmal ein Video. Und wenn ihr das interessant findet auch zu der Pi-Hole-Alternative AdGuard. Tschüss!


c't 3003 ist der YouTube-Channel von c't. Die Videos auf c’t 3003 sind eigenständige Inhalte und unabhängig von den Artikeln im c’t magazin. Redakteur Jan-Keno Janssen und die Video-Producer Johannes Börnsen und Şahin Erengil veröffentlichen jede Woche ein Video.

Mehr von c't Magazin Mehr von c't Magazin

(jkj)