Pi-hole als Docker Container auf der Synology DiskStation einrichten

Wer hasst sie nicht, lästige Werbung auf jeder Seite. Teilweise so penetrant, dass das Lesefluss gestört wird. Mittlerweile findet sich auch in jeder App oftmals mehr Werbung als eigentliche App-Inhalt. Während man im ersten Fall noch Werbeblocker im Browser installieren kann, oder gleich einen Browser mit integrierten Filtern verwendet, wie etwa Brave. Hilft das bei In-App-Werbung nicht weiter. Wie gut, dass es Pi-hole gibt, ein lokaler DNS, der Werbung blockiert und zwar noch bevor sie heruntergeladen wird. Lediglich ein geringer Prozentsatz an Werbung kann nicht gefiltert werden, und zwar jene, die der Seiten- bzw. App-Betreiber selber hostet (etwa Werbung auf Youtube).

Installation

Für Docker auf der DiskStation benötigt ihr das Paket Container Manager, zu finden im Paket Zentrum jener DiskStations die Docker auch unterstützen. Auf DSM Versionen < 7.2 heißt das Paket noch Docker.

Um die Konfiguration und Statistiken von Pi-hole abzuspeichern, benötigen wir noch zwei Ordner. Erstellt im Freigegebenen Ordenr /docker den Ordner “pihole” und darin die beiden Ordner “pihole” und “dnsmasq.d”.

Wechselt in den Bereich Registry und sucht nach “pihole”. Ladet das Image herunter und wechselt in den Bereich Image. Sobald der Download abgeschlossen ist, könnt ihr die Einrichtung des Containers durch einen Doppelklick auf das Image starten.

Aktiviert die Option “Automatischen Neustart aktivieren” und klickt auf Weiter.

Erstellen eines neuen Containers
Erstellen eines neuen Containers

Die Ports könnt ihr so belassen, fügt die beiden, zuvor angelegten Ordner hinzu und mappt sie auf /etc/dnsmasq.d/ und /etc/pihole/.

Ordner mounten um die Daten von Pi-hole  auch bei einem Image-Update zu behalten
Ordner mounten um die Daten von Pi-hole auch bei einem Image-Update zu behalten

Jetzt geht es an die Umgebungsvariablen. Ändert DNSMASQ_USER auf root. Pi-hole erfordert einen User mit root-Berechtigung. Fügt dann folgende Variablen hinzu:

VariableWertBeispiel
TZgewünschte ZeitzoneEurope/Vienna
FTLCONF_webserver_api_passwordPasswort für das Webinterface
FTLCONF_dns_listeningMode“all” sollte nur dann erforderlich sein, wenn der Container im Bridge-Netzwerk läuftall
FTLCONF_webserver_portPort, unter dem das Webinterface erreichbar sein soll8080
Umgebungsvariablen zur Grundkonfiguration von Pi-hole
Umgebungsvariablen zur Grundkonfiguration von Pi-hole

Als nächstes klickt ihr unter “Funktionen” auf Funktionen konfigurieren und aktiviert zusätzlich NET_ADMIN, SYS_NICE und SYS_TIME, den Rest belasst ihr. Als Netzwerk wählt ihr Host aus, damit der Container im selben Netzwerk wie eure DS läuft, das macht es einfacher Pi-hole zu nutzen. Es sollte auch möglich sein den Container in einem Bridge-Netzwerk laufen zu lassen, dafür sind aber weitere Einstellungen notwendig die in dieser Anleitung nicht abgedeckt sind. Klickt anschließend auf Weiter und Fertig. Der Container sollte jetzt starten. Mögliche Fehlerquellen sind: Vergessen den Benutzer auf “root” zu ändern oder einen Port zu wählen, der bereits von der DS belegt wird.

Zusätzlich Funktionen aktivieren
Zusätzlich Funktionen aktivieren

Ihr könnt jetzt das Pi-hole-Webinterface öffnen. Ihr erreicht es unter der Domain/IP unter der Ihr auch eure DiskStation erreicht, gefolgt vom gewählten Port und /admin/login, Beisple: ds.meinedomain.com:8080/admin/login

