Synology und pihole im Container Manager

Nscale

Lieutenant
Registriert
Dez. 2014
Beiträge
593
Hallo an die Synology Experten,
ich versuche die letzten Tage pihole auf meiner Synology DS220+ zum laufen zu bekommen, habe aber einen Fallstrick, bei dem ich nicht weiter komme.

Aufgesetzt habe ich PiHole nach dieser Anleitung hier:

Im Docker-Compose habe ich lediglich Passwort und die entsprechenden Ports abgeändert. Und natürlich den Verzeichnispfad wo das ganze liegen soll.
PiHole bekomme ich auch zum laufen und kann über die IPv4_NAS:Port auch darauf zugreifen. Soweit also kein Problem.

Gemäß dem Video von SemperVideo müsste man ab hier lediglich noch die IP Adresse der PiHole/NAS in der Fritzbox als DNS hinterlegen. Sobald ich dies aber mache, koppele ich mich quasi vom Internet ab. Ich kann auf der PiHole auch keinen weiteren Netzwerkverkehr sehen. Ich habe auch schon versucht die in der PiHole angezeigte IP Adresse (172.19.0.2 ?) zu hinterlegen, hat aber auch nichts gebracht.

Mit dem PiHole auf dem RaspberriPi läuft alles wie es soll.

Jemand einen Tipp, wo ich etwas übersehe oder vergessen habe?

PS: Via Teleporter habe ich die Configs der Raspberri-Version rüber gezogen. Einstellungstechnisch sollte eigentlich alles passen.

Grüße und schönes langes Wochenende
 
Nscale schrieb:
ie entsprechenden Ports abgeändert.
Den Port für DNS (53) darfst du nicht ändern. (Und musst in ggf. in der Synology Firewall freigeben)
Nscale schrieb:
Gemäß dem Video von SemperVideo müsste man ab hier lediglich noch die IP Adresse der PiHole/NAS in der Fritzbox als DNS hinterlegen
Wo hast du den DNS angepasst? In den DHCP-Einstellungen oder den Uplink-DNS der Fritzbox?
 
Nilson schrieb:
Den Port für DNS (53) darfst du nicht ändern. (Und musst in ggf. in der Synology Firewall freigeben)
Hi Nilson, den habe ich nicht angefasst. Lediglich den für den HTTP/HTTPS Zugriff. Andernfalls bekam ich beim Start des Containers eine Fehlermeldung zurück, dass die Ports schon belegt sind. Die NAS hat die Erlaubnis Ports selbst frei zu geben.

Nilson schrieb:
Wo hast du den DNS angepasst? In den DHCP-Einstellungen oder den Uplink-DNS der Fritzbox?
Im Grunde wie zuvor auch. Einmal unter Internet-> Zugangsart -> DNS-Server
und einmal unter Heimnetz -> Netzwerk -> Netzwerkeinstellungen -> IPv4-Einstellungen

Wenn ich das bei einer der beiden Einstellungen nicht mache, hatte ich immer das Problem das nur ein Teil der Anfragen über die NAS liefen.
 
Docker macht NAT?

was sagt denn die Einstellung in Pi-Hole? (Settings -> DNS -> Expert Modus aktivieren)

Screenshot from 2025-06-19 21-00-43.png
 
@Sykehouse das scheint ein Treffer zu sein. Bei mir sieht das so aus, ich kann das aber auch nicht ändern, da ist ein Schloss dran. Ist mir vorher gar nicht aufgefallen.
1.jpg
 
Permit all origins ist ja auch OK, only local requests wäre ein Problem hinter einem NAT
 
Nscale schrieb:
Die NAS hat die Erlaubnis Ports selbst frei zu geben.
Tut sie das auch?
Du kannst mal über nslookup [IP-vom-NAS] schauen ob pihole DNS mäsig erreichbar ist.
Ergänzung ()

PS: sorry... musss so heißen:
nslookup www.google.de [IP-vom-NAS]
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: JumpingCat
@Korben2206 Bei ersterer Anfrage bekomme ich korrekt als Antwort, dass es sich um meine NAS handelt. Via Google bekomme ich keine Antwort. DNS request timed out.
 
@Nscale der letzte Befehl versucht www.google.de über dein NAS aufzulösen. Das klappt offenbar nicht also würde ich nochmal prüfen ob der Port wirklich an pihole weitergeleitet wird.
 
