NetworkGuide

iptables vs nftables : antisèche pare-feu Linux

Sur cette page
  1. Tout sur un écran : tâche, iptables, nftables
  2. Le côté iptables, les commandes qu'on dégaine
  3. Le côté nftables, les commandes nft natives
  4. Vous n'êtes pas obligé de réécrire les règles à la main
  5. Et après
  6. Sources

iptables vs nftables, la question tombe à la seconde où vous vous connectez en SSH sur une machine, devez ouvrir un port ou voir ce qui est déjà autorisé, et la mémoire dans vos doigts tape iptables. Puis la moitié d'internet vous dit qu'iptables est mort et qu'il faut passer à nftables. Alors c'est lequel ? Les deux, franchement. Voici le côte à côte, les commandes exactes pour chacun, et le seul fait qui enlève toute la panique : sur une distrib moderne votre commande iptables parle très probablement déjà à nftables, juste via une couche de compatibilité. Alors mettons les deux l'un à côté de l'autre et arrêtons de nous tordre les mains.

The short answer

Les mêmes tâches de pare-feu dans les deux dialectes : lister avec iptables -L -n -v ou nft list ruleset, autoriser SSH avec iptables -A INPUT -p tcp --dport 22 -j ACCEPT ou nft add rule inet filter input tcp dport 22 accept, refus par défaut avec iptables -P INPUT DROP ou policy drop, persister vers rules.v4 ou un nftables.conf à plat, et convertir les anciennes règles avec iptables-translate plutôt que de les retaper.

6 tâchesmappées dans les deux sens
1 moteurnftables en dessous
0 ressaisieiptables-translate le fait
Fiche réponse faisant correspondre les mêmes tâches de pare-feu entre iptables et nftables : lister, autoriser SSH, refus par défaut, persister et traduire.
Les mêmes tâches de pare-feu, dans les deux dialectes, alignées pour les lire en travers. PNG

Vous vous connectez en SSH sur une machine, vous devez ouvrir un port ou voir ce qui est déjà autorisé, et la mémoire dans vos doigts tape iptables. Puis la moitié d'internet vous dit qu'iptables est mort et que vous devriez utiliser nftables. Alors c'est lequel ? Les deux, franchement. Voici le côte à côte, les commandes exactes pour chacun, et le seul fait qui enlève toute la panique : sur une distrib moderne votre commande iptables parle très probablement déjà à nftables, juste via une couche de compatibilité. Alors mettons les deux l'un à côté de l'autre et arrêtons de nous tordre les mains.

Petite mise au point. nftables est le cadre plus récent qui a remplacé l'ancien moteur iptables dans le noyau Linux. La commande nft est son interface native. iptables est l'outil classique sur lequel tout le monde a appris les pare-feux, et sur la plupart des systèmes actuels le binaire iptables est en réalité iptables-nft, qui traduit votre vieille syntaxe en règles nftables en coulisses. Le même moteur en dessous, deux portes d'entrée.

Tout sur un écran : tâche, iptables, nftables

Voici le tableau pour lequel vous êtes vraiment venu. Choisissez la tâche dans la colonne de gauche, lisez en travers jusqu'à l'outil avec lequel vous êtes coincé sur cette machine. Presque tout le routinier est là. Remarquez comme la version nft nomme la table et la chaîne explicitement là où iptables s'appuyait sur celles intégrées comme INPUT. C'est le plus gros changement mental, et une fois que ça déclique le reste n'est surtout que du vocabulaire.

Tâcheiptables (ancien)nftables (nft)
Lister les règlesiptables -L -n -vnft list ruleset
Autoriser le SSH entrantiptables -A INPUT -p tcp --dport 22 -j ACCEPTnft add rule inet filter input tcp dport 22 accept
Refuser par défautiptables -P INPUT DROPmettre policy drop sur la chaîne
Supprimer une règleiptables -D INPUT -p tcp --dport 22 -j ACCEPTnft delete rule inet filter input handle N
Sauvegarder le chargéiptables-save > /etc/iptables/rules.v4nft list ruleset > /etc/nftables.conf
Recharger depuis un fichieriptables-restore < /etc/iptables/rules.v4nft -f /etc/nftables.conf

Un hic sur la suppression. Avec iptables vous pouvez supprimer une règle en la retapant mot pour mot, ce qui est indulgent. nft vous oblige à supprimer par handle, le petit numéro d'identifiant qu'il attribue à chaque règle. Lancez nft -a list ruleset pour voir ces handles affichés en bout de chaque ligne, puis supprimez celui que vous visez. Plus de frappe, moins d'accidents.

Carte comparative alignant cinq tâches de pare-feu quotidiennes avec la commande iptables et nftables correspondante pour chacune.
Lisez la tâche vers le bas, puis en travers jusqu'à l'outil que la machine vous tend. PNG

Le côté iptables, les commandes qu'on dégaine

