All for Joomla All for Webmasters

Pi-Hole AdBlock via Docker auf dem NAS Synology DS718+

Synology DS718+

Vor ein paar Wochen kaufte ich mir für gar nicht so wenig Geld ein Synology DS718+ NAS. Die Gründe waren vielseitig und die aktuelle Generation von NAS geben einiges her.
Nach einiger Recherche habe ich mich für das DS718+ entschieden, auch wenn das DS918+ die bessere Wahl gewesen wäre.

Eins der Gründe für den Kauf war die Möglichkeit mehrere eigenständige Geräte auf ein einziges zusammen zu bringen; so habe ich nun auf dem Synology NAS meinen Plex Mediaserver und mein Pi-Hole Adblock laufen. Dies lief vorher separat über ein kleines Lenovo Thinkcentre mit Windows Server und einem Raspberry Pi.

Dieses Tutorial beschäftigt sich ausschließlich mit der Einrichtung eines Pi-Holes auf dem Synology NAS, inkl. grundsätzlicher Konfiguration. Ich setze ab einem bestimmten Punkt ebenfalls voraus, dass sowohl die Funktion als auch grundlegend die Oberfläche des Pi-Holes bekannt ist!

Die Qual der Wahl

Zugegeben: Ich bin nicht ganz selbst draufgekommen. Ja, die Anforderungen waren mir klar, aber den Stein ins Rollen gebracht hat letztlich mein Arbeitskollege Florian W.
Da er schon seit einiger Zeit ein DS918+ in Betrieb hat, konnte ich mich gut mit ihm austauschen und die Rahmenbedingungen abklopfen. Nach ein bisschen intensiverer Recherche hatte ich die Wahl zwischen dem DS918+ (4x4 Festplatten) [Amazon] und dem DS718+ (2x4 TB Festplatten) [Amazon]. Wieso also die kleinere Version? Ganz einfach: Ich war nicht bereit 1.100€ auszugeben. Punkt. :-)

Wer jedoch dazu bereit ist für ein Vier-Festplatten NAS ca. 1.100€ hinzublättern: Das DS918+ kann optional als Cache eine M.2-SSD (z.B. Samsung MZ-V7E1T0BW SSD 970 EVO 1 TB M.2 [Amazon]. Kleiner macht schlichtweg keinen Sinn bei der NAS Speichergröße) mounten da sie einen Steckplatz dafür übrighat. ...von dem mehr Speicherplatz natürlich abgesehen.

Bevor wir loslegen eine kleine Warnung: Als Pi-Hole DNS Server wird das NAS nicht mehr in den Standby gehen! Siehe Dazu meine Anmerkung ganz unten bei der "Fehlerbehebnung"!
-> direkt zum Bereich springen

Konfiguration und Vorbereitung

Natürlich setze ich für die weitere Konfiguration des Pi-Holes ein bereits funktionierendes und eingerichtetes NAS voraus. Diese Einrichtung ist die Grundkonfiguration zur Inbetriebnahme.

Docker

Docker Installation

Über das Paketzentrum installieren wir zuerst Docker. Dieses Paket ist für die Virtualisierung des Pi-Hole Containers notwendig. Statt also ein eigenes Raspberry-Pi System oder anderes Linux aufzubauen, setzen wir auf eine saubere, virtuelle Umgebung, die wie für unsere Zwecke gemacht wurde.

Docker Installation via Paketzentrum

Da Docker bei mir bereits installiert ist, steht dort "öffnen". Im Urzustand steht dort "installieren". ;-)

Wir suchen also nach Docker und drücken unter dem blauen "Container-Wal" auf installieren. Der Rest passiert automatisch.
Anschließend öffnen wir Docker.

Pi-Hole Container

In Docker wählen wir den Tab "Registrierung" aus.
In der Suche geben wir "pi-hole" ein. Nun wählen wir das "offizielle Pi-Hole Docker Image" aus und klicken oben auf "Download".
Nun warten wir bis die ~270 MB runtergeladen sind.

Sowohl den Prozess des Downloads als auch wenn das Docker Image fertig gestellt ist und wir es "starten" wollen, können wir im Reiter "Abbild" verfolgen.

