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
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