Si c'est iptables qui est sur la machine, ces cinq-là couvrent l'essentiel d'une journée normale. Lire les règles, en ajouter une, fermer la porte, retirer une erreur, puis tout écrire sur le disque pour qu'un redémarrage n'efface pas votre travail. Cette dernière étape mord les gens en permanence, parce que les règles iptables vivent en mémoire et s'évanouissent au redémarrage si vous ne les sauvegardez pas.

CommandeCe qu'elle fait
iptables -L -n -vListe chaque règle avec les compteurs de paquets, -n saute les lentes résolutions de noms
iptables -A INPUT -p tcp --dport 22 -j ACCEPTAjoute une règle qui laisse passer le SSH entrant
iptables -P INPUT DROPMet la politique par défaut sur drop, donc tout ce qui n'est pas autorisé est refusé
iptables -D INPUT -p tcp --dport 22 -j ACCEPTSupprime cette règle SSH en la retapant à l'identique
iptables-save > /etc/iptables/rules.v4Rend persistant le jeu de règles vers le fichier que votre système recharge au démarrage

L'ordre compte plus que les débutants ne l'imaginent. iptables parcourt une chaîne de haut en bas et s'arrête à la première règle qui correspond, donc si vous mettez -P INPUT DROP et que vous pensez seulement après à votre autorisation SSH, félicitations, vous venez peut-être de vous verrouiller hors d'une machine distante. Autorisez d'abord ce dont vous avez besoin. Mettez la politique de drop en dernier. J'ai appris celle-là à la dure, sur un serveur à trois fuseaux horaires, à une heure que je préfère taire.

Pour ramener les règles après un redémarrage, iptables-restore < /etc/iptables/rules.v4 relit ce fichier directement. Sur la plupart des distribs un petit service (netfilter-persistent ou similaire) fait le restore pour vous au démarrage, donc vous le lancez rarement à la main. Il faut juste avoir sauvegardé.

Le côté nftables, les commandes nft natives

nft fait plus avec un seul outil. Pas de binaire de sauvegarde séparé, pas de binaire de restauration séparé. Vous construisez un jeu de règles, vous le déversez dans un fichier, vous chargez ce fichier. La structure est plus réfléchie aussi : vous créez une table, ajoutez une chaîne avec un hook dans la pile réseau, puis ajoutez des règles à la chaîne. Verbeux au début. Plus propre une fois que c'est l'habitude.

CommandeCe qu'elle fait
nft list rulesetAffiche tout le jeu de règles actif, chaque table et chaîne
nft add table inet filterCrée une table nommée filter dans la famille inet (IPv4 et IPv6 ensemble)
nft add chain inet filter input '{ type filter hook input priority 0; policy drop; }'Ajoute une chaîne input accrochée à la pile, avec drop par défaut
nft add rule inet filter input tcp dport 22 acceptAutorise SSH en ajoutant une règle à cette chaîne input
nft -f /etc/nftables.confCharge un jeu de règles entier depuis un fichier d'un seul coup atomique

Cette famille inet est l'amélioration discrète que les gens zappent. Avec iptables, IPv4 et IPv6 étaient vraiment des outils séparés, iptables et ip6tables, deux jeux de règles à garder synchronisés. La famille inet de nft couvre les deux à la fois. Écrivez la règle une seule fois, elle s'applique à v4 et v6. Si vous avez déjà oublié de répliquer une règle dans ip6tables et laissé un trou ouvert en silence, vous apprécierez ça plus que ça n'en a l'air.

Et le chargement nft -f est atomique, ce qui est franchement appréciable. Le noyau applique le nouveau jeu de règles comme une transaction unique, donc vous ne restez jamais dans un état à moitié appliqué où certaines règles sont en place et d'autres non. iptables-restore sait faire des chargements atomiques aussi, pour être juste, mais avec nft c'est simplement le fonctionnement par défaut.

Vous n'êtes pas obligé de réécrire les règles à la main

Voici le pont qui rend la migration indolore. iptables-translate prend une commande iptables et affiche l'équivalent nftables, sans toucher à votre config en cours. C'est un prof. Donnez-lui les règles auxquelles vous faites déjà confiance et lisez la version nft en retour.

CommandeCe qu'elle fait
iptables-translate -A INPUT -p tcp --dport 22 -j ACCEPTConvertit une règle et affiche la ligne nft, sans rien changer
`iptables-saveiptables-restore-translate`

La première fois que j'ai lancé iptables-translate sur une config que je dorlotais depuis des années, ça a craché des règles nft propres en une seconde environ et je me suis senti un peu bête d'avoir jamais prévu de les retaper. Ce n'est pas infaillible sur les trucs exotiques avec des modules obscurs, alors jetez un oeil à la sortie. Pour le pain quotidien, c'est pile poil.

