pihole&unbound im macvlan / wo definiere ich den Port für DNS Upstream?

jaydee73

Benutzer
Mitglied seit
07. Sep 2015
Beiträge
51
Punkte für Reaktionen
8
Punkte
8
Hallo Leute,

bei mir läuft pihole mit unbound in getrennten Containern via macvlan seit vielen Monaten problemlos. Der Unbound ist inkl. Port im pihole-Dashboard hinterlegt:

Bildschirmfoto 2024-02-15 um 20.29.03.png

Es gibt allerdings eine Sache, die nervt. Nach jedem Update des pihole-Containers (gerade heute wieder) wird der Port nicht übernommen. Nach einem Update steht dort also nur noch:

Bildschirmfoto 2024-02-15 um 20.30.35.png

Damit funktionieren die Anfragen an den Unbound nicht mehr, bis ich den Port manuell nachtrage. Muss ich also immer dran denken.

Ich habe auch bereits in den conf-Dateien geschaut, aber ich bekomme es nicht hin, das in die conf-Datei so einzutragen, dass er das bei einem Update beibehält. Grundsätzlich wird die IP ja beibehalten, aber den Port vergisst er irgendwie.

Könnt ihr mir helfen, in welcher conf das überhaupt korrekt stehen muss und in welcher Form es dort eingetragen sein muss? Auch mit Hashtag? Oder mit Doppelpunkt? Oder ist der Port vielleicht eine separate Variable? Die pihole-Doku hat mir da auch nicht wirklich verraten, wie es geht...

Dank euch!

Gruß,
Stefan
 

plang.pl

Benutzer
Contributor
Sehr erfahren
Maintainer
Mitglied seit
28. Okt 2020
Beiträge
15.029
Punkte für Reaktionen
5.400
Punkte
564
Warum MACVLAN? Das schafft i.d.R. mehr Probleme als es löst. Und was ich noch weniger verstehe: Warum den unbound-Port von 53 verbiegen? Das wäre genau einer der Gründe, warum man MACVLAN nutzt: Weil man den Port nicht ändern muss
 
  • Like
Reaktionen: Tuxnet

jaydee73

Benutzer
Mitglied seit
07. Sep 2015
Beiträge
51
Punkte für Reaktionen
8
Punkte
8

plang.pl

Benutzer
Contributor
Sehr erfahren
Maintainer
Mitglied seit
28. Okt 2020
Beiträge
15.029
Punkte für Reaktionen
5.400
Punkte
564
Ich nutze auch zwei Container. Aber wenn du ein MACVLAN hast, können doch beide auf 53 lauchen!
Oder eben kein MACVLAN, nur dann musst du einen Container verbiegen, damit der nicht mehr 53 nimmt
 

jaydee73

Benutzer
Mitglied seit
07. Sep 2015
Beiträge
51
Punkte für Reaktionen
8
Punkte
8
Hmmm...nun scheitere ich daran, den Unbound Docker-Container auf Port 53 laufen zu lassen. Wenn ich die YAML und die unbound.conf entsprechend anpasse und den Container starte, kommt die Fehlermeldung:

error: can't bind socket: Permission denied for 0.0.0.0 port 53

Dazu ein bisschen gegoogelt und rausgefunden, dass wohl nur der User root Ports unter 1000 binden darf. Angeblich soll man das mit dem Parameter
sysctl:
net.ipv4.ip_unprivileged_port_start: 0

in der YAML aushebeln können. Da sagt mir der Container Manager aber nun, dass ich sysctl nicht verwenden dürfe.

Irgendwie anscheinend alles nicht so easypeasy...und ich bin auch kein ausgewiesener Linux-Experte.

Hast du da noch einen Tipp für mich?
 

plang.pl

Benutzer
Contributor
Sehr erfahren
Maintainer
Mitglied seit
28. Okt 2020
Beiträge
15.029
Punkte für Reaktionen
5.400
Punkte
564
Also das ist mir neu. Ich habe meinen AdGuard auch auf einem Port unter 1000 am Laufen. Ich kann da nur auf die Anleitung in meiner Signatur verweisen, da zeige ich auf, wie man AdGuard mit unbound installiert und einrichtet. pihole habe ich nicht im Einsatz. Bei mir läuft alles im Host-Netz ohne MACVLAN oder Bridge. D.h. hier musste ich auch den Port verbiegen.
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.519
Punkte für Reaktionen
404
Punkte
103
Dazu ein bisschen gegoogelt und rausgefunden, dass wohl nur der User root Ports unter 1000 binden darf
Das ist nur ein Problem, wenn der Prozess im Container nicht als root ausgeführt wird, was wiederum nur ein Problem ist, wenn der Container im Host-Network (=keine Networknamespace Isolation; Konsequenz: Container kann nicht gleichzeitig in einem Containernetzwerk sein) oder eben in einem Macvlan/ipvlan Netzwerk ist.

