Nie mehr Werbung – Pi-hole auf Ubuntu Server 18.04

Pi-hole Logo

Wer kennt das nicht: Wenn man sich durch das Internet bewegt, wird man unweigerlich mit Werbung konfrontiert. Wenn diese Werbung eher dezent platziert ist, sollte dies nicht weiter stören. Leider gibt es immer mehr Webseiten, die den Bogen überspannt haben. Spätestens, wenn der Lesefluss durch übermäßige Werbung gestört wird, möchte man die Webseite am liebsten sofort wieder verlassen.

Werbebanner sind dabei allerdings noch das kleinere Übel: Bedenklich wird es spätestens beim sog. Malwaretising (Verteilung von Schadcode über Online-Werbung) oder dem Einsatz von Mining-Code auf Webseiten (Code, der im Hintergrund – und meist ohne Wissen der Website-Besucher – Mining für Kryptowährungen ausführt). Das Tracking von Benutzern ist ein weiteres Thema, welches den meisten Nutzern nicht recht sein dürfte.

Werbeblocker (Adblocker) wirken diesen Problemen entgegen: Meistens sind dies Erweiterungen für den Browser, die Werbung und Schadcode im Hintergrund blockieren. Die bekanntesten Vertreter sind hier wohl AdBlock Plus und uBlock Origin. Diese Erweiterungen wirken allerdings nur im Browser, für den sie installiert wurden.

Doch nicht nur Browser sind von der Problematik betroffen. Sämtliche Geräte, die mit dem Internet verbunden sind, wollen meist „nach Hause telefonieren“. So sendet ein Windows-PC regelmäßig Telemetrie-Daten zu Microsoft. Spätestens seit Windows 10 lässt sich dieses Verhalten nicht mehr komplett abschalten. Ich spreche hier absichtlich von Geräten (und eben nicht von Computern), da dies auch auf andere Geräte-Klassen zutrifft. Man denke hier z.B. an Streaming-Multimedia-Systeme oder auch LED-Lichterketten, die komfortabel mit dem Handy bedient werden können.
Irgendwie kommunizieren solche Geräte immer mit irgendwelchen Webdiensten, ohne dass dies dem Nutzer klar ist oder er dieses Verhalten abschalten könnte.

Update-Historie (letztes Update 19.01.2019)
  • 18.01.2019:
    • Empfehlungen für Blocklisten für Facebook hinzugefügt.
  • 17.01.2019:
    • Von Stubby verwendete Ports geändert.
    • Hinweis auf die gleichzeitige Nutzung mehrerer Upstream-DNS-Server mit Stubby hinzugefügt.
  • 13.01.2019:
    • Als Upstream-DNS-Server werden nun die DNS-Server von Digitalcourage empfohlen.
    • Hinweis hinzugefügt, dass auf der Maschine für Pi-Hole kein bereits eingerichteter Webserver laufen sollte.
    • Hinweis hinzugefügt, dass die Installation mittels curl | bash problematisch sein könnte. Alternative Installationsmethode hinzugefügt.
  • 14.12.2018:
    • Empfehlung für Block-Listen von Akamaru hinzugefügt.

Pi-hole: Ein Adblocker für das gesamte Netzwerk

Pi-hole ist ein Projekt zum Blockieren von Werbung, Schadcode und Trackern. Im Unterscheid zu Browser-Addons wird Pi-hole nicht Client-seitig installiert (wie z.B. als Addon im Browser), sondern wirkt Netzwerk-weit. Dazu wird das Programm einfach auf einem Rechner im Netzwerk installiert .Ursprünglich war dafür ein Raspberry Pi (Affiliate Link), vorgesehen, was sich ja schon aus dem Namen des Projekts erahnen lässt. Pi-hole läuft mittlerweile allerdings auf den verschiedensten (Linux-)Plattformen.

Einmal installiert und eingerichtet, blockiert das Programm unerwünschte Werbung und Schadcode – und zwar im kompletten Netzwerk. Als praktisches Beispiel sei hier der Browser Chrome auf einem Android Smartphone erwähnt: In der mobilen Variante können keine Addons genutzt werden, die man von der Desktop-Version kennt. Daher wird man im mobilen Chrome immer Werbung angezeigt bekommen. Nicht jedoch, wenn Pi-hole im gleichen Netzwerk installiert ist, über das das Smartphone mit dem Internet verbunden ist. Dann wird Werbung ohne weiteres Zutun des Nutzers auch im mobilen Browser blockiert – quasi von Geisterhand.

Ein paar Anmerkungen vorweg

Wenn ihr dem Tutorial folgt, dann müsst ihr euch folgender Punkte bewusst sein:

  • Mit der Installation von Pi-hole als Netzwerk-weiten Adblocker greift ihr tief in die Netzwerk-Infrastruktur ein. Wenn hier irgendetwas nicht klappen sollte, dann ist das komplette Netzwerk offline, d.h. es kann nicht mehr gesurft werden, da keine Domains mehr aufgelöst werden können.
  • Dessen solltet ihr euch bewusst sein und auch einen „Plan B“ haben, mit dem ihr die Änderungen durch Pi-hole wieder rückgängig machen könnt. Dies hängt wiederum von der Variante ab, die ihr gewählt habt, um Pi-hole im Netzwerk als DNS-Server zu installieren (siehe Abschnitt Netzwerk-Konfiguration).
  • Die Maschine mit Pi-hole muss immer laufen. Sollte die Maschine mal nicht verfügbar sein (Absturz oder auch nur ein kurzer Reboot), dann ist das Netzwerk in dieser Zeit offline.
  • Ich versuche hier eine möglichst detaillierte Anleitung für die Installation von Pi-hole zu liefern. Trotzdem kann ich nicht garantieren, dass diese Konfiguration mit allen Netzwerk-Konstellationen läuft. Ich übernehme daher keinerlei Haftung für evtl. auftretende Probleme, die nach der Installation von Pi-hole auftreten könnten.
  • Das Thema Adblocker wird kontrovers diskutiert: Zum einen kann Werbung im Internet wirklich nervig sein, besonders wenn man Webseiten besucht und sofort von Werbung überhäuft wird. Dann macht die Suche nach Informationen und das Surfen im Allgemeinen wenig Spaß.
    Auf der anderen Seite muss man bedenken, dass sich viele Webseiten durch Werbung finanzieren. Gerade für viele kleinere Websites und Blogs sind die Einnahmen durch Werbebanner die einzige „Finanzspritze“, damit die Kosten für das Hosting (zumindest teilweise) gedeckt sind. Wenn hier die Einnahmen ausbleiben, darf man sich nicht wundern, wenn private Websites/Blogs irgendwann aus dem Netz verschwinden.
    Ich will hier gar nicht den Moral-Apostel spielen, aber dies sollte man immer im Hinterkopf behalten, wenn man sich mit einem aktiven Adblocker durch das Internet bewegt. Wenn eine Webseite hilfreich und informativ ist, dann gibt es in den meisten Fällen auch die Möglichkeit, den Betreiber direkt zu unterstützen (z.B. durch eine kleine Spende oder auch durch das Einkaufen über Affiliate-Links).

