Docker nutzt standardmäßig iptables zur Steuerung von Container-Netzwerken, doch viele moderne Linux-Distributionen setzen zunehmend auf nftables. Dieses leistungsfähige Framework ermöglicht fein granulare Kontrolle über Netzwerktraffic, NAT und Firewall-Regeln. In diesem Tutorial erfahren Sie, wie Sie Docker-Netzwerke sauber mit nftables konfigurieren, typische Fallen vermeiden und eine sichere, wartbare Container-Infrastruktur aufbauen.
Warum nftables für Docker?
nftables ersetzt das traditionelle iptables und bietet Vorteile:
- Einheitliche Syntax für Filter, NAT und Mangle
- Effiziente Regelverwaltung und bessere Performance
- Unterstützt Sets, Maps und dynamische Regeln
- Kompatibel mit bestehenden Docker-Netzwerken über
--iptables-Option
Docker-Netzwerke verstehen
Docker erstellt beim Start von Containern automatisch Bridges und NAT-Regeln:
- bridge: Standardnetzwerk für Container auf einem Host
- host: Container teilen das Netzwerk des Hosts
- overlay: Ermöglicht Container-Kommunikation über mehrere Hosts
Typische Fallstricke
- Docker überschreibt nftables-Regeln bei automatischem iptables-Einsatz
- Standardmäßig sind alle Container auf der
docker0-Bridge miteinander erreichbar - Externe Ports werden automatisch geöffnet, wenn
-pverwendet wird
Docker mit nftables statt iptables
Um Konflikte zu vermeiden, können Sie Docker starten, ohne dass es Regeln selbst verwaltet:
sudo dockerd --iptables=false
- Docker manipuliert die Firewall nicht automatisch
- Alle Regeln werden über nftables gepflegt
- Erlaubt volle Kontrolle über NAT, Filter und Forwarding
nftables Grundkonfiguration für Docker
Ein einfaches Setup umfasst die Definition von Tabellen, Chains und NAT:
sudo nft add table inet docker
sudo nft add chain inet docker input { type filter hook input priority 0 ; policy drop ; }
sudo nft add chain inet docker forward { type filter hook forward priority 0 ; policy drop ; }
sudo nft add chain inet docker output { type filter hook output priority 0 ; policy accept ; }
- Input/Forward Chains standardmäßig blocken
- Nur explizit erlaubte Ports oder Container-Kommunikation zulassen
- Output standardmäßig erlaubt, Container initiieren ausgehende Verbindungen
Port-Forwarding für Container
sudo nft add rule inet docker input tcp dport 80 accept
sudo nft add rule inet docker input tcp dport 443 accept
sudo nft add rule inet docker forward iif "eth0" oif "docker0" tcp dport 80 accept
sudo nft add rule inet docker forward iif "eth0" oif "docker0" tcp dport 443 accept
- Externe HTTP/HTTPS-Zugriffe nur auf explizit freigegebene Ports
- Verhindert unkontrollierten Zugriff auf andere Container
Interne Container-Kommunikation
Um Container auf derselben Bridge miteinander kommunizieren zu lassen:
sudo nft add rule inet docker forward iif "docker0" oif "docker0" accept
- Erlaubt Container-zu-Container-Verkehr innerhalb der Bridge
- Verhindert, dass diese Container ohne weitere Regeln auf das Host-System zugreifen
NAT für ausgehenden Traffic
Damit Container das Internet erreichen:
sudo nft add table ip nat
sudo nft add chain ip nat postrouting { type nat hook postrouting priority 100 ; }
sudo nft add rule ip nat postrouting oif "eth0" ip saddr 172.17.0.0/16 masquerade
- 172.17.0.0/16 ist typisches Docker-Bridge-Subnetz
- Masquerading ermöglicht NAT für Container ohne Root-Privilegien
Persistenz und Best Practices
- nftables-Regeln persistent speichern:
sudo nft list ruleset > /etc/nftables.conf - Beim Systemstart laden:
sudo nft -f /etc/nftables.conf - Docker-Container starten mit
--networkfür explizite Netzwerke - Least Privilege anwenden: Capabilities einschränken, read-only Filesysteme verwenden
- Monitoring und Logging aktivieren, um ungewöhnlichen Traffic zu erkennen
- Regelmäßig Updates für Docker, Kernel und nftables durchführen
Debugging und Monitoring
Verwenden Sie folgende Befehle, um Regeln und Traffic zu prüfen:
sudo nft list ruleset
docker network ls
docker ps --format '{{.Names}} {{.Ports}}'
sudo nft monitor
- Listet alle Regeln und deren Counter
- Monitor zeigt Echtzeit-Traffic und Drop-Aktionen
- Hilft, Konflikte oder Fehlkonfigurationen zu identifizieren
Zusammenfassung
nftables ermöglicht eine klare und leistungsfähige Firewall-Konfiguration für Docker-Container. Durch Deaktivierung der Docker-iptables, gezielte Forwarding- und NAT-Regeln, sowie Isolierung von Container-Netzwerken lassen sich Container sicher betreiben. Persistenz, Monitoring, Least Privilege und regelmäßige Updates ergänzen die Sicherheitsstrategie und sorgen für eine stabile, wartbare Infrastruktur.
Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab/GNS3
Ich biete professionelle Unterstützung im Bereich Netzwerkkonfiguration und Network Automation für private Anforderungen, Studienprojekte, Lernlabore, kleine Unternehmen sowie technische Projekte. Ich unterstütze Sie bei der Konfiguration von Routern und Switches, der Erstellung praxisnaher Topologien in Cisco Packet Tracer, dem Aufbau und Troubleshooting von GNS3- und EVE-NG-Labs sowie bei der Automatisierung von Netzwerkaufgaben mit Netmiko, Paramiko, NAPALM und Ansible. Kontaktieren Sie mich jetzt – klicken Sie hier.
Meine Leistungen umfassen:
-
Professionelle Konfiguration von Routern und Switches
-
Einrichtung von VLANs, Trunks, Routing, DHCP, NAT, ACLs und weiteren Netzwerkfunktionen
-
Erstellung von Topologien und Simulationen in Cisco Packet Tracer
-
Aufbau, Analyse und Fehlerbehebung von Netzwerk-Labs in GNS3 und EVE-NG
-
Automatisierung von Netzwerkkonfigurationen mit Python, Netmiko, Paramiko, NAPALM und Ansible
-
Erstellung von Skripten für wiederkehrende Netzwerkaufgaben
-
Dokumentation der Konfigurationen und Bereitstellung nachvollziehbarer Lösungswege
-
Konfigurations-Backups, Optimierung bestehender Setups und technisches Troubleshooting
Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.











