Container-Netzwerke: Bridge, macvlan und Overlay im Vergleich
AI generated
$
/etc
Linux
Container-Netzwerke: Bridge, macvlan und Overlay im Vergleich
Wie Docker- und Podman-Netzwerktreiber unter der Haube arbeiten

Die Wahl des Netzwerktreibers entscheidet darüber, ob Container über NAT hinter einer gemeinsamen Host IP verschwinden, mit eigener MAC Adresse direkt im physischen Netz auftauchen oder über mehrere Hosts hinweg transparent miteinander kommunizieren. Wer diese drei Modelle nicht sauber unterscheidet, produziert entweder unnötige Performance Verluste oder unerwartete Sicherheitslücken im Produktivbetrieb.

11 Min. Lesezeit Linux Container Netzwerk

1. Wie das Standard-Bridge-Netzwerk funktioniert

Der Bridge Treiber ist bei Docker und Podman der Standard und basiert auf einer Linux Bridge, einem virtuellen Layer 2 Switch im Kernel, an den jeder Container über ein virtuelles Ethernet Paar (veth) angebunden wird. Eine Seite des veth Paars steckt im Network Namespace des Containers als eth0, die andere Seite hängt als Port an der Bridge auf dem Host, üblicherweise docker0 oder eine benutzerdefinierte Bridge pro Netzwerk.

Container innerhalb derselben Bridge erhalten private IP Adressen aus einem intern verwalteten Subnetz und erreichen sich untereinander direkt über Layer 2, während der Zugriff nach außen über NAT läuft: Der Host übersetzt ausgehenden Traffic per iptables MASQUERADE Regel auf seine eigene IP, und eingehender Traffic muss über explizites Port Publishing (-p 8080:80) durchgereicht werden. Das ist einfach einzurichten und funktioniert praktisch überall, kostet aber bei jedem Paket eine zusätzliche NAT Übersetzung und verbirgt die tatsächliche Container IP vor dem restlichen Netzwerk.


# Benutzerdefiniertes Bridge Netzwerk anlegen und Container anbinden
docker network create --driver bridge --subnet 172.20.0.0/24 shop-net
docker run -d --name shop-php --network shop-net -p 127.0.0.1:9000:9000 php-fpm:8.4

# Bridge und veth Paare auf dem Host inspizieren
ip link show type bridge
bridge link show

2. macvlan: Eigene MAC-Adresse und eigene IP im physischen Netz

Der macvlan Treiber verzichtet komplett auf NAT und die interne Bridge: Jeder Container erhält eine eigene, vom Kernel generierte MAC Adresse und hängt darüber direkt am physischen Netzwerk Interface des Hosts, als wäre er ein eigenständiges Gerät im selben Subnetz. Damit lässt sich dem Container eine reguläre IP Adresse aus dem produktiven Netzwerk zuweisen, sichtbar und erreichbar für jeden anderen Host im selben Layer 2 Segment, ganz ohne Port Publishing oder NAT Übersetzung.

Das eliminiert den NAT Overhead vollständig und macht Container im Netzwerk Monitoring genauso sichtbar wie physische Server, was in regulierten Umgebungen mit strikten Firewall Regeln pro IP oft explizit gefordert ist. Der Preis ist geringere Flexibilität: macvlan Container können in den meisten Standardkonfigurationen nicht direkt mit dem Host selbst kommunizieren, weil der Kernel Traffic zwischen dem physischen Interface und dessen eigenen macvlan Kindern standardmäßig blockiert, ein als macvlan Bridge Isolation bekanntes Verhalten, das sich nur mit einem zusätzlichen macvlan Interface auf dem Host umgehen lässt.


# macvlan Netzwerk direkt am physischen Interface eth0 anlegen
docker network create -d macvlan \
  --subnet=192.168.10.0/24 --gateway=192.168.10.1 \
  -o parent=eth0 shop-macvlan

# Container mit fester IP aus dem produktiven Subnetz starten
docker run -d --name shop-web --network shop-macvlan \
  --ip=192.168.10.50 nginx:1.27-alpine

3. Der macvlan-Host-Kommunikationsfallstrick und seine Lösung

Weil der Host per Kernel Design nicht direkt mit seinen eigenen macvlan Kindern sprechen kann, scheitert ein naiver ping vom Host auf einen macvlan Container regelmäßig, was in der Praxis für Verwirrung sorgt, weil derselbe Container von jedem anderen Host im Netzwerk problemlos erreichbar ist. Die Standardlösung besteht darin, auf dem Host selbst ein zusätzliches macvlan Interface anzulegen, das im selben Subnetz liegt, aber als separates Layer 2 Gerät behandelt wird.