Login zum Pi-hole-Webinterface
Login zum Pi-hole-Webinterface

Gebt das gewählte Passwort ein und ihr solltet das, noch leere, Dashboard sehen.

Das Pi-hole-Dashboard vor der ersten Nutzung
Das Pi-hole-Dashboard vor der ersten Nutzung

Lokale Namensauflösung / lokaler DNS

Bevor ihr euren Router so konfigurieren könnt, das alle Clients den Pi-hole als DNS-Server verwenden können, müsst ihr euch über die lokale Namensauflösung Gedanken machen. Nutzt ihr für eure DiskStation und/oder Dienste im lokalen Netz eine lokale Domain oder habt ihr die Namensauflösung für eine echte Domain im LAN konfiguriert, müsst ihr das dem Pi-hole mitteilen, ansonsten können hinterher die Domains lokal nicht mehr aufgelöst werden.

Die Auflösung einer Domain auf eine lokale IP-Adresse wird von vielen Consumer-Routern verhindert bzw. muss diese eigens aktiviert werden. FRITZ!Boxen haben die entsprechende Option in den DNS-Einstellungen (die bei mir immer wieder mal nicht funktioniert haben). Bei Routern die das nicht können, bzw. generell sorgloser geht es über einen eigenen DNS-Dienst (DNS-Server Paket auf der DS oder dem Synology Router) der die lokalen Domains auflöst. Habt ihr noch keinen DNS-Server konfiguriert, könnt ihr auch Pi-hole zur lokalen Auflösung verwenden.

Habt ihr bereits einen DNS-Server in euren LAN laufen, müsst ihr euch entscheiden wie ihr die DNS-Services schalten wollt.

Option A: Die Pi-hole wird als erster DNS verwendet und
A1: frägt für die lokale Auflösung bei eurem lokalen DNS nach oder
A2: leitet generell alle Anfragen die er nicht beantworten kann an den lokalen DNS weiter.

Option B: Alle Clients verwenden primär euren lokalen DNS, dieser übernimmt die Auflösung für eure lokalen Domains und alle anderen Anfragen leitet er an den Pi-hole weiter.

Wichtig ist, die Arbeitsweise des Pi-hole zu verstehen, er nimmt anfragen entgegen und blockiert alle Anfragen die an Domains gehen, die Werbung ausliefern, alle anderen Anfragen leitet er an einen öffentlichen DNS im Internet weiter, das was sonst euer Router macht. Eine richtige oder falsche Option gibt’s nicht, logisch gesehen macht Option B mehr Sinn, denn euer DNS übernimmt zuerst die Auflösung lokaler Domains (die ja sowieso keine Werbung enthalten) und alles weitere schickt er an den Pi-hole. Das würde auch die geringste Änderung im Netzwerk bedeuten. ALLERDINGS kommen dann alle Anfragen an den Pi-hole von eurem lokalen DNS. Ihr könnt in den Statistiken dann nicht mehr nach lokalen Clients unterscheiden. Ist euch das wichtig, ist Option A die bessere Wahl. Geht es nur um die lokale Auflösung wählt Option A1, habt ihr auf eurem lokalen DNS komplexere bzw. umfangreichere Einstellungen, macht Option A2 Sinn.

Nachfolgend erkläre ich euch alle 3 Optionen. Ich selbst habe Option A1 in Verwendung.
WICHTIG: Konfiguriert nur eine Option.

Lokale Namensauflösung via Conditional forwarding (aka Option A1)