Pi-Hole Installation

Wie erwähnt "starten" wir das Abbild nach erfolgreichen Download und es öffnet sich ein neues Fenster.
Die dort abgebildete Konfiguration kann eins zu eins übernommen werden. Natürlich haben wir im Hinterkopf, dass mein NAS eine andere IP Adresse im Netzwerk hat als Deins. :-)

Allgemeine Einstellungen

Als Containername habe ich "Pi-Hole" gewählt. Es ist letztlich nur ein Name zur Identifikation. Es kann auch beim Standardname "pihole-pihole1" bleiben. Der Name kann übrigens im Nachhinein geändert werden!
Nachdem wir den Namen bestimmt haben, klicken wir auf "Erweiterte Einstellungen". Es öffnet sich ein weiteres Fenster.

Erweiterte Einstellungen

Die "Verknüpfung auf Desktop" ist rein optional.
Den "automatischen Neustart" hingegen empfehle ich, damit der Container auch in der Lage ist zu starten, wenn mal was passieren sollte. Nach einem Stromausfall zum Beispiel.

Volume und Netzwerk

Die Tabs "Volume" und "Netzwerk" können wir überspringen. Wer sich damit auskennt kann hier sicherlich noch ein wenig ändern. Zur Grundkonfiguration ist es jedoch nicht notwendig.

Port-Einstellungen

Der Tab "Port-Einstellungen hingegen ist von großem Interesse. Vorkonfiguriert sind verschiedene Ports auf "automatisch". Dies führt in keiner Weise zu einem Ergebnis. Wir setzen die Ports wie folgt:

Lokaler Port Container-Port Typ
53 53 TCP
53 53 UDP
8181 80 TCP

Wieso 8181 auf 80?
Port 80 ist bereits vom NAS belegt und würde uns unweigerlich auf die NAS Oberfläche umleiten. Deswegen setzen wir einen anderen Port über die wir die Weboberfläche des Pi-Hole aufrufen.

Links, Umgebung und Abschluss

Auch diese Tabs können wir in der Grundkonfiguration überspringen und klicken auf "Übernehmen". Fast schon fertig! :-)

Und noch eine Warnung! Im Tab "Umgebung" niemals (niemals!) die "ServerIP" ändern. Diese Variable unbedingt auf 0.0.0.0 belassen oder der gesamte Container wird zerschossen und muss neu erstellt werden! Selbst ein zurückändern funktioniert nicht.

Pi-Hole Konfiguration

Grundsätzlich ist Pi-Hole nun konfiguriert. Wir können jetzt noch ein paar optionale Einstellungen vornehmen.

Optionale Einstellungen

Erweiterte Einstellungen nachträglich ändern

Um Einstellungen vornehmen zu können, wechseln wir nun auf unseren konfigurierten "Container" und stoppen ihn wieder, indem wir auf den blauen Ein-/Ausschalter klicken.
Anschließend können wir auf "Bearbeiten" klicken und können zum Beispiel den Namen usw. ändern.

Weitere Einstellungen per Konsole

Wenn der Pi-Hole wieder gestartet wurde, klicken wir auf "Details". Es öffnet sich das Detail-Fenster des Pi-Holes und wir können die Systemeigenschaften, Ressourcenverbrauch und -auslastung, laufende Prozesse und das Protokoll einsehen.
Was wir auch haben ist ein Terminal. Im entsprechenden Tab können wir per Klick auf "Erstellen" eine Bash (ähnlich im Windows der CMD) öffnen und bekommen die gewohnte Linux-Konsole.

Updates

Von Zeit zu Zeit bietet es sich an folgende Befehle durchzuführen:

  • apt-get update
  • apt-get dist-upgrade

Letzteres muss ggf. mit "Y(es" bestätigt werden.

Passwort entfernen

Mein Netzwerk ist sauber und insgesamt sehe ich es unkritisch, weswegen ich zur einfacheren Konfiguration gerne das Passwort ausschalte.
Um das Passwort des Pi-Holes zu deaktivieren, geben wir folgenden Befehl ein:

  • pihole -a -p

Nochmal das leere Passwort mit Enter bestätigen, fertig!