Wenn der Container ein bridge Netzwerk verwendet, dann ist es herzlich egal auf welchem Port der Prozess im Container lauscht, da man das dann eh über das Port-Mapping vom Host-Port zum Container-Port glattziehen kann.
Da sagt mir der Container Manager aber nun, dass ich sysctl nicht verwenden dürfe
Man könnte es sicherlich über einen privileged Container lösen, da dieser dann Wert für den Host-Kernel setzen kann. Es betrifft dann allerdings nicht nur diesen Container, sondern den Kernel der Syno und damit das eigentliche System und alle Container. Ich rate ausdrücklich(!) davon ab Container im privleged mode zu betreibgen, da diese eine sehr schwache Isolation haben und man aus diesen relativ einfach ausbrechen kann.

Man könnte sysctl ad-hoc in einer root-shell der Syno verwenden, allerdings ist die Änderung nach einem Neustart des Systems weg und muss erneut angewendet werden.
Um es Dauerhaft zu machen, muss man es in /etc.defaults/sysctl.conf eintragen, sodass es bei jedem Neustart angewandt wird. Zusätzlich sollte man es auch in /etc/sysctl.conf eintragen, damit man es ohne die Kiste neu starten zu müssen per sysctl -p laden lassen kann.

Das betrifft dann natürlich auch den Host-Kernel und somit das System und alle Container.

Bitte verstehe das nicht als Aufforderung es so zu machen. Ich persönlich würde es nicht machen und rate auch nicht dazu es zu machen.
 
  • Like
Reaktionen: jaydee73

jaydee73

Benutzer
Mitglied seit
07. Sep 2015
Beiträge
51
Punkte für Reaktionen
8
Punkte
8
Danke @haydibe für deine ausführliche Erklärung! Ich werde das auch, wie von dir empfohlen, nicht so machen.

Ich konnte den von mir verwendeten unbound-Container (crazymax/unbound) zwar jetzt ohne besagten Fehler starten, aber trotzdem hat er weiter auf #5053 gelauscht. Keine Ahnung, was da im Image hardcodiert ist...

Daher habe ich nun mal ein anderes Image (klutchell/unbound) ausprobiert. Das funktioniert problemlos auf Port 53. Damit muss ich dann in pihole keinen Port mehr angeben beim Custom_DNS_Feld und beim Update ist das Problem damit auch weg. Ziel erreicht.

Ich hatte das Klutchell-Image schon mal ausprobiert, fand es aber irgendwie merkwürdig, dass es distroless ist und ich somit nicht auf die Shell im Container komme. Das fühlte sich irgendwie komisch an, weil ich so nichts "nachschauen" konnte.

Aber egal, ich bleibe jetzt erstmal bei diesem Image.

@plang.pl : Ich kenne deine hervorragende Anleitung zu Adguard & unbound. Aber auch da gilt: Adguard ist mir irgendwie nicht so ans Herz gewachsen wie pihole. Daher bleibe ich aktuell bei pihole.
 

EinMensch

Benutzer
Mitglied seit
19. Feb 2014
Beiträge
31
Punkte für Reaktionen
0
Punkte
6

@jaydee73​

Ich habe genau das so wie du am laufen. Pihole mit unbound über Macvlan. Du brauchst den Port nicht angeben, das macht Pihole automatisch. Ich habe das nach der Anleitung von Navigio (Youtube) installiert und mit dnssec nochmals aufgepeppt.​

 

plang.pl

Benutzer
Contributor
Sehr erfahren
Maintainer
Mitglied seit
28. Okt 2020
Beiträge
15.029
Punkte für Reaktionen
5.400
Punkte
564
Ich verwende das Image mvance/unbound:latest
 

plang.pl

Benutzer
Contributor
Sehr erfahren
Maintainer
Mitglied seit
28. Okt 2020
Beiträge
15.029
Punkte für Reaktionen
5.400
Punkte
564
Der Navigio-Typ macht das bestimmt auch (wie immer über MACVLAN). Das habe ich noch nie verstanden, warum man alles über MACVLAN machen will
 

jaydee73

Benutzer
Mitglied seit
07. Sep 2015
Beiträge
51
Punkte für Reaktionen
8
Punkte
8
Hatte ich auch mal ausprobiert...irgendwas fand ich da aber auch doof....weiß nicht mehr genau, was das war.

Den Navigio-Typen kenne ich auch und habe auch eine Meinung zu dem... ;-)
 


 

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