Synology NAS

Pi-Hole auf Synology mit Domäne und DNS Service installieren (Docker)

Pi-Hole auf Synology mit Domäne und DNS Service installieren

1.) NAS auf PI-Hole vorbereiten:

  • "Web Station" über das "Paket-Zentrum" installieren
  • "Apache 2.4" über das "Paket-Zentrum" installieren und in der "Web Station" auf Standard setzen (NGINX wird abgelöst)
    •  > "Web Station" öffnen
    •  > "Allgemeine Einstellungen"
    •  > "HTTP-Backend-Server:" auf "Apache HTTP Server 2.4" stellen

  • SSH an Synology-NAS aktivieren
    •  > "Systemsteuerung" im DSM öffnen
    •  > links auf "Terminal&SNMP"
    •  > "SSH-Dienst aktivieren"

  • Docker System Paket über das Paket-Zentrum der Synology installieren
  • Docker-Abbild "pihole/pihole" über die Docker-Konsole installieren
    • > links auf "Registrierung
    • > oben auf in der Suche "piehole" eingeben
    • > auf "pihole/pihole" mit der rechten Maustaste 
    • > "Dieses Bild herunterladen"

  • Docker-Abbild „portainer/portainer" installieren
    • > links auf "Registrierung
    • > oben auf in der Suche "portainer" eingeben 
    • > auf " portainer/portainer " mit der rechten Maustaste 
    • > "Dieses Bild herunterladen"

2.) Erstellen der DNS-Resolver Datei:

  • Eine neue TXT-Datei mit dem Notepad erstellen und "resolv.conf" benennen
  • Folgenden Inhalt in die neue Datei kopieren:
nameserver 127.0.0.1
nameserver 1.1.1.1
nameserver 9.9.9.9

3.) In der File Station den Docker Pi-Hole vorbereiten:

  • "File Station" auf der Synology-NAS öffnen, den Ordner "docker" aufklappen und folgende neue Unterordner erstellen:
             -> docker
                 -> PI-Hole
                    -> etc-dnsmasq.d
                    -> etc-pihole
     
  • Die zuvor erstellte "resolv.conf" wird jetzt in den Ordner "PI-Hole" kopiert.

4.) Portainer installieren (Docker Administration):

Portainer ist zwar für den PI-Hole nicht zwingend erforderlich, macht aber den Umgang mit Docker-Containern das Leben einfacher wink

Das Abbild "portainer/portainer" wurde ja bereits zuvor installiert, dann können wir direkt mit der SSH Container Konfiguration beginnen. Hierzu wird der Container aus dem Abbild heraus per SSH installiert:

  • Putty öffnen und eine SSH Verbindung auf NAS herstellen
  • Folgender Befehl in der SSH Konsole absetzen:

# sudo docker run -d -p 9000:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v /volume1/docker/portainer_data:/data portainer/portainer
  • Nun sollte ein neuer Container "portainer" in der Docker-Konsole, unter "Container" vorhanden sein.

  • Der Webserver zum Portainer Orchestrator sollte nun funktionieren:

Web Link: http://IP-der-Synology:9000/
User: admin
Pass: Supergeilespasswort

  • Bei der Ersteinrichtung, links auf "Lokal" Installation klicken und anschließend unten auf "Connect"

So sollte der Portainer dann aussehen:

Bitte beachten, die Container erscheinen nicht so schnell, ca. 5-10 Min. warten!

5.) Pi-Hole Netze konfigurieren:

Ziel ist eine nahtlose Integration des Pi-Hole in unser Synology-FritzBox Universum zu schaffen, hierzu muss ein Proxy ähnliches Konstrukt gebaut werden.

Die NAS ist bei mir mit zwei LAN-Ports am Switch, mit einem sogenannten Bond angebunden, was hier nicht relevant ist, nur um eventuelle Verwirrungen zu minimieren.

Normale Funktionsweise: DNS des Client-PC zeigt auf NAS-IP -> NAS stellt DNS Anfrage an den Pi-Hole über das "pihole-bridge" Netz -> Pi-Hole überprüft die Anfrage -> leitet DNS Anfrage an FritzBox weiter -> externe DNS-Query

Unsere Funktionsweise: DNS des Client-PC zeigt auf NAS-IP -> NAS stellt DNS Anfrage an den Syno-DNS-Service -> Syno-DNS-Service leitet die DNS Anfrage an Pi-Hole über das "pihole-bridge" Netz -> Pi-Hole überprüft die Anfrage -> leitet DNS Anfrage an den Installieren DNS Server auf der Synology -> DNS der Synology leitet die Anfrage an die FritzBox -> externe DNS-Query 

Um eine eigenständige fehlerfreie Kommunikation zwischen dem Pi-Hole und der Synology bzw. derer Ports zu gewährleisten, vergeben wir der Synology-NAS eine zweite IP auf die bereits genutzte LAN-Schnittstelle.

Zuvor muss aber noch die richtige LAN-Schnittstelle mit Putty ausgelesen werden.

5.1) Installation "pihole_net"

Jetzt installieren wir eine zweite IP auf dem LAN-Ethernet für das "pihole_net"
(ist nur über SSH möglich):

  • "Putty" öffnen und mit der Synology-NAS als Admin verbinden
# ip addr

Mit "ip addr" prüfen wir nun mit welchem Ethernet-Adapter die NAS das lokale Netzwerk erreicht, hierzu kontrollieren wir die Ausgabe nach der IP des lokalen Netzes:

In meinem Fall ist das Haus LAN an der "ovs_bond0" Schnittstelle:

