Pi-Hole als Docker Container mit eigenem Netzwerk

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Status
Für weitere Antworten geschlossen.

linuxdep

Benutzer
Registriert
02. Jan. 2009
Beiträge
615
Reaktionspunkte
13
Punkte
38
Hi,

ich habe mal meinen Pi-Hole auf der Syno mit Docker aufgestezt nach dieser Anleitung.
Aber im Gegensatz zu meinem Docker auf dem RPi (LXC-Umgebung) sehe ich nur Abragen von localhost im log, ich würde aber schon gerne sehen, welcher Client die Anfragen tätigt.
Habe das mit dem Docker und dem Netzwerk noch nicht so ganz verstanden, aber ich dachte, durch die eigene IP würde es wie ein eigenständiges System arbeiten. Scheint wohl doch nicht wirklich so, denn irgendwie erfolgt ja eine Netzumsetzung ???

Gibts da noch, was ich anpassen kann?
 
Moinsen,
Einfach so geht es afaik nicht, denn die Anfragen werden aus deinem Heimnetz zunächst an die IP des NAS gesendet, von da dann an PiHole und von da eben ggf an die Fritz oder an den DNS Server, den du konfiguriert hast.
Logo.
Hier ein link, der das Thema aufgreift und Lösungsansätze bietet.
Vielleicht ist da was bei?
 
Moinsen,

die Lösung ist den macvlan Treiber zu nutzen und damit ein Netz aufzubauen. Dieser läuft auf einer physischen LAN Schnittstelle (eth0, eth1 oder wenn du die Vorbereitungen für virtuelle Maschinen auf der Synology vorgenommen hast auch gern auf ovs_eth0 oder ovs_eth1)

Die einfache Lösung, wenn du für keinen weiteren Container physische eindeutige Adressen benötigst ist die folgende. Ab ins Terminal und dort erstellst du ein macvlan mit nur einer Adresse (nachfolgendes Beispiel ist für eth0):

Code:
sudo docker network create -d macvlan --subnet=XXX.XXX.XXX.0/24 --gateway=192.168.2.1 --ip-range=XXX.XXX.XXX.XXX/32 -o parent=eth0 VLAN

Damit hat dein macvlan Netzwerk nur eine Adresse (die XXX müssen entsprechend mit deiner Adressrange bzw. der konkreten IP ersetzt werden).

Nun löscht du den bestehenden pihole Container, erstellst diesen neu, wie du es vorher auch über die Oberfläche getan hast. Die ganzen Port-Weiterleitungen fallen jetzt weg, auch die IP der Syn musst du nicht mehr hinterlegen (SERVER_IP). Aber wieder die Umgebungsvariablen setzen (z.B. WEBPASSWORD). Du weißt dem Container jedoch ausschließlich das neu erstellte Netz mit dem Namen "VLAN" zu. Den Namen kannst du frei wählen, du musst nur den Befehl oben anpassen.

Wenn kein Container mehr mit dem Netz verknüpft ist, kannst du es bei Bedarf auch über die Oberfläche löschen.

Bitte achte darauf, dass die von dir dann genutzte IP XXX.XXX.XXX.XXX nicht automatisch durch deinen DHCP Server (meist Router) vergeben wird, also aus einem Adressbereich kommt, der außerhalb des DHCP Bereichs liegt.

Benötigst du mehrere dieser Adressen, wird es schwieriger, da du die Container dann explizit mit einer bestimmten Adresse starten musst.

Viel Erfolg!

P.S.: Allerdings machst du das im Schritt 5 deiner Anleitung eigentlich auch. Es sei denn, du lässt den pihole Container im Bridge Netzwerk Mode laufen und nach deiner Beschreibung, scheint das der Fall zu sein.
 
Zuletzt bearbeitet:
Moinsen,
einfach auf der Seite Locale DNS die Clients eintragen mit IP und hostname....dann sollte das auch vernünftig aufgelöst werden.
 
  • Like
Reaktionen: ElaCorp
Ich hatte die Geräte in der "Client group management" eingetragen. Das hatte nichts gebracht.

Du sagts, ich soll das hier eintragen?

Bildschirmfoto 2021-02-07 um 15.08.15.png

Da wir hier im Synology Docker Bereich sind, wollte ich euch fragen, ist das "negativ" das ich dieses Kästchen mit der Brücke im Docker Einrichtungsfenster aktiviert habe? Macht das an anderen Stelle Schwierigkeiten?
 
Moinsen,
nein, da nicht.
Guckst du hier:
bei Local dns...
pihole.png
Da eintragen....
 
  • Like
Reaktionen: ElaCorp
So?
Eigentlich will er da doch eine Domain haben. Und nicht nur einen Namen. Leerzeichen gehen auch nicht.
Ich bin mal gespannt, ob das alles so funktioniert.