Dieses zusätzliche Interface erhält eine eigene IP außerhalb des Container Bereichs und kommuniziert dann korrekt sowohl mit dem Host als auch mit sämtlichen macvlan Containern, weil der Traffic in diesem Fall tatsächlich über das physische Netzwerk läuft statt intern im Kernel kurzgeschlossen zu werden. Für Monitoring Systeme, die vom selben Host aus Health Checks gegen Container IPs durchführen müssen, ist dieser Workaround in der Praxis unverzichtbar.


# Zusätzliches macvlan Interface auf dem Host für Host-Container Kommunikation
sudo ip link add macvlan-shim link eth0 type macvlan mode bridge
sudo ip addr add 192.168.10.9/24 dev macvlan-shim
sudo ip link set macvlan-shim up

# Jetzt vom Host aus erreichbar
ping -c1 192.168.10.50

4. Overlay-Netzwerke für Multi-Host-Kommunikation

Sowohl Bridge als auch macvlan sind grundsätzlich auf einen einzelnen Host beschränkt: Container auf unterschiedlichen Maschinen können sich über diese Treiber nicht direkt erreichen, es sei denn, der Host selbst leitet Traffic explizit weiter. Overlay Netzwerke lösen dieses Problem, indem sie ein virtuelles Layer 2 Netzwerk über mehrere physische Hosts hinweg aufspannen, technisch realisiert über VXLAN Kapselung, bei der jedes Layer 2 Frame in ein UDP Paket verpackt und über das darunterliegende physische Netzwerk zum Ziel Host transportiert wird.

In Docker Swarm oder Kubernetes übernimmt der Overlay Treiber diese Kapselung transparent: Container auf Host A und Host B, die demselben Overlay Netzwerk angehören, sehen sich gegenseitig als wären sie im selben lokalen Subnetz, unabhängig davon, über wie viele physische Netzwerksegmente der tatsächliche Traffic läuft. Das erfordert zusätzlich einen Key Value Store oder eingebauten Gossip Mechanismus zur Synchronisation der Netzwerkzustände zwischen den beteiligten Hosts.


# Overlay Netzwerk in einem Docker Swarm Verbund anlegen
docker network create -d overlay --attachable shop-overlay

# Service auf mehreren Nodes im selben Overlay Netzwerk deployen
docker service create --name shop-api \
  --network shop-overlay --replicas 3 shop-api:latest

5. VXLAN-Kapselung im Detail und ihre Kosten

Jedes Paket, das ein Overlay Netzwerk verlässt, wird vom sendenden Host in einen VXLAN Header eingepackt, der eine 24 Bit Netzwerk Kennung (VNI) sowie Quell und Ziel Informationen für den Tunnel enthält, bevor es als reguläres UDP Paket über Port 4789 an den Ziel Host geschickt wird. Der empfangende Host entpackt das Paket wieder und reicht das ursprüngliche Layer 2 Frame an den lokalen Container weiter, für den es bestimmt war.

Diese Kapselung kostet pro Paket etwa 50 Byte zusätzlichen Overhead und erzwingt eine kleinere effektive MTU als bei einer direkten Bridge Verbindung, was bei falsch konfigurierten Netzwerken zu Fragmentierung und spürbaren Performance Einbußen führen kann. In der Praxis empfiehlt es sich, die MTU auf beteiligten Interfaces explizit auf einen Wert wie 1450 statt der Standard 1500 zu setzen, um Fragmentierung von vornherein zu vermeiden.


# VXLAN Overhead durch reduzierte MTU auf dem Overlay Interface kompensieren
ip link set dev docker_gwbridge mtu 1450

# VXLAN Traffic auf dem Host mitschneiden zur Fehlersuche
sudo tcpdump -i eth0 udp port 4789 -nn

6. Performance-Unterschiede zwischen den drei Modellen

In Latenz und Durchsatz Messungen liegt macvlan durchweg am nächsten am nativen Host Netzwerk, weil weder NAT Übersetzung noch Tunnel Kapselung anfällt: Pakete verlassen den Container praktisch ungehindert über das physische Interface. Das Standard Bridge Netzwerk verliert durch die zusätzliche NAT Übersetzung und den iptables Verarbeitungsaufwand pro Paket messbar an Durchsatz, insbesondere bei sehr hohen Paketraten mit vielen kleinen Paketen, wie sie etwa bei Redis oder Memcached Workloads typisch sind.

Overlay Netzwerke zeigen den größten Overhead, weil zur NAT ähnlichen Verarbeitung noch die VXLAN Kapselung und Entkapselung auf beiden Seiten hinzukommt. Für Workloads mit hohem Netzwerk Durchsatz zwischen Hosts, etwa Datenbank Replikation oder große Datei Transfers zwischen Services, sollte diese zusätzliche Latenz explizit eingeplant werden, wenn keine dedizierte Hardware Beschleunigung wie VXLAN Offloading auf der Netzwerkkarte zur Verfügung steht.

