Docker Container Netzwerkeinbindung Methoden

polyphase

Commander
Registriert
Dez. 2010
Beiträge
2.778
Ich bin gerade an der Planung meines produktiv Docker Systems. Da ich auf längere Sicht meine Synology Diskstations ersetzen möchte.

Vorab, ich habe aktuell ein Testsystem (VM) laufen, in dem ich einige Container über Ports und der IP des Hosts zur Verfügung stelle und andere Container über macvlan und damit eine eigene IP.


Meine Netzwerkstruktur zum aktuellen Zeitpunkt sieht so aus:

Firewall
--> Management Vlan (Proxmox Server, Switches, AccesPoints usw.)
--> Standard Vlan (PCs, Notebooks, Smartphones, Tablets usw.)
--> IoT Vlan (3D Drucker, Shellys, Tasmota Steckdosen, FireTV Sticks usw.)
--> Gast Vlan (Gast Wlan, Gast Lan-Ports)
--> Test Vlan (an dem auch die Ubuntu Server VM inkl. Docker hängt)

Entsprechend gibt es Regeln, wie entsprechende Geräte und IPs zwischen den Vlans und den dahinter stehenden Geräten kommunizieren dürfen.



Jetzt bin ich dabei die Docker-Netzwerkstruktur zu planen, hier habe ich mir zwei Konzepte überlegt.

  1. alles über eigene Ports des Docker Hosts:
    Im Grunde der Standardweg, jeder Container nutzt nur bestimmte Ports über die Host IP.
    Das hat aber den folgenden Nachteil, das alles über eine IP läuft und dort die Absicherung über die Firewall des Netzwerks verkompliziert. Die Reglen zwischen den einzelnen Vlans wären dann auch noch Port bezogen.

  2. alle Container bekommen eine eigene IP über macvlan:
    Ermöglicht einfachere Firewallregeln zwischen den Vlans. Hat aber den Nachteil, das die konfiguration der Docker Container aufwendiger wird.

Im Grunde bleibt der Konfigurationsaufwand recht ähnlich, egal welche Methode. Wie würdet ihr das lösen, bzw. habt ihr das gelöst?
 
[Laienantwort]
Je nach Docker Service muss oftmals eine IP vergeben werden - andere male reicht host+port

Ich würde einen Mischbetrieb laufen lassen
 
  • Gefällt mir
Reaktionen: polyphase
Ich nutze traefik und Portainer zur Verwaltung meiner Container.

Über traefik bekommt jeder meiner Container eine URL ala nextcloud.domain.int, samt SSL-Zertifikat. Port ist dann immer 443 und der Traffic läuft über meine traefik-Instanz (eigener Container).

Infos hier: https://www.smarthomebeginner.com/traefik-docker-compose-guide-2022/
 
was für Container willst du denn da laufen lassen und wie soll die Kommunikation zwischen denen und nach draußen stattfinden?

"normal" wäre doch einen Reverse Proxy wie Traefik da "einzubauen" und den das (zumindest zum Teil) "managen zu lassen"?!?
 
  • Gefällt mir
Reaktionen: madmax2010
Einen Reverse Proxy nutze ich schon inkl. Domain und SSL Zertifikat, da verwende ich den Nginx Proxy Manager Container welcher aktuell noch über die Host IP läuft + Portweiterleitung.

Jetzt habe ich aber auch einen Container wie pihole, welcher aus allen Netzwerken auf Port 53 und aus bestimmten Netzwerken auch über Port 80 erreichbar sein muss. Das habe ich aktuell so gelöst, das dieser Container macvlan und damit eine eigene IP nutzt. Dadurch kann ich recht simple Regeln in der Firewall konfigurieren.

Jetzt würde ich das Admin Interface auch gerne über eine SSL gesicherte Domain erreichen. Ist aktuell nicht möglich, da der Nginx Proxymanager nicht auf das Pihole zugreifen kann, Sicherheitmechanismus von Docker, da darf der Host nicht auf die macvlan IPs zugreifen.

Wichtig zu wissen ist, das es keine Portweiterleitung nach außen gibt, alles läuft intern oder über VPN. Der Nginx Proxy Manager verwendet die DNS Challange, sodass das Lets Encrypt Zertifikat ohne offene Ports erstellt udn aktualisiert werden kann.


Container wedne zukünftig sein:
  • pihole
  • unbound
  • Unfifi Controller
  • Nextcloud
  • ggf. Joplin (wenn nextcloud nicht rund läuft)
  • ggf. caldav Server (wenn nextcloud nicht rund läuft)
  • Jellifin oder anderer DLNA Server

EDIT:
Es laufen auch andere Dienste über den Nginx Proxy Manager, welche nicht in Docker laufen.
 
Zuletzt bearbeitet:
Zurück
Oben