@Korben2206 Ich hab heute nochmal etwas Zeit rein. Meine NAS hat zwei IP Adressen im Netzwerk - da beide LAN Ports genutzt werden. Das PiHole auf der NAS ist nur über die LAN2 Schnittstellen-IP erreichbar und löst dann die DNS mit einer "nicht autorisierende Antwort" auf. (Bin eigentlich davon ausgegangen das LAN1 per Default hier priorisiert wird.) Allerdings scheint das in den DNS Einstellungen des Routers keine Änderung zu bringen diese einzutragen anstelle der LAN1 IP. Auch dann nicht, wenn ich einen der beiden Ports in der NAS als Standard Gateway fest setze. In der NAS PiHole bleibt es auch nach längerem Test bei lediglich zwei Clients aus einem anderen Subnetzwerk. Was da dahinter steht hab ich noch nicht ganz nachvollzogen. Wenn ich das richtig verorte sind das die LAN Schnittstellen der NAS bzw. die Fritzbox als virtual interface.
Den Port 53 habe ich zwischenzeitlich auch mal manuell frei gegeben. Hat bisher keine Änderung gebracht.
 
Hallo Zusammen,
ich bin nun endlich mal dazu gekommen, mich diesem Thema wieder zu widmen. Bisweilen bekomme ich PiHole auf der Synologie aber nicht wirklich so zum laufen, wie ich das von der Versiion auf dem Raspberry gewohnt bin.

Ich habe heute den Container völlig neu aufgesetzt und komme auch entsprechend auf die Weboberfläche. Per Teleporter konnte ich auch die Einstellungen übernehmen, das ist alles kein Problem. Die Einstellungen in der Fritzbox sind es aber, bei denen ich nicht recht weiß, was tun.

Bisher ist die Einstellung folgendermaßen:

Internet -> Zugangsart -> DNS Server. Hier unter DNSv4-Server die IPv4 des Raspberry pi eingetragen
Internet -> Zugangsart -> DNS Server. Hier unter DNSv6-Server die IPv6 des Raspberry pi eingetragen (beginnt mit fe80)

Heimnetz -> Netzwerk -> Netzwerkeinstellungen -> IPv4 Einstellungen. Hier ebenfalls IP des Raspberry Pi eingetragen.
Heimnetz -> Netzwerk -> Netzwerkeinstellungen -> IPv6 Einstellungen. Hier ebenfalls IP des Raspberry Pi eingetragen.

In dieser Konfiguration funktioniert PiHole wunderbar. Die IP-Adressen habe ich mir im PiHole unter Settings -> Systems -> Primary IP addresses heraus kopiert.

Mit PiHole im Container auf Synology wird es nun spannend. Unter Settings -> Systems -> Primary IP addresses steht hier bei IPv4 eine 172.19.0.2 @ eth0 und bei IPv6 [blank]@ lo.
Damit kann ich nicht wirklich etwas anfangen. Im Query Log erscheint auch ausschließlich eine 172.19.0.1 als Client.

Ich habe schon versucht, unter den oben genannten Einstellungen der Fritzbox die IPv4 der NAS einzutragen, und habe ein wenig mit der IPv6 der NAS gespielt. In der Fritzbox werden unter den Geräteeigenschaften ja mehrere IPv6 genannt. Welche ist denn hier die Richtige? Ebenfalls die, die mit fe80 beginnt? Durch probiert habe ich alle. Aber das Ergebnis ist nicht zufrieden stellend, so wurden auf Computerbase z.B. die Titelbilder eines Artikels nicht mehr geladen wenn über die PiHole auf dem NAS gerouted wurde. Ebenso erscheint als Client nur der 172.19.01 im Query Log.

So ganz steig ich nicht dahinter, welche Einstellung die Fritzbox und ggf. das PiHole auf dem NAS braucht. Weiß jemand Rat?
 
Du kannst die IP Adressen aus dem Bridge Netzwerk so nicht verwenden. Die FRITZ!Box braucht erstmal die notwendige Route für das Netz. Aber eigentlich sollten die notwendigen Ports auf dem Synology NAS exposed sein und unter der IP des NAS erreichbar sein. Für IPv6 nimmst du die link locale Adresse des NAS. Im Query Log wird immer die IP des Docker Host (IP des NAS) aus dem Bridge Netzwerk erscheinen, so funktioniert Docker bei Verwendung des Bridge Netzwerks (DNAT + Masquerading).

