Docker und nftables: Netzwerke ohne Chaos konfigurieren

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 -p verwendet 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 --network fü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.

Related Articles