Voraussetzungen

Auch wenn man Pi-hole problemlos auf einem Raspberry Pi betreiben kann, möchte ich in diesem Artikel die Installation des Adblockers auf einem Ubuntu Server zeigen. Zum einen habe ich mit Ubuntu (Server) durch meine Blog-Artikel schon einiges an Erfahrung sammeln können, zum anderen lässt sich Ubuntu recht einfach über Hyper-V virtualisieren, d.h. man kann den Adblocker ohne viel Aufwand auf einer virtuellen Maschine betreiben.

Als Grundlage für die Installation des Betriebssystems dient wie schon so oft der Artikel Ubuntu Server 18.04 LTS als Hyper-V Gastsystem installieren und optimal einrichten. Meine Empfehlung dabei ist, Pi-hole auf einer extra VM zu installieren, auf der ansonsten nichts weiter läuft. In diesem Fall kann man die virtuelle Maschine auch recht klein bemessen: Pi-hole braucht nicht viele Hardware-Ressourcen. Auch die virtuelle Festplatte muss nicht viel Speicherplatz bieten: 10 GB reichen hier für Betriebssystem und Pi-hole aus.

Es ist wichtig, dass auf der Maschine kein zusätzlicher Webserver läuft, da im Rahmen der Installation von Pi-hole ein eigener Webserver installiert wird (lighttpd), der ansonsten mit einem bereits eingerichteten Webserver kollidieren könnte.

Wichtig dabei ist nur, dass die Pi-hole-VM eine statische IP im Netzwerk hat. Am besten nimmt man die entsprechende Konfiguration gleich im Rahmen des Installations-Prozesses des Betriebssystems vor.

Funktionsweise Pi-hole

Bevor es in den praktischen Teil geht, soll kurz die Funktionsweise des Werbeblockers erklärt werden.

Alles beginnt mit einem der wichtigsten Dienste im Internet: Dem Domain Name System (DNS). Dieses funktioniert ähnlich wie eine Telefonauskunft. Wenn man z.B. in einem Browser eine Website aufrufen möchte, dann wird eine DNS-Abfrage gestartet, da für die URL (z.B. decatec.de) zuerst die tatsächliche IP-Adresse ermittelt werden muss (in diesem Beispiel 85.13.128.144). Erst über diese IP-Adresse ist die Website erreichbar und der Request kann ausgeführt werden.

Pi-hole arbeitet nun als DNS-Proxy, der sich zwischen den Geräten im Netzwerk und dem eigentlichen DNS-Server sitzt. Möchte ein Nutzer im Netzwerk eine Website aufrufen, wird dieser DNS-Request von Pi-hole einfach an den eigentlichen DNS-Server durchgeschleift und die Client-Anwendung bekommt die passende IP-Adresse geliefert.

Sind auf dieser Website dann allerdings Werbebanner zu finden, werden weitere DNS-Abfragen gestartet, da die Werbebanner ja nicht auf dem Webspace der Internet-Seite gehostet werden, sondern über ein Content-Delivery-System verteilt werden. Wenn sich nun die URL eines Werbebanners auf einer schwarzen Liste vom Pi-hole befindet, blockiert der Adblocker die Anfrage, indem er den eigentliche DNS-Server gar nicht befragt, sondern einfach nur seine eigene IP-Adresse zurück liefert. Da unter dieser IP-Adresse nichts gefunden werden kann, wird in der Client-Anwendung das entsprechende Werbebanner gar nicht angezeigt.

Zwei DNS-Abfragen mit Pi-hole: Die obere Abfrage wird an den DNS-Server weitergeleitet, die untere Abfrage beantwortet Pi-hole mit seiner eigenen LAN-IP und leitet diese nicht an den DNS-Server weiter
Zwei DNS-Abfragen mit Pi-hole: Die obere Abfrage wird an den DNS-Server weitergeleitet, die untere Abfrage beantwortet Pi-hole mit seiner eigenen LAN-IP und leitet diese nicht an den DNS-Server weiter

Als Nebeneffekt spart man sich dadurch auch etwas Bandbreite, da der Web-Request für das Werbebanner das lokale Netzwerk niemals verlässt.

Installation und Konfiguration Pi-hole

Die Installation von Pi-hole wird durch ein einfaches Skript erledigt. Anschließend muss die Netzwerk-Umgebung so konfiguriert werden, dass das Pi-hole als DNS-Proxy verwendet wird.

Vorbereitungen

Bevor das Installations-Skript ausgeführt werden kann, muss sichergestellt sein, dass das Ubuntu Universe-Repository in den Paketquellen eingerichtet ist. Gerade nach einer frischen Installation von Ubuntu Server 18.04.1 ist dies nicht der Fall, daher muss das Repository mit folgendem Befehl hinzugefügt werden:

sudo add-apt-repository universe

Installation Pi-hole

Die Installation erfolgt dann über den Aufruf eines Skripts:

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

Hinweis: Das Abrufen eines Skripts und dir direkte Ausführung mittels bash ist durchaus problematisch – hier hat man keine Kontrolle darüber, was genau passiert (siehe hier). Besser ist es in diesem Fall das Install-Skript erst einmal herunter zu laden:

wget -O basic-install.sh https://install.pi-hole.net

Nach der Inspizierung des Skript, kann dieses zur Installation von Pi-hole verwendet werden:

sudo bash basic-install.sh

Nach der Überprüfung aller Abhängigkeiten wird das Setup von Pi-hole gestartet. Das System wird durch mehrere Installationsschritte konfiguriert.

Nach den einleitenden Worten wird darauf hingewiesen, dass das System eine statische IP-Adresse haben muss. Im Idealfall hat man dies gleich während der Installation des Betriebssystems so eingerichtet. Andernfalls wird der Setup-Assistent dazu auffordern, die Netzwerk-Konfiguration entsprechend anzupassen.

Pi-hole Setup: Hinweis auf statische IP-Adresse
Pi-hole Setup: Hinweis auf statische IP-Adresse

Anschließend wählt man den sog. Upstream DNS-Provider. Dies ist der DNS-Server, den Pi-hole befragen soll, wenn eine DNS-Abfrage nicht blockiert werden soll. Ich empfehle hier den DNS-Server von Cloudflare, besser bekannt als 1.1.1.1. Dies ist ein schneller DNS-Server, der nach eigenen Angaben Wert auf Privatsphäre legt (dennoch werden wir später einen anderen DNS-Server verwenden – doch dazu später mehr).
Man kann den verwendeten Upstream-DNS-Server allerdings auch nachträglich in der Weboberfläche von Pi-hole jederzeit ändern.

Pi-hole Setup: Auswahl des Upstream-DNS-Servers
Pi-hole Setup: Auswahl des Upstream-DNS-Servers

Als nächstes werden die Block-Listen konfiguriert. Hier wird bereits ein Standard-Set an Block-Listen vorgeschlagen, die man alle aktiviert lassen sollte.
Auch hier können die Block-Listen nach dem Setup jederzeit in der Weboberfläche geändert werden.