11: ovs_bond0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN

    link/ether 00:10:33:6b:16:0f brd ff:ff:ff:ff:ff:ff

    inet 192.168.178.200/24 brd 192.168.178.255 scope global ovs_bond0

Jetzt erstellen wir das neue Docker Netzwerk "pihole_net" und vergeben dem Bond0 die IP 192.168.178.199:

# sudo docker network create -d macvlan --subnet=192.168.178.0/24 --ip-range=192.168.178.199/32 --gateway=192.168.178.1 -o parent=ovs_bond0 pihole_net

Danach muss das Admin Passwort eingegeben werden, um den den Vorgang zu bestätigen!

Hier zu beachten ist, dass zu ersetzende "Parent=Name von eurem Ethernet-Adapter-Namen mit lokaler IP" korrekt zuvor mit dem Befehl "ip addr" Abgefragt wurde! 

5.2) Installation "pihole_bridge"

Die "pihole_bridge" kann und wird über die Docker Oberfläche eingerichtet.
(Dieses Netz kommuniziert später direkt mit der FritzBox)

  • "Docker Konsole" öffnen
  • Links auf "Netzwerk"
  • Oben auf "Hinzufügen"

Folgende Werte eingeben:

Subnetz: 192.168.2.0/24
IP-Bereich: 192.168.2.2/32
Gateway: 192.168.2.1

So sollte das Pi-Hole Netz nun aussehen:

6.) Container Konfiguration „Pi-Hole“

Jetzt ist alles soweit vorbereitet, so können wir dann mit der Container Konfiguration beginnen.

  • "Docker Konsole" öffnen
  • Links auf "Abbild"
  • "pihole/pihole" Image markieren und oben auf den Button "Starten"
  • Im Container Konfigurationsfenster den Container-Namen vergeben "pihole-NAS"
  • Auf den Button "Erweiterte Einstellungen"

  • Unter "Erweiterte Einstellungen:" - "Automatischer Containerstart" aktivieren

  • Unter "Volume:" werden hier die zwei zuvor angelegten Ordner und die Datei angelegt:
    • > Ordner hinzufügen -> docker/PI-Hole/etc-dnsmasq.d -> Mount-Pfad: /etc/etc-dnsmasq.d
    • > Ordner hinzufügen -> docker/PI-Hole/etc-pihole -> Mount-Pfad: /etc/pihole
    • > Datei hinzufügen -> docker/PI-Hole/resolv.conf -> Mount-Pfad: /etc/resolv.conf

So sollte dann die „Volume“ Konfiguration aussehen, wenn sie dann fertig ist:

  • Unter "Netzwerk:" pihole_net und pihole_bridge mit "+" hinzufügen, das alte "Bridge" Netzwerk entfernen

  • Die "Port-Einstellungen:" alles so belassen

  • Bei "Links:" ist nichts zu machen
     
  • Jetzt unter "Umgebung:" (Variablen), ist ein wenig zu tun:

Hier sind zusätzlichen Variablen nötig für den Pihole-Container, diese müssen erstellt werden bzw. geändert werden:

WEBPASSWORD         Pihole*
TZ                  Europe/Berlin
DNSMASQ_LISTENIG    local
VIRTUAL_HOST        pihole

  • Nun sollte in der Docker-Konsole unter "Container" der neue Conteiner "pihole-NAS" existieren und gestartet sein
     
  • Wichtig! Container Logs überprüfen:
    •  > pihole-NAS Container markiren und oben auf den Button "Details"
    •  > oben auf "Protokoll" -> ganz unten sollte "[service.d] done" stehen.

Nun sollte der Pi-Hole über den untenstehenden Link funktionieren:

Browser Link: http:192.168.178.199/admin
Web Login: Supergeilespasswort

7.) Synology DNS Service auf Pi-Hole umstellen

Da unsere Synology als Domänen-Controller fungiert, muss im Synology-DNS-Server noch der Forwarder, der im Moment auf die FritzBox zeigt, auf den Pi-Hole umstellt werden.

  • Die "DNS Server" Konsole auf der Synology öffnen
  • Links auf "Auflösung"
  • Unter "Forwarder 1" die Pihole_Bridge IP eingetragen werden: 192.168.2.2

8.) Finale Tests

Wir sollten jetzt testen ob der Pi-Hole nach extern Pingen kann. Dies können wir mit einer Terminalverbindung, über den Portainer machen.

  • Portainer Web öffnen und links auf Containers
  • Klick auf "pihole-NAS" -> Console

  • Das „ >_“ Icon betätigen

  • Auf "Connect" um das Terminal Fenster zu öffnen.

  • Ping google.de -> OK Gut (wenn keine Antwort kommt, haben Sie etwas falsch gemacht) 
  • Jetzt kann man ein bekannte und vollgestopfte Webseite ansurfen, um zu testen ob die Webebanner nun verschwunden sind.

9.) FritzBox DHCP an den neuen DNS-Filter vorbereiten

Um den neuen Pi-Hole DNS im Netz per DHCP zu verteilen, muss an der FritzBox der DHCP-Server angepasst werden.

  • Unter "Heimnetzwerk" -> "Netzwerk" -> Netzwerkeinstellungen
  • An "Lokaler DNS-Server:" muss die IP der NAS rein: bei mir 192.168.178.200

 

  • Auf "IPv4-Adressen" klicken

  • Hier die Lokale DNS Server IP-Adresse auf 192.168.178.200 abändern, was der IP der Synology-NAS entspricht.

10.) SSH an Synology wieder deaktivieren