7. Sicherheitsaspekte der drei Netzwerkmodelle

Beim Bridge Modell profitieren Container implizit von der NAT Isolation: Eingehender Traffic aus dem externen Netzwerk erreicht einen Container ausschließlich über explizit publizierte Ports, alles andere wird vom Host verworfen, bevor es überhaupt einen Container erreicht. Diese eingebaute Sicherheitsgrenze entfällt bei macvlan vollständig, weil jeder Container als eigenständiges Gerät im Netzwerk erscheint und deshalb genauso von externen Firewall Regeln oder Netzwerksegmentierung geschützt werden muss wie ein physischer Server.

Bei Overlay Netzwerken ist die Verschlüsselung des Tunnel Traffics ein oft übersehener Punkt: Docker Swarm bietet optionale IPsec Verschlüsselung für Overlay Netzwerke über das Flag --opt encrypted, die standardmäßig jedoch deaktiviert ist. Wer Overlay Netzwerke über ein nicht vollständig vertrauenswürdiges physisches Netzwerk betreibt, etwa zwischen Rechenzentren über eine gemietete Verbindung, sollte diese Verschlüsselung explizit aktivieren, da VXLAN Traffic sonst unverschlüsselt über die zugrunde liegende Infrastruktur läuft.


# Verschluesseltes Overlay Netzwerk für Traffic zwischen Rechenzentren
docker network create -d overlay --opt encrypted --attachable secure-overlay

8. DNS und Service Discovery je Netzwerkmodell

Im Standard Bridge Netzwerk lösen Container Namen anderer Container über einen eingebauten DNS Server auf, den Docker und Podman auf einer internen Adresse innerhalb des jeweiligen Netzwerks bereitstellen, sodass ein Dienst einen anderen einfach über dessen Containername statt über eine fest verdrahtete IP erreichen kann. Diese Namensauflösung funktioniert automatisch für alle Container im selben benutzerdefinierten Bridge Netzwerk, jedoch nicht im veralteten Default Bridge Netzwerk ohne eigenen Namen, wo weiterhin nur die Verknüpfung über explizite Links funktioniert.

Bei macvlan entfällt diese eingebaute Namensauflösung, weil Container hier wie eigenständige Geräte im physischen Netzwerk auftreten und deshalb dieselbe DNS Infrastruktur wie andere Server im Netz benötigen, etwa einen zentralen internen DNS Dienst oder statische Hosts Einträge. Overlay Netzwerke bringen wiederum eine eigene, Cluster weite Namensauflösung mit, die Dienste über mehrere Hosts hinweg konsistent auflöst, was für Multi Host Setups mit dynamisch skalierenden Services ein entscheidender Vorteil gegenüber reinem macvlan ist.


# Interne DNS Aufloesung im Bridge Netzwerk testen
docker exec shop-php getent hosts shop-db

# Overlay Service über seinen Namen aus einem anderen Container erreichen
docker exec shop-api getent hosts shop-cache

9. Praxisempfehlung für Magento-Hosting-Umgebungen

Für einen klassischen Single Host Magento Stack aus PHP FPM, Nginx, MySQL und Redis ist das Standard Bridge Netzwerk fast immer die richtige Wahl: Die interne Kommunikation zwischen den Services bleibt vollständig innerhalb des Hosts, NAT Overhead spielt bei diesen Paketraten kaum eine Rolle, und die eingebaute Isolation reduziert die externe Angriffsfläche auf explizit veröffentlichte Ports wie 443.

macvlan lohnt sich dagegen gezielt für einzelne Services, die im internen Netzwerk mit einer eigenen, festen IP sichtbar sein müssen, etwa ein dediziertes Monitoring Interface oder ein Legacy System, das IP basierte Zugriffskontrolle voraussetzt statt Port basierter Regeln. Overlay Netzwerke werden erst relevant, sobald der Stack über mehrere physische oder virtuelle Hosts verteilt wird, etwa bei einem Cluster mit getrennten Datenbank und Applikations Nodes, wo die Multi Host Transparenz den zusätzlichen VXLAN Overhead in aller Regel rechtfertigt.

Kriterium Bridge macvlan Overlay
Scope einzelner Host einzelner Host, physisches Netz mehrere Hosts (Multi Host)
Eigene IP im LAN nein, NAT hinter Host IP ja, echte Layer 2 IP ja, virtuelles Layer 2 Netz
Overhead pro Paket NAT Übersetzung, gering praktisch keiner VXLAN Kapselung, ca. 50 Byte
Host-Container Kommunikation nativ möglich erfordert zusätzliches Shim Interface nativ möglich
Typischer Einsatz Single Host Stacks, Standardfall IP basierte Zugriffskontrolle, Monitoring Cluster über mehrere Hosts