Pi-hole Setup: Auswahl der Block-Listen
Pi-hole Setup: Auswahl der Block-Listen

Im nächsten Schritt wird festgelegt, ob Pi-hole sowohl IPv4, als auch IPv6-Verbindungen überwachen soll. Hier sollten beide Optionen aktiviert sein.

Pi-hole Setup: Auswahl Protokolle (IPv4/IPv6)
Pi-hole Setup: Auswahl Protokolle (IPv4/IPv6)

Es folgen ein paar informative Schritte im Assistenten, bis gefragt wird, ob man die Web-Oberfläche von Pi-hole installieren möchte. Dies sollte man auf jeden Fall aktivieren, da man ansonsten alle Einstellungen nur umständlich über die Kommandozeile ändern kann.

Pi-hole Setup: Die Web-Oberfläche sollte mit installiert werden
Pi-hole Setup: Die Web-Oberfläche sollte mit installiert werden

Da Pi-hole für die Web-Oberfläche einen Webserver benötigt, sollte dieser im folgenden Schritt ebenfalls mit installiert werden.

Pi-hole Setup: Der Webserver sollte ebenfalls installiert werden
Pi-hole Setup: Der Webserver sollte ebenfalls installiert werden

Im letzten Schritt wird man gefragt, ob man die Queries loggen möchte. Auch diese Option sollte aktiviert sein, da man sich ansonsten schwertut, fehlerhaft geblockte Inhalte zu identifizieren.

Pi-hole Setup: Auch die Queries sollten geloggt werden
Pi-hole Setup: Auch die Queries sollten geloggt werden

Nun startet der eigentliche Installations-Prozess.

Im Anschluss wird nochmals eine Zusammenfassung und das initiale Passwort für die Admin-Oberfläche angezeigt.

Pi-hole Setup: Installation abgeschlossen
Pi-hole Setup: Installation abgeschlossen

Wieder zurück in der Kommandozeile sollte man dieses Passwort am besten sofort ändern. Dies geschieht über folgenden Befehl:

pihole -a -p

Dann noch zwei Mal das gewünschte Passwort eingeben und das Setup ist endgültig abgeschlossen.

Nun kann die Weboberfläche über die URL http://192.168.178.64/admin/ erreichen (wenn die IP-Adresse der Maschine 192.168.178.64 ist). Im Menü kann man sich über Login mit dem soeben angelegten Passwort anmelden, damit man Zugriff auf sämtliche Optionen von Pi-hole erhält.

Pi-hole: Admin-Oberfläche
Pi-hole: Admin-Oberfläche

Pi-hole Einstellungen

Nun sollten als erstes die Einstellungen vom Pi-hole überprüft und ggf. angepasst werden. Dazu einfach (nach dem Login) in linken Menü auf Settings klicken. Über das obere Menü können nun verschiedene Optionen eingeblendet werden:

  • System: Dies ist eine einfache Übersicht des Systems. Von Interesse sind hier erst einmal nur die IP-Adressen (IPv4 und IPv6), über die Pi-hole erreichbar ist. Diese werden später noch für die Netzwerk-Konfiguration benötigt, daher sollten die Adressen am besten gleich notiert werden.
  • Blocklists: Die Übersicht der Block-Listen, die Pi-hole momentan verwendet (im Jargon von Pi-hole „Gravity“ genannt). Das Standard-Set an Block-Listen wurde bereits während der Installation angelegt. An dieser Stelle können Block-Listen hinzugefügt oder entfernt werden.
  • DNS: Hier sind alle Einstellungen bzgl. DNS zu finden. Zunächst einmal sind dies die DNS-Server, die Pi-hole als Upsteam-DNS verwendet. Wir haben im Rahmen des Setups die Cloudflare-DNS-Server angegeben, daher sind hier die entsprechenden Optionen angehakt sein (sowohl für IPV4, als auch IPv6).Wer hier Wert auf Privatsphäre legt, der sollte hier einen anderen DNS-Server angeben. Ein guter DNS-Server, der nicht zensiert und auch nicht loggt, ist z.B. der DNS-Server von Digitalcourage. Hierzu ist es notwendig, einen Custom-DNS-Server anzugeben:

    Custom 1 (PVv4): 46.182.19.48
    Custom 3 (IPv6): 2a02:2970:1002::18

    Damit ausschließlich der DNS-Server von Digitalcourage verwendet wird, müssen die Optionen zum Verwenden der Cloudflare-DNS-Server deaktiviert werden.

    Pi-hole Einstellungen: DNS (mit Digitalcourage DNS-Server)
    Pi-hole Einstellungen: DNS (mit Digitalcourage DNS-Server)

    Eine Übersicht über weitere DNS-Server, die Wert auf Privatsphäre legen findet man z.B. hier.

    Etwas weiter unten findet man die Option für DNSSEC, welche nach der Installation zunächst einmal deaktiviert ist. Dabei handelt es sich um die Domain Name System Security Extensions. Vereinfacht ausgedrückt kann man damit die Validierung der über DNS erhaltenen Daten einschalten. Unterstützt der verwendete DNS-Dienst DNSSEC (was bei Cloudflare der Fall ist), sollte diese Option gleich aktiviert werden.

Alle anderen Optionen können auf Standard-Werten belassen werden.

Netzwerk-Konfiguration

Pi-hole ist nun einsatzbereit, wird jedoch noch nicht genutzt. Um dies zu ändern, muss jeder Client im Netzwerk die IP-Adresse von Pi-hole als DNS-Server verwenden. Hier gibt es prinzipiell zwei Ansätze. Welche Variante die passende ist, hängt vom jeweiligen Einsatzzweck und Anforderungen ab.

Variante 1: Pi-hole als DNS-Server am Router

Wenn man nicht auf jedem Client einzeln einen den DNS-Server angeben möchte, dann sollte man den Pi-hole einmal zentral als DNS-Server festlegen. Dies passiert in der Weboberfläche des Routers.

Ich empfehle diese Vorgehensweise, da man ohne viel Aufwand zum gewünschten Ergebnis kommt und die Konfiguration für 99% der privaten Netzwerke passen sollte.

Pi-hole als DNS-Server am Router
Pi-hole als DNS-Server am Router

Leider unterscheidet sich die Vorgehensweise von Router zu Router. An dieser Stelle wird das Vorgehen exemplarisch an einer FritzBox gezeigt.

Die DNS-Einstellungen befinden sich hier unter Internet > Zugangsdaten > DNS-Server. Hier sind die IP-Adressen (jeweils IPv4 und IPv6) von Pi-hole einzutragen.

DNS-Einstellungen der FritzBox
DNS-Einstellungen der FritzBox

Wichtig: Wie im Screenshot zu erkennen, werden für den bevorzugten und alternativen DNS-Server jeweils die gleichen IP-Adressen angegeben. Hier sollten nur die Adressen des Pi-hole und keine anderen DNS-Server (wie z.B. 1.1.1.1) angegeben werden. Hintergrund ist, dass die FritzBox wahlweise mal den bevorzugten und den alternativen DNS-Server nutzt. Wenn hier nun noch ein zweiter DNS-Server eingetragen werden würde, hätte dies zur Folge, dass Werbung manchmal blockiert werden würde und manchmal jedoch nicht.