Insgesamt könnte Pi Hole viel einfacher im Webinterface sein. Vor allem darf eine deutsche Übersetzung kommen. Ich kann kaum englisch.
Solche Sachen würden so viel dem Projekt bringen.
 

Anhänge

  • Bildschirmfoto 2021-02-07 um 19.14.21.png
    Bildschirmfoto 2021-02-07 um 19.14.21.png
    467,4 KB · Aufrufe: 26
Insgesamt könnte Pi Hole viel einfacher im Webinterface sein.
Klar, auch so eine Syno könnte sich einfach anhand "Deiner Gedanken" selbst konfigurieren ?
Vor allem darf eine deutsche Übersetzung kommen. Ich kann kaum englisch.
Wer hat jetzt das Problem? Das Projekt (bzw. "die Welt"), oder Du? Schnapp Dir ein Buch und lern! Kannst wohl kaum erwarten, dass sich die Welt nach Dir richtet. ?

Aber zur Beruhigung: Mein "allgemeines" Englisch-Vokabular ist mit den Jahrzehnten auch drastisch eingeschlafen. Nur gut, dass in der IT kaum reine "deutsche" Wörter gibt - "Datei" oder "Papierkorb" sind da noch ein echter Hingucker (und Ausreisser)... ?

Solche Sachen würden so viel dem Projekt bringen.

Jepp und zwar "enorm viel mehr Arbeit" ;)
 
@blurrrr , ich arbeite mich bereits in viele Sachen ein. Dazu bin ich bereit. Aber vieles könnte einfacher sein.

Da wir gerade bei dem Thema sind, ist es möglich in diesem Docker Pi Hole dieses "Unbound" einzubauen?
Video: https://www.youtube.com/watch?v=w32rn_jLb6E

Falls ja, ist es einfach? Ohne Befehle in der Console? =)
 
Weesste... die Jugend von heute... Da gibt es schon ein "VIDEO"(!) (lesen scheint ja heute eher ausser Mode gekommen zu sein) und dann will man es bitte noch mit 2 Klicks erledigt haben... -> Ja ne, is klar.... :P

Könntest halt mal bei den Docker-Containern schauen... da ist bestimmt irgendwo ein PiHole samt Unbound dabei ?
 
  • Like
Reaktionen: ElaCorp
Moinsen,
du kannst doch einfach ne schnelle Domain machen (hier zB in einem der Geräte einfach .otherland), dann das alles eingetragen. Mach die Domain doch via Frotzbox (wenn vorhanden oder Synology). Hab ic hier so gelöst, keine weitere Arbeit. Geht in 5 MInuten und Ruhe ist.
Wie an anderer Stelle schon mal gesagt: ich mach kein Docker. Aber trotzdem: ja, du solltest einfach unbound einbauen können:
https://forum.kuketz-blog.de/viewtopic.php?f=42&t=3067
Befehle auf der Konsole sind nötig. Aber das ist ehrlich gesagt nicht so wild...
Ist zwar alles relativ...aber leichter als ne Pihole GUI wird es imho nur selten in der IT Welt.
 
So, danke für eure Antworten, aber den Links folgend, den dortigen Links folgend, und olgend und folgend... nix wirklich brauchbares dabei gewesen.#
Habe ich mich mal etwas mit dem Portainer Container auseinander gesetzt, der wird in vielen Anleitungen installiert, aber irgendwie nie richtig genutzt und doch wieder auf die blöde GUI von syno oder die CLI geschwenkt. Aber das macvlan legt man mit dem Portainer wirklich nice an.
Habe mal testweise, weil der eh mal drauf soll den Mosquitto installiert, geht auch soweit ganz gut.
Nachdem die Moaquitto config sich wohl etwas geändert hat, habe ich diese angepasst und nun ist der Port auch erreichbar.

Zurück zum macvlan, da habe ich ein subnetz von .224-.230 konfiguriert, jetzt vergibt docker ja scheinbar variabel die IP's, wie kann man das fix machen ohne ganz kleine 1 IP Subnetze zu bauen?

Das Pihole mache ich später, ist mir jetzt zu spät... wollte Erfolge sehen heute, das mit den vielen Parametern die man beim Portainer immer angeben muss war mir das testen zu nervig. Export kann der wohl auch nicht so richtig.

Schau an, auch in der Syno Docker GUI ist das macvlan jetzt zu sehen...
0Uxbgyv.png
 
Zuletzt bearbeitet:
Zuletzt bearbeitet:
  • Like
Reaktionen: ElaCorp
Hallo zusammen.

Ich habe ein ganz ähnliches Setting, bei mir läuft das auch fast erfolgreich. Das Problem hatte ich schon hier geschildert: https://www.synology-forum.de/threa...n-oder-blacklisting-im-dns.108191/post-922282