nslookup google.de IP_VOM_NAS

Bekommst du von deinem Rechner aus hier eine korrekte Antwort? Wie sieht dein Compose File aus?
 
Zuletzt bearbeitet:
@syhm Danke für eine Antwort. Musste wegen anderer Prioritäten das Thema jetzt erst Mal liegen lassen und hab mich erst dieses Wochenende wieder damit beschäftigen können. Docker Compose File hänge ich an.

Ich habe die Tage nun endlich auch mal heraus gefunden, warum in PiHole nur zwei Clients gelistet waren - das lag am Bridge Mode, über den dann der ganze Trafic läuft. Im Tutorial war das Thema leider nicht behandelt worden und wo Vor- und Nachteile liegen.
Als ich hierrüber gestolpert bin, habe ich dann noch Mal von vorn angefangen und das ganze in den Host Betrieb gebracht: https://drfrankenstein.co.uk/pi-hole-in-container-manager-on-a-synology-nas/

Es ist auch echt interessant, wie viele Möglichkeiten, Wege und Alternativen es gibt PiHole im Containermanager aufzusetzen.
Hier ein anderes Beispiel zur Ergänzung des Tutorials aus dem Eingangspost:
https://mariushosting.com/how-to-install-pi-hole-on-your-synology-nas/

Hier wird interessanterweise auch die UID und GID der NAS mit eingebaut. Leider hat der Ersteller mir nicht darauf geantwortet warum.

Mit Umsetzung im Host Modus stand ich dann direkt vor dem nächsten Problem: das zuvor funktionsfähige Docker Compose File hat nicht mehr funktioniert, ich bin über die gesetzten Ports nicht mehr auf die Weboberfläche gekommen und im Log gab es dann auch entsprechende Fehlermeldungen, dass keine Ports hinterlegt sind. Warum verstehe ich nicht ganz, nach etwas suchen habe ich dann schlicht
FTLCONF_webserver_port=XXXXs
ergänzt. s=HTTPs Damit hat es dann sofort wieder funktioniert. Warum bei einer Anmeldung beim Host Netzwerk die unter "ports" hinterlegten Eingaben des Compose File plötzlich nicht mehr übernommen werden, unter Bridge aber doch, erschließt sich mir nicht.

Das Compose File habe ich vom PiHole Projekt selbst, lediglich nun mit der eben erwähnten Ergänzung und einer Anpassung der Ports:
https://docs.pi-hole.net/docker/

Ab hier funktioniert nun auch der nslookup auf Google einwandfrei! Morgen möchte ich nun die Einstellungen der Fritzbox anpassen und das Setting testen. Werde dann berichten.
syhm schrieb:
Für IPv6 nimmst du die link locale Adresse des NAS.
Das ist auch so eine Info, die ich bisher nirgends in einem PiHole Tutorial gelesen habe - vielen Dank!
Beim PiHole auf dem Raspberry Pi war das auch nur ein "Ich teste das mal, wo @ eth0 steht" um das wie weiter oben in der Fritzbox zu hinterlegen. In den meisten Tutorials wird immer nur die IPv4 behandelt, meinem Verständnis nach läuft der IPv6 Traffic dann aber am PiHole vorbei wenn hierfür nicht auch ein DNS hinterlegt wird. Bzw. war das anfänglich meine Erfahrung mit PiHole.
 

Anhänge

Zuletzt bearbeitet:
Nscale schrieb:
Warum bei einer Anmeldung beim Host Netzwerk die unter "ports" hinterlegten Eingaben des Compose File plötzlich nicht mehr übernommen werden, unter Bridge aber doch, erschließt sich mir nicht.
kurz, by design, host mode docker ist das port mapping obsolet, da sind die Dienste nativ anzusprechen da der host "net stack" genutzt wird.

Bedingt aber auch dass die ports am Host nicht bereits in Benutzung sind, gerade http/s, dns, ... ports sind kritisch, ports können ja nicht "doppelt" belegt werden auf einem "Netzwerk Anschluss".
 