Wenn die Einstellungen übernommen wurden, nutzt die FritzBox Pi-hole als einzigen DNS-Server. Alle Clients (PCs, Tablets, Smartphones, etc.) die nun ihrerseits die FritzBox als DNS-Server verwenden sind dann automatisch und ohne weiteres Zutun durch Pi-hole „geschützt“.

Vorteile Variante 1:

  • Es sind keine Anpassungen auf den Clients notwendig, die den Router als DNS-Server verwenden.
  • Daher kann ein Client auch nicht falsch konfiguriert werden und kann die DNS-Abfrage über Pi-hole nicht „umgehen“.
  • Gilt sowohl für DHCP-Clients, als auch Geräte mit statischer IP (siehe Variante 2).

Nachteile Variante 1:

  • Um eine DNS-Abfrage durchzuführen wird hier ein zusätzlicher „Hop“ benötigt (Client -> Router -> Pi-hole -> Upstream-DNS-Server). Dies kostet etwas mehr Zeit pro DNS-Abfrage, allerdings sollte dies in der Praxis nicht spürbar sein.
  • Im Normalfall nutzen alle Clients den Router als DNS-Server (und damit nun auch Pi-hole). Soll ein Client nicht durch Pi-hole geschützt werden, so müssen die DNS-Einstellungen dieses Clients manuell angepasst werden.

Variante 2: Pi-Hole als DNS-Server im Router (DHCP)

Die meisten Heimnetzwerke sind so konfiguriert, dass alle Clients eine IP über DHCP vom Router zugewiesen bekommen. Da über DHCP auch der zu verwendende DNS-Server mitgegeben wird, kann man sich dies bei Variante 2 zu Nutze machen.

Pi-hole als DNS-Server am Router (per DHCP)
Pi-hole als DNS-Server am Router (per DHCP)

Hier wird nicht der DNS-Server für den ganzen Router geändert, sondern nur die DHCP-Einstellungen angepasst. Exemplarisch findet man bei einer FritzBox diese Einstellungen unter Heimnetz > Netzwerk > Netzwerkeinstellungen > IP-Adressen > IPv4-Adressen/IPv6-Adressen.

Unter Lokaler DNS-Server ist hier die IP der Maschine mit Pi-hole anzugeben.

DHCP-Einstellungen der FritzBox (IPv4)
DHCP-Einstellungen der FritzBox (IPv4)

Neben den DHCP-Einstellungen für IPv4 müssen dann ebenso die Einstellungen für IPv6 angepasst werden.

Wichtig: Dieses Vorgehen ist sehr praktisch, wenn alle Client im Netzwerk ihre IP per DHCP zugewiesen bekommen. Wenn Client allerdings eine statische IP haben, ist diese meist manuell konfiguriert. Hier ist dann kein DHCP im Spiel und somit müssen alle Clients mit statischer IP auf den neuen DNS-Server „umgehoben“ werden.

Vorteile Variante 2:

  • Es sind keine Anpassungen auf den Clients notwendig, wenn diese ihre IP über DHCP zugewiesen bekommen.
  • DHCP-Clients können Pi-hole nicht umgehen.
  • Man spart sich einen „Hop“ bei einer DNS-Abfrage (DHCP-Client -> Pi-hole -> Upstream-DNS-Server).

Nachteile Variante 2:

  • Clients mit statischer IP (ohne DHCP) müssen manuell konfiguriert werden, so dass Pi-hole als DNS-Server genutzt wird. Wird dies an einem Client vergessen, wird hier weiterhin Werbung angezeigt werden.
  • Wenn viele Clients mit statischer IP im Netzwerk vorhanden sind, ist Variante 2 u.U. sehr aufwendig, da wieder jeder Client einzeln konfiguriert werden muss.

Variante 3: Pi-hole als DNS-Server auf den Clients

Als Alternative kann können aber auch sämtliche Clients so konfiguriert werden, dass diese Pi-hole als DNS-Server verwenden (und nicht mehr den Router). In diesem Fall müssen alle Geräte, die von Werbung befreit werden sollen, einzeln konfiguriert werden.

Pi-hole als DNS-Server auf den Clients
Pi-hole als DNS-Server auf den Clients

Auch hier ist es schwierig eine detaillierte Anleitung zu liefern, da sich die Vorgehensweise von Gerät zu Gerät unterscheidet. Hier soll daher nur die Vorgehensweise unter Windows 10 exemplarisch demonstriert werden.

Dazu muss in den Netzwerk-Einstellungen von Windows ein eigener DNS-Server angegeben werden. Dazu einfach in der Windows-Suche nach „Netzwerk“ suchen und Netzwerk- und Freigabecenter wählen. Hier werden dann alle verfügbaren Netzwerk-Schnittstellen aufgelistet. Durch einen Klick auf die jeweilige Verbindung wird der Status der Verbindung gezeigt. Hier wählt man nun Eigenschaften und geht durch einen Doppelklick in die Einstellungen von Internetprotokoll, Version 4 (TCP/IPv4). In diesem Dialog kann dann ein eigener DNS-Server angegeben werden.

DNS-Einstellungen unter Windows 10 (IPv4)
DNS-Einstellungen unter Windows 10 (IPv4)

Wichtig: Auch hier sollte ausschließlich die IP-Adresse der Pi-hole Maschine sowohl als bevorzugter, als auch alternativer DNS-Server angegeben werden.

Vorteile Variante 3:

  • Hier können Clients selektiv konfiguriert werden. Soll auf einem Client keine Werbung blockiert werden, kann dieser so konfiguriert werden, dass dieser weiterhin den Router als DNS-Server verwendet und daher von der Filterung durch Pi-hole nicht betroffen ist.
  • Man spart sich einen „Hop“ bei einer DNS-Abfrage (Client -> Pi-hole -> Upstream-DNS-Server).

Nachteile Variante 2:

  • Man muss jeden Client einzeln so konfigurieren, so dass Pi-hole als DNS-Server verwendet wird. Vergisst man dies bei einem Client, wird dieser weiterhin Werbung angezeigt bekommen.
  • Da der zu verwendende DNS-Server auf jedem Betriebssystem/Gerät anders eingerichtet wird, ist diese Variante gerade bei großen Netzwerken sehr aufwändig.

Test der Funktionalität

Nachdem nun alle Clients Pi-hole als DNS-Server verwenden, wird es Zeit für einen ersten Test. Dazu einfach eine Website aufrufen, die normalerweise Werbung anzeigt. Wenn alles geklappt hat, dann sollte diese Werbung nun wie von Geisterhand verschwunden sein.

Darüber hinaus gibt es auf der Website von Pi-hole eine spezielle Testseite, mit der man die Funktion von Pi-hole testen kann.

Das Tolle ist nun, dass man nicht nur am PC/Browser nicht mehr von Werbung bombardiert wird, sondern dass alle netzwerkfähigen Geräte davon profitieren, egal ob Smartphones, Tablets oder gar Smart-TVs.