Mon avis : apprenez nft pour tout ce qui est neuf, mais la syntaxe iptables n'est pas morte. Si vous partez de zéro en 2026, écrivez du nftables. C'est le défaut sur les Debian, Ubuntu, RHEL et Fedora actuels, la famille inet tue la double comptabilité v4/v6, les chargements atomiques sont réels, et c'est là que part le travail du noyau. Ça, c'est la partie facile du choix. La partie que les gens ratent, c'est de déclarer la syntaxe iptables obsolète. Elle ne l'est pas, parce que iptables-nft garde cette syntaxe exacte vivante par-dessus le moteur nftables, donc la commande que vous avez tapée mille fois marche encore et fait encore ce qu'il faut sur une machine moderne. Les deux peuvent coexister dans le même souffle : les nouvelles règles en nft, les vieux réflexes toujours valides. Là où je nuance : si votre distrib est vraiment vieille, ou un appliance, vous pourriez encore tomber sur le moteur ancien d'origine (iptables-legacy) plutôt que sur la couche de compat, et alors les deux peuvent vraiment se marcher dessus. Vérifiez avec iptables --version, cherchez "nf_tables" dans la sortie, et vous saurez dans quel monde vous êtes avant de supposer.

Et après

Voilà la trousse de travail. Lister, autoriser, refuser par défaut, supprimer, rendre persistant, sur les deux outils, plus iptables-translate pour porter les vieilles règles dans la nouvelle syntaxe sans les retaper. Franchement, ça couvre presque tout ce que je touche sur un pare-feu dans une semaine normale, et la rare bizarrerie je la recherche comme tout le monde.

Si vous avez de toute façon les mains dans le shell, le même réflexe « copier plutôt que mémoriser » paie juste à côté. Vous tripotez interfaces, routes et sockets pour voir ce qui écoute seulement ? Les commandes réseau Linux avec ip et ss ont ça regroupé de la même façon. Vous voulez qu'on vous assemble une règle plutôt que de la taper à la main ? L'assistant de règles firewall construit la ligne en deux clics. Et avant d'ouvrir ou fermer quoi que ce soit, le vérificateur de ports TCP et la liste des ports courants vous disent ce qui est vraiment joignable et quel numéro de port il vous faut.

Sources

Questions fréquentes

iptables est-il obsolète au profit de nftables ?

En quelque sorte, mais pas comme on le dit. L'ancien moteur iptables du noyau a été remplacé par nftables, et nft est l'outil natif moderne. Mais la commande iptables survit sous la forme d'iptables-nft, une couche de compatibilité qui traduit la syntaxe familière en règles nftables en dessous. Donc sur une distrib actuelle vos commandes iptables marchent encore et font encore ce qu'il faut. Apprenez nft pour le neuf, mais l'ancienne syntaxe est loin d'être inutile.

Comment lister toutes les règles de pare-feu en iptables et nftables ?

Avec iptables, lancez iptables -L -n -v. Le -n saute les résolutions DNS pour répondre vite, et -v ajoute les compteurs de paquets et d'octets. Avec nftables, lancez nft list ruleset pour déverser chaque table et chaîne d'un coup. Ajoutez nft -a list ruleset pour voir aussi les numéros de handle, dont vous avez besoin pour supprimer une règle précise par son identifiant.

Comment convertir des règles iptables en nftables ?

Utilisez iptables-translate. Passez-lui une seule règle comme iptables-translate -A INPUT -p tcp --dport 22 -j ACCEPT et il affiche l'équivalent nft sans rien changer en direct. Pour convertir un jeu de règles entier d'un coup, faites passer iptables-save dans iptables-restore-translate. Lisez la sortie avant de lui faire confiance sur quoi que ce soit d'inhabituel, car les modules rares ne se traduisent pas toujours proprement, mais pour les règles courantes c'est exact.

Comment rendre les règles de pare-feu persistantes après un redémarrage ?

Les règles iptables vivent en mémoire et disparaissent au redémarrage si vous ne les sauvegardez pas. Lancez iptables-save > /etc/iptables/rules.v4, et la plupart des distribs rechargent ce fichier au démarrage via un petit service, ou vous pouvez le restaurer à la main avec iptables-restore. Pour nftables, écrivez vos règles dans /etc/nftables.conf et chargez-les avec nft -f /etc/nftables.conf, que le service nftables lance pour vous au démarrage sur les systèmes modernes.

Quelle différence entre iptables-nft et iptables-legacy ?

Les deux acceptent la même syntaxe iptables, mais ils stockent les règles à des endroits différents. iptables-nft écrit à travers le moteur nftables, donc ses règles apparaissent dans nft list ruleset et cohabitent bien avec les règles nft natives. iptables-legacy utilise le moteur d'origine, séparé de nftables. Faire tourner les deux sur une machine peut créer des conflits déroutants. Vérifiez iptables --version et cherchez nf_tables dans la sortie pour savoir lequel vous utilisez.