Guten Morgen,
ich habe gestern Abend die Einstellungen in der Fritzbox entsprechend geändert und das Netzwerk nun auf PiHole der NAS umgelenkt. Die Clients werden nun alle wie gewünscht erkannt im Query Log. Das Blocking funktioniert - soweit ich das bisher sehen kann - zuverlässig für IPv4 und IPv6. Also nun, mit Änderung auf Host Netzwerk und der Anpassung des Docker Compose wohl am Ziel angelangt. War das ein Krampf...

Nscale schrieb:
Bei mir sieht das so aus, ich kann das aber auch nicht ändern, da ist ein Schloss dran. Ist mir vorher gar nicht aufgefallen.
Das hier konnte ich auch fixen, im Docker Compose musste ich dafür nur den Befehl
FTLCONF_dns_listeningMode
auskommentieren. Der hat die Einstellung überschrieben und damit gelocked. Steht nun wieder wie zuvor auf Recommended Setting.

@alturismo Danke für Deine Antwort. Würde das nicht aber auch bedingen, dass ich nebst dem Webserver_Port noch weitere Ports aktivieren müsste? Aktuell habe ich hier nur einen HTTPs Port eingetragen mit dem ich auf das Weboverlay komme. Der Funktion scheint das aktuell keinen Abbruch zu tun. Die Ports musste ich aber auch im Bridge Modus auf nicht vergebene ändern. Eine Doppelbelegung, z.B. von Port 80, hat beim Starten der Container immer zu Problemen geführt.

Was leider noch nicht funktioniert ist das Weboverlay mit
aufzurufen. Hier erfolgt direkt eine Weiterleitung auf den allgemeinen Port der NAS für die Verwaltungsprogrammoberfläche. Entsprechend erhalte ich dann einen Fehlerbildschirm mit Titel "Es tut uns Leid, die von Ihnen gesuchte Seite konnte nicht gefunden werden."
Ich muss in der Adresszeile dann den Port https://pi.hole:[PORT_NAS]/admin abändern in https://pi.hole:[PORT_PiHole]/admin.

Gibts da einen Fix dafür?
 
Nscale schrieb:
Würde das nicht aber auch bedingen, dass ich nebst dem Webserver_Port noch weitere Ports aktivieren müsste? Aktuell habe ich hier nur einen HTTPs Port eingetragen mit dem ich auf das Weboverlay komme. Der Funktion scheint das aktuell keinen Abbruch zu tun. Die Ports musste ich aber auch im Bridge Modus auf nicht vergebene ändern. Eine Doppelbelegung, z.B. von Port 80, hat beim Starten der Container immer zu Problemen geführt.
es gibt hier 2 Dinge die nicht vermischt werden sollten (ich nutze auch kein pihole sondern adguard und auch keine synology)

1/ port mappings bei dockers im bridge mode

einfach erklärt, sehe dies als "Port Weiterleitung" wie an einem Router

Extern (Host Syn) Port >> Docker (bridge ip 172.x.x.x) Port / ähnlich wie Router externe IP:Port > LAN_IP:Port

2/ Variablen (oder Konfigurations Files) mit denen definiert wird wie die App an sich gestartet wird

Beispiel, mein NAS hat am Host Port 80 für dein web UI ja bereits belegt, jetzt kann ich keine Docker App im Host mode starten welche auch Port 80 für sich benötigen würde (port belegt)

Einige Docker können jetzt per Variable der App sagen Sie soll auf Port NN starten und NICHT Port 80 nutzen, wäre in so einem Fall zwingend erforderlich im Host mode, Alternative, ich stelle das web UI vom Host um ...

im Host Mode kann ich port mappings eintragen wie ich will, ist alles obsolet da die App nativ Ihren Port am host belegen will, wenn es da Konflikte gibt muss ich der Docker App sagen "anderer port" oder die Belegung am Host uzmstellen.

3. Alternative, Dockers im macvlan / ipvlan laufen lassen, sprich, jeder Docker bekommt seine eigene IP aus LAN sub zugewiesen, auch hier gibt es keine mappings (obsolet), da aber jeder Docker an sich seine eigene IP hat gibt es (normal) auch keine Konflikte ;)

Beispiel hierzu, mein LAN Netz ist 192.168.1.0/24, ich nutze nur macvlan in dockers (alle haben Ihre eigene IP)