Pi-hole in Aktion auf dem Smartphone (hier am Beispiel der Google News App)
Pi-hole in Aktion auf dem Smartphone (hier am Beispiel der Google News App)

DNS over TLS mit Stubby

Viele Webseiten nutzen Verschlüsselung über HTTPS. Hier können die Website-Inhalte also nicht von einem Angreifer, der sich zwischen den Webserver und einen Client „einhängt“ (Man-in-the-Middle) mitgelesen werden. DNS-Abfragen werden in der Regel unverschlüsselt über UDP übertragen. D.h. der Kommunikationsweg zwischen Client und DNS-Server ist mehr oder weniger ungeschützt. Auch wenn ein Angreifer nicht an die (dank HTTPS verschlüsselten) Inhalte herankommt, so kann er jedoch die DNS-Abfragen eines Clients mitlesen und ggf. auch manipulieren.

Um diese Lücke zu schließen, wurde das Protokoll DNS over TLS (DoT) entwickelt. Dabei werden sämtliche DNS-Abfragen über TLS verschlüsselt. Mit dem zusätzlichen Programm Stubby kann man mit Pi-hole ebenfalls DNS over TLS nutzen, so dass sämtliche DNS-Abfragen nicht mehr unverschlüsselt über die Leitung gehen.

Pi-hole als DNS-Server am Router mit Stubby
Pi-hole als DNS-Server am Router mit Stubby

Wie man auf dem Bild erkennen kann, ist hier ein zusärtlicher „Hop“ erforderlich (Client -> Router -> Pi-hole -> Stubby -> Upstream-DNS-Server). Ebenso gibt es einen gewissen Overhead durch das verwendete Protokoll für DNS over TLS. Daher dauern bei dieser Variante DNS-Abfragen nochmals ein bisschen länger. Die Praxis zeigt allerdings, dass man auch hier im Alltag keinen Unterschied feststellen wird.

Voraussetzungen

Um dies umzusetzen sind zwei Voraussetzungen zu erfüllen:

  • Pi-hole ab Version 4.0.0
  • Der Upstream-DNS-Server muss DNS over TLS unterstützen. Bei den hier gezeigten Servern von Cloudflare ist aber auch diese Voraussetzung erfüllt.

Installation Stubby

Das kleine Programm Stubby ist ein DNS-Daemon: Das Tool beantwortet DNS-Anfragen lokal auf dem „traditionellen Weg“ (also unverschlüsselt über UDP), nach außen (zum Upstream-DNS-Server) kommt jedoch DNS over TLS zum Einsatz.

Stubby ist bereits in den Paketquellen von Ubuntu enthalten und kann durch folgenden Befehl installiert werden:

apt-get update && apt-get install stubby

Falls das Paket nicht gefunden werden kann, muss evtl. das Universe-Repository in die Paketquellen von Ubuntu mit aufgenommen werden (siehe Ubuntu Server 18.04 LTS als Hyper-V Gastsystem installieren und optimal einrichten).

Konfiguration Stubby

Nach der Installation von Stubby muss noch die Konfiguration des Tools angepasst werden, damit es mit Pi-hole zusammenarbeiten kann.

Die Konfiguration wird in der folgenden Datei vorgenommen:

nano /etc/stubby/stubby.yml