Ich habe folgende Anleitungen verwendet:
https://servicemax.com.au/tips/pi-hole-in-docker-on-synology-the-best-way/https://docs.pi-hole.net/routers/fritzbox-de/
Im Ergebnis habe ich dann Docker + Portainer + macvlan + Pihole, läuft alles erfolgreich. Mein einziges verbleibendes Problem ist, dass die Synology den Docker-Container nicht anpingen kann. Also wohlgemerkt die IP im LAN, nicht die innerhalb des Container-Netzwerkes. Alle anderen Clients können die IP anpingen und bekommen auch eine Antwort. Das führt dazu, dass ich auf der Synology manuell einen anderen DNS eintragen muss, weil der per DHCP verteilte Pihole nicht geht... Weiß da jemand Rat?
 
Zurück zum macvlan, da habe ich ein subnetz von .224-.230 konfiguriert, jetzt vergibt docker ja scheinbar variabel die IP's, wie kann man das fix machen ohne ganz kleine 1 IP Subnetze zu bauen?
Unter https://blog.ivansmirnov.name/ findest du die passende Docker Compose.
YAML:
networks:
      macvlan0: # same as network specified below
        ipv4_address: 10.0.37.59 # the IP of the pihole container
Man kann für jeden Container eine separate IP angeben, ohne dafür ein eigenes Subnet zu erstellen.

Mein einziges verbleibendes Problem ist, dass die Synology den Docker-Container nicht anpingen kann.
Unter meinem oben angegebenen Link gibt es auch den nachfolgenden Befehl zur Erstellung einer Bridge.
Bash:
sudo ip link add MACVLAN-NETZWERK link eth0 type macvlan mode bridge
Damit sollte sich dann der Container vom Host aus anpingen lassen. Der Vorgang ist in dem Post eigentlich ganz gut beschrieben.

EDIT: Hier ist das Ganze nochmal für Portainer beschrieben.
 
Zuletzt bearbeitet:
@King3R Vielen Dank für die Links. Wenn ich das richtig verstehe, brauche ich also nicht nur das macvlan, sondern noch ein virtuelles Netzwerk-Interface drumherum? Ich glaube, das ist mir dann zu mühsam und ich lasse einfach alles so, funktioniert ja auch so :D und die Synology “surft“ eh nicht im Netz, weshalb der Pihole dazwischen sinnvoll wäre.
Wenn ich mal einen Container habe, der zwingend von der Synology selbst erreicht werden muss, dann gucke ich mir das noch mal näher an.
 
Eigentlich ist es nicht besonders kompliziert, ich zitiere nochmal von hier.
Die IPs und die IP-Range müssen natürlich angepasst werden, damit sie sich nicht mit dem DHCP in Gehege kommen.

Bash:
docker network create -d macvlan --subnet=192.168.20.0/24 --gateway=192.168.20.40 --ip-range=192.168.20.80/28 --aux-address 'host=192.168.20.80' -o parent=eth0 mac0

Bash:
# Virtuelles Netzwerk Device mac1 anlegen
ip link add mac1 link eth0 type macvlan mode bridge
ip addr add 192.168.20.80/32 dev mac1
ip link set mac1 up
ip route add 192.168.20.80/28 dev mac

Da das Virtuelle Netzwerk flüchtig ist und nach jedem Neustart neu angelegt werden muss, hier noch das Script aus dem Link, welches über den Aufgabenplaner aufgerufen werden muss. Da könnte man z. B. alle 5 min. prüfen lassen, ob das virtuelle Netzwerk existiert.

Bash:
#!/bin/sh

if ip link | grep "mac1@eth0" > /dev/null; then

 echo "Device mac1 existiert"

else

 echo "Device mac1 anlegen"
 ip link del mac1
 ip link add mac1 link eth0 type macvlan mode bridge
 ip addr add 192.168.20.80/32 dev mac1
 ip link set mac1 up
 ip route add 192.168.20.80/28 dev mac1

fi

Wenn es für dich so funktioniert, wie du es gerade nutzt, ist es doch die Hauptsache.
 
Danke King für deine Links, die hatte ich noch nicht gefunden, interessant, aber wenn ich das lese
<code>
First, we enable promiscuous mode on our parent interface: sudo ip link set eth0 promisc on
</code>
Ist das auf den Syno nicht sonderlich haltbar wie ich aus Erfahrung weiß, jedes FW update kann es alles durcheinander bringen.
Aber eigentlich muss ich mir noch mal genau überlegen ob ich mit der Box eine Verbindung brauche, wohl eigentlich nicht, aber mal in ruhe durch gehen.
An sonsten werde ich mal für so was Proxmox testen auf einem alten PC testen, so lange ist es auf dem RPi gut aufgehoben, ab und an einen reboot machen.
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat