Pi-Hole als Docker Container mit eigenem Netzwerk

linuxdep

Benutzer
Mitglied seit
02. Jan 2009
Beiträge
584
Punkte für Reaktionen
11
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?
 

the other

Benutzer
Sehr erfahren
Mitglied seit
17. Okt 2015
Beiträge
2.100
Punkte für Reaktionen
541
Punkte
154
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?
 

the other

Benutzer
Sehr erfahren
Mitglied seit
17. Okt 2015
Beiträge
2.100
Punkte für Reaktionen
541
Punkte
154

Scrati

Benutzer
Mitglied seit
03. Jun 2014
Beiträge
29
Punkte für Reaktionen
4
Punkte
3
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:

the other

Benutzer
Sehr erfahren
Mitglied seit
17. Okt 2015
Beiträge
2.100
Punkte für Reaktionen
541
Punkte
154
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

ElaCorp

Benutzer
Mitglied seit
12. Mai 2015
Beiträge
642
Punkte für Reaktionen
33
Punkte
48
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?
 

the other

Benutzer
Sehr erfahren
Mitglied seit
17. Okt 2015
Beiträge
2.100
Punkte für Reaktionen
541
Punkte
154
Moinsen,
nein, da nicht.
Guckst du hier:
bei Local dns...
pihole.png
Da eintragen....
 
  • Like
Reaktionen: ElaCorp

ElaCorp

Benutzer
Mitglied seit
12. Mai 2015
Beiträge
642
Punkte für Reaktionen
33
Punkte
48
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

blurrrr

Benutzer
Sehr erfahren
Mitglied seit
23. Jan 2012
Beiträge
6.204
Punkte für Reaktionen
1.104
Punkte
248
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" ;)
 

ElaCorp

Benutzer
Mitglied seit
12. Mai 2015
Beiträge
642
Punkte für Reaktionen
33
Punkte
48
@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? =)
 

blurrrr

Benutzer
Sehr erfahren
Mitglied seit
23. Jan 2012
Beiträge
6.204
Punkte für Reaktionen
1.104
Punkte
248
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

the other

Benutzer
Sehr erfahren
Mitglied seit
17. Okt 2015
Beiträge
2.100
Punkte für Reaktionen
541
Punkte
154
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.
 

linuxdep

Benutzer
Mitglied seit
02. Jan 2009
Beiträge
584
Punkte für Reaktionen
11
Punkte
38
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:

DKeppi

Benutzer
Mitglied seit
01. Apr 2011
Beiträge
3.208
Punkte für Reaktionen
63
Punkte
114
Zuletzt bearbeitet:
  • Like
Reaktionen: ElaCorp

mar_ell

Benutzer
Mitglied seit
12. Feb 2021
Beiträge
8
Punkte für Reaktionen
0
Punkte
1
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?
 

King3R

Benutzer
Mitglied seit
14. Mrz 2017
Beiträge
356
Punkte für Reaktionen
81
Punkte
28
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:

mar_ell

Benutzer
Mitglied seit
12. Feb 2021
Beiträge
8
Punkte für Reaktionen
0
Punkte
1
@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.
 

King3R

Benutzer
Mitglied seit
14. Mrz 2017
Beiträge
356
Punkte für Reaktionen
81
Punkte
28
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.
 

linuxdep

Benutzer
Mitglied seit
02. Jan 2009
Beiträge
584
Punkte für Reaktionen
11
Punkte
38
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.
 


 

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