Hier sollten zwei Änderungen vorgenommen werden:

  • Ändern der verwendeten Ports: Da der DNS-Server von Pi-hole bereits auf Port 53 lauscht, muss Stubby auf einen anderen Port „ausweichen“. Dazu sucht man in der Konfiguration nach listen_addresses und ändert die folgenden Zeilen ab, damit Stubby auf Port 65053 läuft:
    listen_addresses: - 127.0.0.1@65053 - 0::1@65053
  • Upstream-DNS-Server festlegen: Der von Stubby verwendete DNS-Server wird weiter unten in der Datei angegeben. Hier sind bereits mehrere DNS-Server hinterlegt, die Stubby verwenden kann. Diese können jedoch alle auskommentiert werden, da die zu nutzenden DNS-Server selbst festgelegt werden sollen.
    Hier empfehle ich zwei DNS-Server, die nicht zensieren und auch keine Anfragen protokillieren: Zum einen den DNS-Server von Digitalcourage, zum anderen den DNS-Server von dismail.de:Eine Übersicht über weitere DNS-Server, die Wert auf Privatsphäre legen findet man z.B. hier.

    Durch die Angabe vom mehreren Upstream-DNS-Servern nutzt Stubby zur Bearbeitung von DNS-Requests auch mehrere Server (z.T. auch parallel). Dadurch kann auch nochmals die Privatsphäre verbessert werden, da nicht alle DNS-Anfragen an den gleichen Anbieter gehen.

    Alle weiteren DNS-Server, die in der Datei vorhanden sind, sollten auskommentiert werden (einfach eine Raute ‚#‘ vor jede Zeile schreiben).

    # Digitalcourage DNS (IPv4)
    # https://digitalcourage.de/support/zensurfreier-dns-server
    - address_data: 46.182.19.48
      tls_auth_name: "dns2.digitalcourage.de"
      tls_pubkey_pinset:
        - digest: "sha256"
          value: v7rm6OtQQD3x/wbsdHDZjiDg+utMZvnoX3jq3Vi8tGU=
    
    # Digitalcourage DNS (IPv6)
    # https://digitalcourage.de/support/zensurfreier-dns-server
    - address_data: 2a02:2970:1002::18
      tls_auth_name: "dns2.digitalcourage.de"
      tls_pubkey_pinset:
        - digest: "sha256"
          value: v7rm6OtQQD3x/wbsdHDZjiDg+utMZvnoX3jq3Vi8tGU=
    
    # dismail.de (IPv4)
    # https://dismail.de/info.html#dns
    - address_data: 80.241.218.68
      tls_auth_name: "fdns1.dismail.de"
      tls_pubkey_pinset:
        - digest: "sha256"
          value: MMi3E2HZr5A5GL+badqe3tzEPCB00+OmApZqJakbqUU=
    
    # dismail.de (IPv6)
    # https://dismail.de/info.html#dns
    - address_data: 2a02:c205:3001:4558::1
      tls_auth_name: "fdns1.dismail.de"
      tls_pubkey_pinset:
        - digest: "sha256"
          value: MMi3E2HZr5A5GL+badqe3tzEPCB00+OmApZqJakbqUU=

Stubby in Pi-hole als Upstream-DNS-Server einrichten

Der letzte Schritt zum funktionierenden DNS over TLS führt wieder in die Admin-Oberfläche von Pi-hole: Unter Settings > DNS wählt man dazu alle vorkonfigurierten DNS-Server ab. Nun wird Stubby als Custom DNS-Server eingetragen:

  • Custom 1 (IPv4): 127.0.0.1#65053
  • Custom 3 (IPv6): ::1#65053

Der Port wird hier nicht wie üblich durch einen Doppelpunkt, sondern durch eine Raute von der IP getrennt.

Pi-hole Einstellungen: DNS über Stubby
Pi-hole Einstellungen: DNS über Stubby

Nach dem Übernehmen der Einstellungen ist Stubby als Upstream-DNS-Server von Pi-hole eingerichtet und alle DNS-Abfragen werden über DNS over TLS verschlüsselt.

Der Alltag mit Pi-hole

Nach der Installation von Pi-hole sollte euer Netzwerk nun so gut wie werbefrei sein. Meine Erfahrung zeigt, dass man nach der Ersteinrichtung zunächst einmal ein paar Tage abwarten und beobachten sollte, die das System wirkt. Anschließend kann man Pi-hole auf seine eigenen Bedürfnisse anpassen.

Whitelisting

Evtl. wird man feststellen, dass einige Dienste nicht mehr wie gewohnt funktionieren. Hier kann Pi-hole die Ursache sein, indem zu viel geblockt wird. In diesem Fall kann man einige Domains wieder in eine Whitelist aufnehmen, so dass diese in Zukunft nicht mehr geblockt werden.

Dazu muss man zunächst einmal herausfinden, welche Domains fälschlicherweise geblockt werden. Hier kann das Log von Pi-hole helfen, welches man unter Tools Tail pihole.log findet. Wenn man das Log aufruft und anschließend den Dienst startet, der nicht mehr richtig funktioniert, dann wird man in diesem Log Einträge finden, die vom Dienst ausgehen und geblockt werden. Diese Domains kann man dann unter Whitelist eintragen, so dass diese zukünftig nicht mehr geblockt werden.

Da die fälschlicherweise geblockten Domains meist nicht so offensichtlich sind, muss man hier meistens etwas herumprobieren. Wenn eine Domain auf der Whitelist nicht die gewünschte Wirkung erzielt, dann probiert man eben weitere Domains aus, die beim Starten des entsprechenden Dienstes angesprochen werden. Das kann u.U. etwas Zeit in Anspruch nehmen, bis man die richtige(n) Domain(s) ausgemacht hat.

Hinzufügen weiterer Filterlisten

Beim Setup von Pi-hole wurden bereits einige Filterlisten hinzugefügt. Diese sind für den Anfang erst einmal ausreichend. Man kann jedoch jederzeit unter Settings > Blocklists weitere Listen hinzufügen. Welche Listen zum Einsatz kommen, ist natürlich von den eigenen Bedürfnissen abhängig. Hier sollte man es aber nicht übertreiben: Je mehr Block-Listen in Pi-hole geladen werden, desto höher ist auch die Wahrscheinlichkeit, dass bestimmte Dienste nicht mehr wie gewohnt funktionieren.

Bei den Block-Listen kann man generell zwischen zwei Arten unterscheiden: Zum einen gibt es Listen, die eher allgemein Werbung/Tracking blockieren (z.B. EasyList). Zum anderen gibt es auch besondere Listen, die sich auf das Blocken von einzelnen Diensten (z.B. Facebook oder HBB-TV)   spezialisiert haben.

Folgende Seiten sind eine gute Quelle für weitere Block-Listen:

Pi-hole + VPN

Pi-hole wirkt prinzipiell nur, wenn man sich im gleichen Netzwerk wie der Werbeblocker befindet. Sobald man beispielsweise mit dem Smartphone im Mobilfunknetz unterwegs ist, wird man wieder Werbung zu Gesicht bekommen.

Hier besteht jedoch die Möglichkeit, einen VPN-Tunnel ins Heimnetzwerk aufzubauen. Dies ist z.B. mit der App VpnCilla unter Android möglich. Hier befindet man sich dann dank VPN wieder im gleichen Netzwerk wie die Maschine, auf der Pi-hole läuft und als „Nebeneffekt“ wird dann wieder automatisch Werbung blockiert. Somit ist man dann auch im Mobilfunknetz wieder praktisch werbefrei unterwegs.

Der Vorteil, dass man durch Pi-hole etwas Bandbreite spart, ist im Heimnetzwerk eher weniger relevant. Bei den Mobilfunk-Volumen-Tarifen ist dies jedoch ein handfester Vorteil.

Pi-hole Admin-Oberfläche über das Internet erreichen

Pi-hole wurde in diesem Artikel auf einer separaten Maschine eingerichtet, so dass die Admin-Oberfläche nur im lokalen Netzwerk erreichbar ist. Dies sollte in den meisten Fällen ausreichend sein.

Wer jedoch aus dem Internet Zugriff auf die Pi-hole-Oberfläche benötigt, kann dies ebenfalls einrichten. Die genaue Vorgehensweise ist bereits im Artikel Zweite Web-Anwendung neben ownCloud/Nextcloud einrichten (am Beispiel WordPress) beschrieben, daher soll an dieser Stelle nur kurz auf diese Möglichkeit verwiesen werden.

Fazit

Sobald Pi-hole eingerichtet ist, ist man im Heimnetzwerk werbefrei unterwegs. Dies ist zunächst einmal eine Erleichterung, da man nicht mehr von Werbung überflutet wird, zusätzlich spart man auf diese Art und Weise auch etwas Bandbreite. Durch die zentrale Installation im Netzwerk wirkt dies auch ohne weiteres Zutun auf alle Geräte im Heimnetzwerk.

Dennoch muss man sich bewusst sein, dass man durch das Blockieren von Werbung Website-Betreibern schaden kann. Denn gerade kleinere Anbieter sind auf die Einnahmen durch Online-Werbung angewiesen. Hier sollte man sich Gedanken machen, ob man seine Lieblings-Webseiten nicht auf anderem Wege unterstützen oder zumindest eine Ausnahme in Pi-hole für diese Webseiten hinzufügen möchte.

Wie steht ihr zum Thema Adblocker? Habt ihr Pi-hole bereits im Einsatz und könnt weitere Block-Listen empfehlen, oder habt weitere Tipps und Tricks zum Netzwerk-weiten Werbeblocker? Hinterlasst mir dazu doch einfach einen Kommentar.

Weiterführende Artikel

Links

30 Kommentare zu „Nie mehr Werbung – Pi-hole auf Ubuntu Server 18.04“

  1. Hi Jan,

    TOP, vielen Dank.
    Aktuell setze ich nur adblockplus (Firefox) ein. Mit dieser Anleitung werde ich mal Pi-hole zusammen mit NC und WP installieren und testen.

    Gruß Hans

  2. Stubby Funktioniert auch unter Raspbian Strech.

    Dazu öffnen wir mit:
    sudo nano /etc/apt/sources.list

    Dort fügen wir das Raspbian Repository von Buster hinzu:
    deb http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi

    Jetzt Updaten wir noch unsere Repositorys mit:
    sudo apt-get update

    Anschließend Installieren wir Stubby mit:
    sudo apt-get install stubby

    Danach Kommentieren wir in der sources.list die neu angelegte Zeile mit # zur Sicherheit schnell wieder aus. Schließlich wollen wir unser Stabiles System ja nicht abschießen!

    Vielleicht für den ein oder anderen nützlich!

    Gruß
    Murderhead

    1. Hi,

      danke für den Tipp.
      Wenn du das Repository nur wegen Stubby hinzugefügt hast (in der sources.list), dann brauchst du es eigentlich nicht sofort nach der Installation des Programms auskommentieren. Ansonsten würdest du die Updates ja nicht mitbekommen.

      Gruß,
      Jan

  3. Ich favorisiere die Variante 3:
    In der FritzBox unter Heimnetz – Heimnetzübersicht – Netzwerkeinstellung – IPv4-Adressen: den lokalen DNS-Server ändern. Damit wird über DCHP die Adresse von dem PiHole-Server verteilt.

    1. Hi Alex,

      das geht natürlich auch. Danke für den Hinweis, vielleicht nehme ich das ja noch in den Artikel mit auf.
      Hat aber einen entscheidenden Nachteil: Das funktioniert nur für Geräte, die ihre IP über DHCP zugewiesen bekommen. Alle Geräte mit statischer IP (manuelle Konfiguration) laufen dann nicht über Pi-hole.

      Gruß,
      Jan

    1. Hi,

      danke für den Hinweis. Ich nutze YouTube nur wenig, dass hier allerdings hin und wieder Werbung zu sehen ist – trotz Pi-hole – ist mich auch schon aufgefallen.
      Ist sicherlich ein guter Tipp, werde ich demnächst mal ausprobieren.

      Gruß,
      Jan

  4. Hi,
    mein pi-hole läuft auf einem reinen Debian Stretch Server. Dort kann man sich das kompilieren auch sparen.

    Es geht ganz einfach:

    sudo nano /etc/apt/sources.list

    Dort die erste Zeile kopieren und weiter unten wieder einfügen.
    Das stretch zu buster ändern. Strg + O, Strg + X.

    jetzt:

    sudo apt update && sudo apt install stubby

    Zur Sicherheit, um das stabiles System nicht kaputt zu machen, die zuvor hinzugefügte Zeile wieder auskommentieren (#deb… ).

    Gruß
    Hendrik

  5. Hallo,

    ich nutze die aktuelle 19er Mint Version in einer VM zum Testen. Nachdem ich PI Hole installiert habe, ist der DNS aus und ich bekomme keine Internetconnection mehr und ebenso erkennt PI Hole keine Inputs etc. Es zeigt auch an das DNS und FTL nicht laufen. Kann hier wer weiter helfen?

    Danke und Gruß

    1. Hi,

      eigentlich sollte das auch unter Mint funktionieren. Aber wenn DNS und FTL nicht laufen, dann ist bei der Installation irgend etwas schief gegangen. Dann kann alles andere auch nicht funktionieren.
      Hast du alle Schritte soweit beachtet und gab es während der Installation irgendwelche Fehler?
      Was sagen die Logs unter /var/log/pihole.log?
      Ansonsten könntest du auch mal im Pi-hole Forum nachfragen.

      Gruß,
      Jan

  6. Eine Sache, welche noch problematisch ist:
    die Computer Namen im lokalen Netz werden von den Linux Clients nicht mehr erkannt, daher „ping fritz.box“ funktioniert nicht mehr, statt dessen muss mit den IP Adressen gearbeitet werden. Mit Windows Clients funktioniert es, aber auch nur dann, wenn in den Pi-Hole DNS Settings des Pi-Hole das“Conditional Forwarding“ aktiviert ist, und „IP of your router“ sowie „Local domain name“ der fritz box richtig eingetragen sind. Hat jemand eine Idee, warum es mit Linux Clients nicht funktioniert ?

    1. Hi Werner,

      leider kann ich dein Problem nicht nachvollziehen. Wenn ich die Option „Conditional Forwarding“ aktiviert und richtig konfiguriert habe, liefert ping fritz.box auch von einem Linux-Client aus eine Antwort.
      Ich vermute hier fast mal, dass hier etwas anderes in deinem Netzwerk die (lokale) Namensauflösung verhindert.

      Gruß,
      Jan

  7. Hallo Jan,

    auf meinem OdroidC2 ließ sich der Stubby-Service nicht starten ehe ich folgende Zeile bearbeitet habe „AmbientCapabilities=CAP_NET_BIND_SERVICE“
    Dazu bin ich wie folgt vorgegangen:

    vi /etc/systemd/system/multi-user.target.wants/stubby.service

    [Unit]
    Description=DNS Privacy Stub Resolver
    Documentation=https://dnsprivacy.org/wiki/display/DP/DNS+Privacy+Daemon+-+Stubby
    Wants=network-online.target
    After=network-online.target

    [Service]
    WorkingDirectory=/run/stubby
    ExecStart=/usr/bin/stubby
    #AmbientCapabilities=CAP_NET_BIND_SERVICE
    CapabilityBoundingSet=CAP_NET_BIND_SERVICE
    RuntimeDirectory=stubby
    DynamicUser=true

    [Install]
    WantedBy=multi-user.target

    Dann:

    systemctl daemon-reload
    service stubby restart

    Vielleicht hilft es ja jemandem weiter ?! Danke für Deine tolle Arbeit.
    Viele Grüße, Carsten

    1. Hi Carsten,

      ich hatte mit Stubby bisher noch keine Probleme dieser Art. Unter Ubuntu läuft da ganze out-of-the-box und auf einem Raspi muss man sich stubby selbst kompilieren und einrichten. Alles aber kein Hexenwerk.
      Scheint bei dir dann ja ein Odroid-spezifisches Problem zu sein.

      Auf jeden Fall danke für den Hinweis, der ist sicher auch für andere Odroid-Besitzer interessant.

      Gruß,
      Jan

  8. Hallo Jan,
    zunächst erst einmal vielen Dank für die äußerst hilfreiche Beschreibung zur Einrichtung von pi-hole.
    Bei mir läuft das System auf einem ARM-Eva-Board (iMX53QSB). Mit Debian-8 (Jessie) war pi-hole (die genaue Version weiß ich nicht mehr) sofort lauffähig. Da ich aber auch Stubby installieren will, muss OpenSSL in Version 1.0.2 vorliegen. Hierzu ist wiederum Debian-9 (Strech) nötig.
    Das Upgrade auf Strech war problemlos möglich, jedoch war anschließend pihole-FTL (=dnsmasq) nicht mehr aktiv.
    Im pihole-Forum gibt es mehrere Threads bzgl. dieses Themas, die jedoch alle nicht direkt zur Lösung führten. Ein Hinweis war, das der (DNS-) Port 53 durch einen anderen Dienst bereits belegt sei. Per

    sudo ss -tulpn

    habe ich den ‚connman‘-Daemon identifiziert. Dieser regelt in Debian-9 nahezu alle Zugriffe bzgl. Netzwerk. Komplett deaktivieren mit ’systemctl‘ ist nicht möglich, da sonst alle Netzwerkdienste abgekoppelt sind. Die Lösung fand ich unter:

    https://wiki.archlinux.org/index.php/ConnMan#Avoiding_conflicts_with_local_DNS_server

    Dort ist eine ‚connman‘-Konfiguration angegeben, mit der die DNS-Proxy-Funktion von ‚connman‘ deaktiviert werden kann. Damit wird für pihole-FTL der DNS-Port 53 frei. Mit Neustart des Boards war pihole anschließend wieder voll funktionsfähig.

    Kleiner Hinweis zur Konfigurationsdatei:
    Es wird dort unter anderem

    ExecStart=/usr/bin/connmand -n –nodnsproxy

    angegeben. Bei meinem System liegt ‚connmand‘ jedoch unter:

    /usr/sbin/

    Ich hoffe, dass ich hiermit dem ein oder anderen helfen kann, pihole unter Debian-9 einzurichten.

    Und als nächstes kommt dann Stubby dran …..

    beste Grüße Thomas

    1. Hi Thomas,

      danke für deinen Hinweis, der ist vielleicht auch für andere ganz interessant.
      Ich selbst hatte diese Probleme auf dem Raspberry nicht (hier ist momentan Debian/Raspbian 9.6 aktuell).

      Gruß,
      Jan

      1. Hallo Jan,

        nur zur Vollständigkeit:

        Mein iMX53-Board läuft unter Debian Strech 9.7, kein X11, keine grafische Oberfläche. Somit kann sich das OS durchaus vom Raspbian unterscheiden und Dienste anders handhaben.

        beste Grüße
        Thomas

  9. Hallo Jan,

    vielen Dank für diese tolle Anleitung!

    Kannst Du mir noch sagen, wie ich die EasyList-Blocklisten in Pi-Hole einbinden kann? Sie scheinen in ihrer jetzigen Form nicht mit Pi-Hole kompatibel zu sein. Zumindest bekomme ich nach Speichern & Update der Blocklisten eine entsprechende Fehlermeldung.

    MfG
    Martin

  10. Hey, mal eine Frage. Ich würde ja gerne PiHole und NextCloudPi laufen lassen. NCP läuft bei mir über Docker-Compose und blockt damit auch den Port 80. Hab deine Installation mal befolgt und alles ist wohl glattgelaufen, nur logischerweise leitet mich direkt auf meine Cloud weiter. Und lighttpd wird nicht laufen können, da die Ports vergeben sind… welche Möglichkeit hab ich denn da?

    Gerät ist ODROID N2 mit Ubuntu 18.04 drauf.

    1. Hi Sascha,

      ich könnte mir hier vorstellen, dass du vor lighttpd und NCP noch einen nginx als Reverse Proxy stellst. Dieser trennt dann nach Domain/lokaler IP (unterschiedliche vHosts) und leitet dann entweder an Pi Hole oder NCP weiter.
      Weitaus unkomplizierter wäre es jedoch, einen zweiten Pi hinzustellen, auf dem dann exklusiv Pi Hole läuft. Dies wäre meine Empfehlung.

      Gruß,
      Jan

  11. Hallo Jan,
    vielen Dank für den tollen Artikel! Ich habe meie Pi-Hole VM nach ähnlichem Vorbild mit Unbound aufgesetzt.
    Nun spiele ich mit dem Gedanken mein VPN-Gateway von einem Raspberry Pi 3 auch in diese VM umzuziehen. Hast du mit der Kombination PiHole & VPN Gateway (mit OpenVPN Client und entsprechender UFW-Konfiguration) bereits Erfahrung bzw. ist es überhaupt ratsam, diese beiden Funktoinalitäten zu kombinieren?
    Viele Grüße
    Mark

    1. Hi Mark,

      leider habe ich mit OpenVPN noch keine Erfahrungen sammeln können. Erfahrungsgemäß würde ich aber den Pi-hole getrennt von allem anderen (also auf einer eigenen Maschine/VM) laufen lassen. Zur Not für OpenVPN einer separaten VM einrichten. Dann können sich beide Systeme auf keinen Fall ins Gehege kommen.

      Gruß,
      Jan

  12. Echt Geniales Tutorial.
    Es hat mir wirklich gut geholfen, denn ich habe es erst mit Debian 10 probiert bekam jedoch immer wieder PiHole nicht zum laufen.
    Nachdem ich auf (das für mich bessere Betriebssystem) Ubuntu umgestiegen bin läuft alles wie am Schnürchen.

    Ich bin nur mal gespannt was nach einem Neustart passiert bezüglich der IPV6 Sache.

    Es läuft derzeit bei mir in einer Virtuellen Maschine auf einer Diskstation 218+ mit Ubuntu 18.04.

    Perfekt, danke nochmals *thumbs up*

  13. Hallo,
    das ist wiedermal ein super Beitrag und alles ist bestens erklärt. Vielleicht könntest du ja mal einen Beitrag zu pi-hole in Verbindung mit nginx + DoT DNS over TLS & DoH DNS over HTTPS erstellen.

    1. Hallo Jan,

      bisher hatte ich Pi-Hole immer separat installiert, da dieser ja lighttpd mitbringt. Lieder ist es da etwas schwierig, einen anderen Webserver (nginx/Apache) „unterzuschieben“. Ist aber meiner Meinung nach auch nicht wirklich wichtig, da es nur um die Weboberfläche von Pi-Hole geht.

      DoT bekommt man ja über stubby. DoH wäre evtl. eine Erweiterung wert. Jedoch scheint sich hier keine Technologie eindeutig durchsetzen zu können. Da es bei DoH auf jeden Fall (Protokoll-bedingt) zu einem höheren Overhead kommt, bevorzuge ich momentan noch DoT.

      Gruß,
      Jan

  14. Hallo, danke für das Video. Nach dem ich auf Ubuntu 20.04
    installiert habe, habe ich auch den Pihole auf meinem Rechner noch
    mal installiert. Habe über die Fritzbox konfiguriert. Kann natürlich
    nur etwas geblockt werden, wenn der Rechner läuft. Auf den Geräten
    im Netzwerk wird dann auch geblockt, nur auf meinem Rechner nicht.
    Habe in den Netzwerkeinstellungen schon den DNS Server auf Pihole und
    Fritzbox verstellt, beides ohne Erfolg… Wo ist der Hake (zu
    setzen)???
    Viele Grüße
    Axel

    1. Hi Axel,

      was nutzt du für ein Gerät? Schau doch mal auf dem Gerät selbst, welcher DNS-Server genutzt wird (unter Linux z.B. über cat /etc/resolv.conf).

      Gruß,
      Jan

      1. Hallo Jan, danke für die Antwort.
        Ich poste mal die ganze Ausgabe:
        opaggi@opaggi-desktop:~$ cat /etc/resolv.conf
        # Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
        # DO NOT EDIT THIS FILE BY HAND — YOUR CHANGES WILL BE OVERWRITTEN
        # 127.0.0.53 is the systemd-resolved stub resolver.
        # run „systemd-resolve –status“ to see details about the actual nameservers.

        nameserver 8.8.8.8
        nameserver 8.8.4.4
        nameserver fd00:5b1c:22c1:b59e:8a9f::

        die ersten beiden namenserver sind von google, die untere Adresse ist der pihole…

        1. Hi Axel,

          alles, was über IPv4 geht, wird über die Google DNS-Server aufgelöst, nur IPV6 wird über den Pi-hole aufgelöst.
          Für IPV4 sollte ebenfalls der Pi-hole verwendet werden. Das würde ich dann aber über die UI des Betriebssystems einstellen.

          Gruß,
          Jan

Kommentar verfassen

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