Pi-Hole Admin Oberfläche

Oberfläche aufrufen

Auf die Oberfläche kommen wir nun über folgende Adresse: http://ip_deines_NAS:8181/admin/.
Bei mir ist es zum Beispiel: http://192.168.2.25:8181/admin/
Natürlich wird meine Adresse bei Dir nicht funktionieren. Ansonsten wäre das ein großer Zufall ;-)

Nach eventuellen Login (je nachdem ob das Passwort entfernt wurde oder nicht) klicken wir auf der Oberfläche auf "Settings" und landen direkt im Tab "System". Auffällig ist dort die "Pi-hole IPv4 address 0.0.0.0". Das bleibt auch so. Alles ganz normal.

DNS Tab

Als erstes deaktivieren wir sämtliche Upstream Server.

Dann setzen wir unseren Router als "Custom 1". Meine Fritzbox hat die IP 192.168.2.1. und der Port #53 setzt sich automatisch dahinter.

Wir belassen das "Interface listening behavior" auf "Listen only on interface eth0"

Und zuletzt deaktivieren wir noch den "non-FQDNs Forward" und ignorieren das "Conditional Forwarding" ganz unten vollständig. Anschließend klicken wir dann ganz unten auf "Save" um die Änderungen zu speichern.

API/Web Interface Tab

Das Dashboard beinhaltet eine Top Liste. Dort werden die meisten Abfragen und andere Informationen angezeigt.
Da unser Router jedoch unser Upstream Server ist, wird dieser immer ganz oben auftauchen, immer die meisten Abfragen haben und grundsätzlich die schöne Ansicht total verwursteln. Also entfernen wir ihn aus der Übersicht indem wir unter "Top Clients" die IP des Routers eintragen.
Diese Änderung ist optional und kann auch später noch jederzeit und ohne Einschränkungen vorgenommen werden.

Einstellungen testen

DNS Server lokal ändern

Um die Einstellungen lokal zu testen öffnen wir nun eine Kommandozeile als Administrator und tippen folgendes ein:
netsh interface ip set dns "name_deines_interfaces" static ip_deines_nas

    Erklärungen:
  • "name_deines_interfaces": Mit Anführungsstrichen muss dies der Name deines Interfaces sein. Dies ist häufig "LAN-Verbindung" mit irgendeiner Nummer. Dies herauszufinden geht schnell per [win]+[R], dann "ncpa.cpl".

Wenn dies passiert ist, können wir im CMD per ipconfig -a in der Spalte DNS-Server gegenprüfen, dass er die Änderung genommen hat.

Nun können wir eine Webseite aufrufen und schauen was passiert. Der Aufruf lässt sich außerdem auf dem Pi-Hole im "Query Log" nachvollziehen.

Wenn das nun funktioniert, setzen wir uns im CMD lokal wieder zurück auf DHCP per
netsh interface ip set dns "name_deines_interfaces" dhcp

Einstellungen im Netzwerk ausrollen

Nachdem wir den Test erfolgreich durchgeführt haben, können wir im Router den DNS des DHCP Servers ändern.
Wichtig: Bitte dringend aufpassen und nicht den DNS Server der Internetverbindung ändern. Sonst wird keine Webseite mehr funktionieren.

DNS Server im Router ändern

Ich habe eine Fritzbox. Zu anderen Routern kann ich leider keine Hilfe bieten, hingegen müssen wir die Einstellung des lokalen DHCP Servers auf die IP unseres NAS ändern.

    In der Fritzbox finden wir die Einstellung hier:
  1. Menü: Heimnetz
  2. Menü: Netzwerk
  3. Tab: Netzwerkeinstellungen
  4. Überschrift: IP-Adressen
  5. Knopf: IPv4-Adressen
  6. Lokaler DNS-Server

Die Fritzbox verlangt nach Änderung und Klick auf "Okay" außerdem die Betätigung einer Taste an der Box selbst.
Alle im Netzwerk vorhandenen Geräte haben jedoch noch die alten DNS Server Einstellungen, also den Router selbst. Diese übernehmen die neuen Einstellungen nach Ablauf der Gültigkeit (Screenshot oben: "Gültigkeit 10 Tage"), nachdem sie neugestartet wurden oder die Netzwerkverbindung neu aufgebaut wurden.