Mironsoft

Server-Administration, Docker-Hosts und Performance-Tuning

Linux-Server, die niemand im Team richtig versteht?

Wir übernehmen Setup, Absicherung und Performance-Tuning von Linux-Servern und Docker-Hosts für Magento-Deployments, dokumentiert und nachvollziehbar statt gewachsen und unklar.

Server-Audit

Bestehende Server-Konfiguration auf Sicherheitslücken und Performance-Bremsen prüfen.

Docker-Host-Setup

Produktionsreife Docker-Umgebungen für Magento sauber aufsetzen und absichern.

Monitoring & Tuning

Ressourcenverbrauch messen und Systemd, Kernel und Dienste gezielt optimieren.

10. Zusammenfassung

Container-Netzwerke

Bridge

Standardfall für Single Host Stacks, NAT basierte Isolation

macvlan

Eigene MAC und IP pro Container, kein NAT Overhead

Overlay

VXLAN basiertes Layer 2 Netz über mehrere Hosts hinweg

Groesster Fallstrick

macvlan Host Kommunikation ohne zusätzliches Shim Interface

11. FAQ: Container-Netzwerke

1Welcher Netzwerktreiber ist der Standard bei Docker und Podman?
Bridge ist bei beiden der Standardtreiber. Ohne explizite Angabe eines anderen Treibers landen neu erstellte Container automatisch in einem Bridge Netzwerk mit NAT basiertem Zugriff nach außen.
2Warum kann der Host nicht direkt mit einem macvlan Container sprechen?
Der Linux Kernel blockiert per Design Traffic zwischen einem physischen Interface und dessen eigenen macvlan Kindern. Die Lösung ist ein zusätzliches macvlan Shim Interface auf dem Host, das als separates Layer 2 Geraet behandelt wird.
3Wann lohnt sich macvlan gegenueber dem Standard Bridge Netzwerk?
Immer dann, wenn ein Container eine echte, im lokalen Netzwerk sichtbare IP Adresse benoetigt, etwa für IP basierte Firewall Regeln, Legacy Systeme oder Monitoring Tools, die Container wie physische Server behandeln sollen.
4Was ist VXLAN und wofuer wird es bei Overlay Netzwerken gebraucht?
VXLAN kapselt Layer 2 Frames in UDP Pakete und transportiert sie über ein bestehendes IP Netzwerk zum Ziel Host. Das erlaubt es, ein virtuelles Layer 2 Netzwerk über mehrere physische Hosts hinweg aufzuspannen, unabhaengig von der darunterliegenden Netzwerktopologie.
5Wie groß ist der Performance Verlust durch Overlay Netzwerke?
Der VXLAN Overhead liegt bei etwa 50 Byte pro Paket und reduziert die effektive MTU. Bei falsch konfigurierter MTU kann zusätzlich Fragmentierung auftreten, weshalb eine explizite MTU Anpassung auf 1450 empfohlen wird.
6Sind Overlay Netzwerke standardmaessig verschluesselt?
Nein, Docker Swarm Overlay Netzwerke sind ohne explizite Konfiguration unverschluesselt. Verschluesselung lässt sich mit dem Flag --opt encrypted beim Anlegen des Netzwerks aktivieren, was besonders bei Traffic über ungesicherte Verbindungen wichtig ist.
7Braucht macvlan Portfreigaben wie das Standard Bridge Netzwerk?
Nein, weil macvlan Container direkt eine eigene IP im physischen Netz erhalten, entfaellt Port Publishing komplett. Jeder Dienst ist über die zugewiesene IP und den regulaeren Port direkt erreichbar, ohne NAT Weiterleitung.
8Welches Netzwerkmodell eignet sich für einen Single Host Magento Stack?
In den allermeisten Fällen das Standard Bridge Netzwerk, weil die interne Kommunikation zwischen PHP FPM, MySQL und Redis vollstaendig innerhalb des Hosts bleibt und die eingebaute NAT Isolation die externe Angriffsflaeche sinnvoll reduziert.
9Kann ich Bridge und macvlan Netzwerke gleichzeitig für verschiedene Container nutzen?
Ja, ein Container kann sogar mehrere Netzwerke unterschiedlichen Typs gleichzeitig verwenden. Typisch ist etwa ein interner Bridge Anschluss für Datenbankzugriff kombiniert mit einem macvlan Anschluss für eine dedizierte, extern sichtbare IP.
10Wann werden Overlay Netzwerke für ein Hosting Setup relevant?
Sobald Container Workloads auf mehrere physische oder virtuelle Hosts verteilt werden, etwa in einem Cluster mit getrennten Datenbank und Applikations Nodes, weil Bridge und macvlan beide auf einen einzelnen Host beschraenkt sind und keine native Multi Host Kommunikation bieten.