Korrektur: Warum ich künftig lieber über nftables schreibe

  Lars Müller   Lesezeit: 2 Minuten  🗪 13 Kommentare Auf Mastodon ansehen

In meinen letzten Artikeln ging es um iptables. Doch ich habe inzwischen gelernt: nftables ist längst der moderne Standard. Ein persönlicher Nachtrag.

korrektur: warum ich künftig lieber über nftables schreibe

 In den letzten 2 Wochen habe ich mich mit dem Thema Firewalls unter Linux beschäftigt. Entstanden ist dabei meine kleine Artikelserie rund um iptables und iptables-persistent. Ich habe viele Rückmeldungen erhalten — aber auch viele Hinweise der Leser das ich doch lieber was zu Nftables schreiben sollte. Dem komme ich nun nach.

Mehrere Leserinnen und Leser haben mich darauf aufmerksam gemacht, dass iptables streng genommen eigentlich schon der Vergangenheit angehört. Und sie haben vollkommen recht: Die aktive Weiterentwicklung von iptables ist eingestellt. Der moderne Nachfolger heißt schon seit Jahren nftables.

Ein bisschen persönlicher Hintergrund

Bisher habe ich auf meinen Systemen immer ufw genutzt — die „Uncomplicated Firewall“. Diese abstrahiert viele Details und bietet einfache Befehle wie:

ufw allow 22/tcp

Dadurch habe ich mich nie wirklich intensiv mit den darunterliegenden Technologien beschäftigt. Als ich mich für die Artikelserie an iptables orientiert habe, dachte ich: Das ist doch der Klassiker, das nutzt man heute immer noch. Doch tatsächlich sieht die Realität heute anders aus.

Was hat sich geändert?

Seit einigen Jahren (ca. 2009)  setzen alle größeren Distributionen standardmäßig auf nftables. Viele Distributionen liefern zwar noch die klassischen iptables-Befehle aus, doch diese nutzen im Hintergrund bereits die nftables-Technologie — meist über ein Kompatibilitätswerkzeug namens iptables-nft.

Kurz gesagt:

  • nftables ist der moderne Kernel-Subsystem-Nachfolger von iptables, ip6tables, arptables und ebtables — alles wurde vereinheitlicht.

  • Es gibt eine einheitliche Syntax für IPv4, IPv6, NAT und Filter.

  • Die Regeln sind klarer strukturiert, besser wartbar und deutlich flexibler.

Warum ich diese Korrektur schreibe

Ich halte es für wichtig, transparent zu bleiben. Meine bisherigen iptables-Artikel sind inhaltlich korrekt — sie funktionieren auf Systemen, die noch iptables unterstützen oder Kompatibilitätsschichten nutzen. Aber ich werde mich in zukünftigen Artikeln ganz bewusst auf nftables konzentrieren, weil dies der aktuelle und zukunftssichere Standard ist.

Denn auch ich lerne dabei mit. Und genau dafür schreibe ich diese Blogartikel: nicht nur, um Wissen zu teilen, sondern auch, um selbst immer wieder neues Wissen aufzubauen.

Und wie geht es jetzt weiter?

Im nächsten Artikel werde ich erklären:

  • Was nftables ist und wie man es einrichtet und Regeln setzt.

Danke für die vielen wertvollen Rückmeldungen

Quellen: Linux-community, Wiki nftables

Ich
Geschrieben von Ich am 23. Juni 2025 um 11:31

Das ist sehr schön, vielen Dank für die Klarstellung und den hoffnungsfrohen Ausblick. Mir ist aufgefallen, dass docker unter debian linux eine Abhängigkeit zu iptables hat(te), und deswegen nftables-Installationen davon stark beeinträchtigt waren. Vielleicht wäre das auch ein spannendes Thema: docker und nftables? Oder vielleicht ist das schon längst gelöst und wird bei trixie keine Rolle mehr spielen? Ich habe leider keine Zeit, das zu recherchieren, aber den Artikel dazu würde ich lesen. :)

kamome
Geschrieben von kamome am 23. Juni 2025 um 17:28

Leider ist iptalbes auch weiterhin als dep von docker.io in trixie drin (sogar in sid): https://packages.debian.org/trixie/docker.io

Lars Müller
Geschrieben von Lars Müller am 28. Juni 2025 um 08:50

Hi, das war mein Problem. So musste ich Docker.io komplett entfernen und neu installieren, mit nftables gab es da Probleme auf einer Debian Maschine.

👓
Geschrieben von 👓 am 23. Juni 2025 um 12:52

Danke 👍

Max
Geschrieben von Max am 23. Juni 2025 um 13:39