1776258121938.png


Hier gibt es keine mappings da

http://192.168.1.83:80 erreichbar ist
http://192.168.1.80:80 erreichbar ist
usw usw usw

das wäre Variante 3 ;)

einfach zusammengefasst

1/ bridge mode, port mappings aktiv von Host Port auf Docker Port
2/ Host mode, KEIN port mapping, Docker Port == Host Port
> kein mapping möglich, nur Port ändern über
a/ Variablen am Docker um App anders zu starten (oder Konfigurationsdatei der App)
b/ betreffende Host App am Host ändern
3/ "Custom" macvlan / ipvlan mode, KEIN port mapping, Docker APP hat eigene IP, keine Konflikte
 
Nscale schrieb:
Gibts da einen Fix dafür?
Ja du kannst den ReverseProxy des Synology NAS verwenden in etwa so:

1776287917535.png


wobei du für den Port 8080 im Beispiel den HTTP Port von deinem PiHole einträgst. Dann müsste es schon gehen.
 
@alturismo Danke für deinen Einwurf. Das habe ich in so weit schon verstanden, wie sich Host bzw. Bridge Mode verhalten. meine Frage zielte eher darauf ab, ob ich nebst dem Port für die WebUI noch weitere Ports mit bisher noch nicht gesetzten Variabeln im Compose File (wieder) setzen müsste, wie eben Port 53 der als DNS Port definiert war. Mir erschließt sich dennoch nicht ganz, warum die im Compose File bereits gesetzten Ports nicht funktionierten sondern ich im Host Mode erst mit
FTLCONF_webserver_port=XXXXs
nachhelfen musste. Oder ich erkenne das gerade nicht aus deinem Text heraus, kann auch sein. So tief stecke ich in der Thematik einfach nicht drin. Vielleicht kannst Du mich da nochmal abholen?

@syhm auch Dir danke. Getestet -> Funktioniert (bei Ziel mit HTTPs in meinem Fall).

Nun dann der nächste To-Do Punkt: Mich nach 6 Jahren PiHole Nutzung endlich mal um die Einträge in der Diagnosis kümmern, die immer mal wieder hoch kommen...
 
  • Gefällt mir
Reaktionen: syhm
Nscale schrieb:
Mir erschließt sich dennoch nicht ganz, warum die im Compose File bereits gesetzten Ports nicht funktionierten sondern ich im Host Mode erst mit
nachhelfen musste. Oder ich erkenne das gerade nicht aus deinem Text heraus, kann auch sein. So tief stecke ich in der Thematik einfach nicht drin. Vielleicht kannst Du mich da nochmal abholen?
das ist aus meiner Erläuterung 2/ "Variable", damit startet der web Server im Docker auf einem anderen Port

hier Auszug der pihole Hilfe

1776399919627.png


kurz, auf dem Host ist wohl der Standard Port 443 bereits belegt, wenn pihole jetzt im host mode startet und seinen webserver ebenso auf 443 starten will wird das nicht gehen.

Dafür die Variable dass der webserver auf einem individuellen Port gestartet wird um keinen Konflikt zu verursachen sodass dieser nativ auf dem entsprechenden port dann läuft.
 
  • Gefällt mir
Reaktionen: Nscale
Nscale schrieb:
Mit Umsetzung im Host Modus stand ich dann direkt vor dem nächsten Problem: das zuvor funktionsfähige Docker Compose File hat nicht mehr funktioniert, ich bin über die gesetzten Ports nicht mehr auf die Weboberfläche gekommen und im Log gab es dann auch entsprechende Fehlermeldungen, dass keine Ports hinterlegt sind. Warum verstehe ich nicht ganz, nach etwas suchen habe ich dann schlicht

Weil im Host-Mode keine Ports gemappt werden. Das funktioniert nur im Bridge-Mode. In deiner Datei ist auch

Code:
ports:
  - "53:53/tcp"
  - "53:53/udp"
  - "80:80/tcp"
  - "443:443/tcp"

enthalten aber dein Modus ist auf host gestellt (network_mode: host). Darum ignoriert er schlicht die Ports (kein mapping). Du musst dich für ein Modell entscheiden.
 
  • Gefällt mir
Reaktionen: Nscale
Zurück
Oben