Fehlerbehebung

Ich kann keine Webseiten mehr aufrufen.

Natürlich wurden die Einstellungen vorher getestet und das Problem ist nicht im kompletten Netzwerk. Sollte es doch im Netzwerk sein, so kann der DNS Server wieder auf die Router IP geändert werden.
Wenn die Fritzbox plötzlich nicht mehr per Namen (im Browser "fritz.box") aufgerufen werden kann, muss zwangsläufig die IP genutzt werden. Ganz ehrlich gesagt: Wenn wir an diesem Punkt sind, sollten dringend grundlegende Netzwerkkenntnisse und das Verständnis von "Testen" angeeignet werden! :-)
Ansonsten in den Docker Containereinstellungen nachprüfen, dass die Ports korrekt gesetzt sind und nichts mehr auf automatisch steht. Dies passiert mal gerne aus Faulheit. ;-)

Meine Handyspiele zeigen keine Werbung mehr. Wie komme ich nun an meine Diamanten?

Richtig. Nicht mehr im heimischen Netzwerk. Der Pi-Hole blockiert Werbung. Das ist sein Job.
Im Query Log im Pi-Hole Interface kann bei notwendigem Bedarf eine Ausnahme deklariert werden. Diese gilt natürlich dann netzwerkweit.

Der Pi-Hole meldet eine neue Version

Tricky. Erst einmal müssen wir ein wenig warten bis ein aktualisierter Container zur Verfügung steht. Anschließend müssen wir den Container dann leider neu aufsetzen. Leider.
Die Einstellungen des Pi-Holes können jedoch in den Docker-Einstellungen "gemounted" werden und sind dann containerübergreifend verfügbar.

Das NAS geht nicht mehr in den Standby

Ja, leider korrekt. Anders lässt sich kein DNS Server betreiben. Das ist ein relativer Nachteil. Genauer genommen ist der Docker Container Schuld, da ja ein virtuelles Betriebssystem läuft und deswegen aktiv bleibt.
Als einzige Alternative bleibt hier natürlich dann noch ein eigenständiger Raspberry Pi 3.

Hingegen ist es für mechanische Festplatten ohnehin nicht so gesund immer und immer wieder anzudrehen. Mechanische Festplatten haben sogenannte "Anlauf-Zyklen" und diese liegen bei ca. 50.000. Das heißt, wenn die Festplatten einen Spindown macht oder ganz steht, kann diese 50.000 mal anlaufen.
Wenn wir auf das NAS nur immer kurz zugreifen und es dann z.B. nach 10 Minuten wieder schlummern soll, dreht die Platte im schlimmsten Falle 140 mal am Tag an. Natürlich ist das eine sehr grobe Rechnung, jedoch zerrt es an der Langlebigkeit. Ich würde behaupten eine neue Platte, bzw. neue Platten kaufen kostet mehr als der Stromverbrauch der dadurch stattdessen entsteht. Und ökologisch betrachtet ist die Herstellung einer neuen Platte ebenfalls sicherlich aufwendiger als der Stromverbrauch selbst.
Aber das muss jeder für sich selbst entscheiden. Ich habe meinen Standby auf 4 Stunden gestellt. So bleibt es tagsüber aktiv und schlummert nur nachts und morgens. Aber durch den Pi-Hole im Docker wird es ohnehin nicht mehr schlummern gehen ;-)
-> zurück zur Warnung ganz oben

Funktioniert diese Anleitung auch auf anderen Synology NAS Systemen?

Natürlich. Jedes Synology NAS welches mit DSM 6.2 läuft, sollte ähnlich oder gar gleich aufgebaut sein.

Wie lange hast du für dieses Tutorial gebraucht?

Ca. 3 Stunden. :-)


So, wir sind nun am Ende angekommen. Ich hoffe ich konnte helfen. Selbstverständlich freue ich mich immer über ein paar nette Worte, am liebsten per Telegram.
Sehr gerne nehme ich Verbesserungsvorschläge entgegen!