Ich denke ufw ist für einen einfachen stand alone Server völlig ausreichend. Das Problem mit ufw ist aber, dass es nicht mit docker compatibel ist.

Docker setzt einige Einträge mittels iptables (oder eben mit iptables-nft). Wenn man jetzt (so meine oberflächliche Recherche) selbst Einträge mit ufw oder auch nft setzt, kommt man mit den docker Einträgen in die Quere. Nft löst dieses Problem also nicht (iptables aber schon).

Verwendet man docker, scheint man an das iptables Interface gebunden zu sein. (Entweder nativ oder mit iptables-nft)

Für einfache Server ohne docker genügt ufw.

Für komplexere Setups (aber ohne docker) ist nft die richtige Wahl.

Soweit meine Recherche. Ich lasse mich gerne korrigieren. Ich bin gerade auch erst am Erfahrung sammeln mit der Kombination docker+Firewall. Über einen Artikel, der Licht ins Dunkel bringt würde ich mich sehr freuen :D

André
Geschrieben von André am 25. Juni 2025 um 01:38

ufw ist nur ein wrapper, wie im Artikel geschrieben. Eine Abstraktions-Ebene. Darunter wird nft und/oder iptables angesprochen. ^^

Max
Geschrieben von Max am 25. Juni 2025 um 12:32

"nur" ist gut. Das ist ja gerade die Quelle des Problems. Beide, ufw und docker, modifizieren die iptables. Ohne gegenseitig Rücksicht aufeinander zu nehmen. Das führt dazu, dass docker Einträge schreibt, die man mit ufw nicht mehr in den Griff bekommt. Man denkt also man hat mit ufw einen Port blockiert, in Wirklichkeit hat docker ihn aber geöffnet. Ohne direkt auf die iptables Einträge zu schauen, was man nicht macht wenn man einen wrapper benutzt, bleibt der Fehler unbemerkt.

Ich hab gerade gesehen, es gibt ein Programm namens "ufw-docker", das das Problem lösen möchte. Keine Ahnung wie gut das funktioniert.

Eine andere Möglichkeit wäre es, in docker die iptables=false zu setzen und nur die benötigten Einträge manuell zu konfigurieren. (Und docker nicht automatisch die iptables modifizieren zu lassen)

Die beste Lösung ist es wirklich, einen dedizierten Host als Firewall zu haben und jeglichen Traffic nur über den laufen zu lassen. Aber für Einzelserver ist das nicht wirklich praktikabel.

André
Geschrieben von André am 25. Juni 2025 um 22:51

Das ist ein bekanntes Problem von Docker. Daher wird, wenn möglich, auf ein rootless podman gesetzt bei modernen Umgebungen. Podman hat das per Design eleganter. Zumindest kenne ich diese Probleme dort nicht.

Lars Müller
Geschrieben von Lars Müller am 28. Juni 2025 um 08:56

Genau das ist das Problem.„ Das führt dazu, dass docker Einträge schreibt, die man mit ufw nicht mehr in den Griff bekommt. Man denkt also man hat mit ufw einen Port blockiert, in Wirklichkeit hat docker ihn aber geöffnet“.

Wie ich festgestellt hatte beim Schreiben und testen das nach der Installation von nftables garnicht mehr ging mit Docker, so blieb mir nur die deinstallation von Docker sowie nftables, Leeren der Verzeichnisse sowie die erneute Installation von UFW, dann lief alles wieder. Debian/Docker sind abhängig von iptables.

Ergo teste ich nftables nicht mehr auf meinem Hauptserver. :-)

Gruß

Lars

LinuxHähnchen
Geschrieben von LinuxHähnchen am 23. Juni 2025 um 14:00

Hallo Lars, wieder was gelernt! Ich dachte auch immer, dass iptables noch immer der defacto Standard sei. Ich freue mich auf weitere Artikel. 👍

Beste Grüße, Das Hähnchen

Leo
Geschrieben von Leo am 23. Juni 2025 um 18:38

Unter Linux Mint 21.3 sind von vornherein iptables UND nftables installiert.

Wie ist denn das zu verstehen?

blackcrack
Geschrieben von blackcrack am 24. Juni 2025 um 08:38

und was heist nun N F -Tabbles ausgeschrieben, wenn man über was schreibt sollte man mindestens einmal den Vollen Namen schreiben, damit der Leser auch dazu lernt.. und wie ist überhaupt N F Tables enstanden ? und woher ..

liebe grüße Blacky

André
Geschrieben von André am 24. Juni 2025 um 12:03

1nice! Erwachsene und schöne Reaktion :)