Geht dazu im Webinterface von Pi-hole auf Settings > DNS und aktiviert dort den Expert-Mode indem ihr auf Basic klickt. Scrollt runter bis zum Abschnitt “Conditinal forwarding” dort müsst ihr jetzt das Netz, den DNS/Router der für die lokale Auflösung zuständig ist und die gewünschte(n) Domain(s) eintragen. Verwendet dazu eine Zeile pro Domain und folgendes Format <enabled>,<ip-address>[/<prefix-len>],<server>[#<port>][,<domain>] ein Beispiel dazu: true,192.168.1.0/24,192.168.1.1,meinedomain.com

Conditional forwarding für die lokale Auflösung
Conditional forwarding für die lokale Auflösung

Klickt dann auf Save & Apply.

Vollständige Weiterleitung an den lokalen DNS (aka Option A2)

Geht dazu im Webinterface von Pi-hole auf Settings > DNS und aktiviert dort den Expert-Mode indem ihr auf Basic klickt. Im Abschnitt “Upstream DNS Servers” entfernt ihr alle Häkchen in der Tabelle und klappt “Custom DNS servers” auf. Tragt dort die IP eures DNS-Servers ein.

Auswahl verschiedener öffentlicher DNS-Server
Auswahl verschiedener öffentlicher DNS-Server
Bestehender, lokaler DNS als Upstream Server
Bestehender, lokaler DNS als Upstream Server

Klickt dann auf Save & Apply.

Pi-hole nach dem lokalen DNS betreiben (aka Option B)

Option B erfordert vorerst keine Änderungen.

Weiter geht’s damit den Clients den Pi-hole als DNS-Server zu übermitteln.

LAN-Setup

Pi-hole ist bereits Vorkonfiguriert und ist bereit Anfragen entgegen zu nehmen. Dazu müssen die Clients im LAN Pi-hole als DNS-Server eingetragen bekommen. Das passiert normalerweise per DHCP, der am Router läuft, es sei denn, ihr habt jeden Client manuell konfiguriert oder den DHCP anderswo laufen.

DHCP-Setup für Optionen A

Geht in die DHCP-Einstellungen eures Routers und tragt dort die IP-Adresse eurer DiskStation als primären und sekundären DNS ein. Warum für beide? Es gibt Geräte wie etwa Android(TV)-Geräte (z.B. Fire TV, Nvidia Shield TV) die den Google-DNS hardcoded eingetragen haben (andere Geräte können auch Herstellerspezifische DNS-Einträge haben). Das heißt, bekommen diese Geräte keinen zweiten DNS eingetragen, verwenden sie automatisch den Hersteller-DNS und umgehen somit Pi-hole (Pi-hole blockiert, also wird die Anfrage an den Hersteller-DNS weitergeleitet).

DNS-Server in den DHCP-Einstellungen des Routers festlegen
DNS-Server in den DHCP-Einstellungen des Routers festlegen

Nur bei Option A1: In eurem lokalen DNS-Server könnt ihr jetzt den Upstream-DNS-Server entfernen/deaktivieren. Im Synology DNS-Server deaktiviert ihr dazu im Beriech Auflösung den Auflösungsdienst.

Die Weiterleitung übernimmt Pi-hole, nicht mehr der lokale DNS
Die Weiterleitung übernimmt Pi-hole, nicht mehr der lokale DNS

Nachdem ihr die Einstellungen übernommen habt, kann es etwas dauern, bis alle Geräte davon mitbekommen haben. Bei einigen (mobil) Geräten reicht ein Neustart, unter Windows könnt ihr in der Kommandozeile mit ipconfig /renew die neuen Einstellungen vom Router sofort beziehen und mit ipconfig /flushdns den Lookup-Cache leeren. Für Unix gibt es ähnliche Befehle.

Setup für Option B

Wenn ihr Pi-hole hinter eurem lokalen DNS betreiben wollt, müsst ihr zuerst in eurem lokalen DNS, die IP eurer DiskStation als Upstream-DNS-Server eintragen. Im DNS-Server von Synology findet ihr die Option unter Auflösung > Auflösungsdienst. Dort habt ihr bis jetzt einen öffentlichen DNS oder euren Router eingetragen gehabt (sonst könntet ihr keine Internet-Domains mehr auflösen).

Weiterleitung an Pi-hole durch Eintragen der IP der DiskStation
Weiterleitung an Pi-hole durch Eintragen der IP der DiskStation

Wahl des Upstream-DNS-Servers

Für die Optionen A1 und B könnt ihr in den Einstellungen des Pi-hole den Upstream-DNS-Server festlegen. Also jenen DNS, der nach dem Pi-hole die Auflösung übernimmt. Üblicherweise betrifft das die Auflösung für Domains im Internet. Ihr habt die Wahl, ihr könnt den DNS eures Providers angeben, oder einen beliebigen anderen DNS. Wählt man einen anderen DNS, ist man etwas unabhängiger und kann eventuelle Sperren umgehen (Funktioniert nur bei Sperren per blockierter Namensauflösung). Standardmäßig verwendet Pi-hole die Google-DNS 8.8.8.8 und 8.8.4.4. Ihr könnt unter Settings > DNS > Upstream DNS Servers über die Tabelle steuern, welche DNS ihr verwenden wollt.

Verwendet am besten einen DNS der Secure DNS/DNS over HTTPS (DoH) unterstütz. Entweder verwendet ihr Cloudflare (in der Tabelle) oder ihr sucht euch vertrauenswürdige IPs aus dem Internet. Wenn ihr mehr über Secure DNS wissen wollt, lest bitte im Internet nach.

Zusammenfassung

So, ich weiß, das Thema ist nicht ganz einfach und der Artikel ist nicht ganz straight forward, hängt das Setup doch davon ab was ihr erreichen wollt bzw. was ihr schon in euren LAN habt. Nachfolgend findet ihr die 3 Optionen nochmal auf einen Blick zusammengefasst.

Option A1

Pi-hole als primärer DNS und lokaler DNS für die Auflösung lokaler Domains
Pi-hole als primärer DNS und lokaler DNS für die Auflösung lokaler Domains

Option A2

Pi-hole als primäre DNS mit Weiterleitung and den lokalen DNS
Pi-hole als primäre DNS mit Weiterleitung and den lokalen DNS

Option B

Lokaler DNS als primärer DNS mit Weiterleitung an Pi-hole
Lokaler DNS als primärer DNS mit Weiterleitung an Pi-hole

Setup testen

Jetzt wollen wir testen, ob wir alles richtig gemacht haben. Um Pi-hole zu testen, surft mit einem Gerät im LAN eine Webseite mit viel Werbung an. Dazu eigenen sich beispielsweise Seiten von Tageszeitungen und Magazinen. Ruft danach das Pi-hole-Dashboard auf und ihr solltet die ersten Werte sehen. Unter Query Log könnt ihr euch die einzelnen Anfragen ansehen. Ihr sehr welche Anfragen gestellt wurden und von welchem Client sie kommen. Das ist die IP vom Gerät, wenn Pi-hole der erste DNS-Server ist bzw. die IP von eurem lokalen DNS, wenn Pi-hole dahinter läuft.

Die lokale Namensauflösung testet ihr, indem ihr eine lokale Domain aufruft. Das ganze könnt ihr auch über die Kommandozeile testen. Unter Windows heißt der Befehl nslookup <Domain>, z.B. nslookup google.com oder nslookup meinedomain.com

Die Befehle ipconfig /all, ping, tracert -d und nslookup helfen euch auch bei der Fehlersuche.

Wenn ihr lokale Domains und Internetseiten auflösen könnt, besucht eine Seite mit viel Werbung (Seiten von Tageszeitungen eignen sich da sehr gut). Wechselt dann wieder ins Webinterface von Pi-hole, ihr solltet dort jetzt die ersten Statistiken sehen.
Unter Query log könnt ihr euch die einzelnen Anfragen ansehen, die gemacht wurden, welche erlaubt und welche blockiert wurden.

Statistiken im Pi-hole-Webinterface
Statistiken im Pi-hole-Webinterface

Möchtet Ihr noch detailliertere Schritt-Für-Schritt-Anleitungen für euer Synology NAS, mit viel mehr Hintergrundinformationen, Tipps und Tricks? Dann holt euch mein Wissen als als umfassendes Praxis-Handbuch. Mehr Infos findet ihr in keinem Buch zu Synology und alles in der von mir gewohnten Qualität.

Die dritte Auflage enthält Aktualisierungen zu DSM 7.1 und den Updates von WebStation, Surveillance Station und Synology Photos.

Das Buch direkt beim Verlag

Das Buch auf Amazon

Related Posts

Schreibe einen Kommentar

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