Kennisbank › Firewall › nftables : le pare-feu Linux qui remplace iptables
firewall starter 28 August 2026

nftables : le pare-feu Linux qui remplace iptables

nftables : le pare-feu Linux qui remplace iptables Cet article explique ce qu’est nftables, comment il se compare à iptables, et comment commencer à l’utiliser —

Le projet est né des limitations d'iptables. Celui-ci nécessitait quatre commandes différentes pour IPv4, IPv6, les trames Ethernet et ARP. Le modèle de règles était statique et les structures de données internes inefficaces. nftables résout cela avec un seul démon, une seule syntaxe, un seul outil (`nft`) et une seule architecture de noyau.

Historique et développement

La première présentation publique de nftables a eu lieu lors de l'atelier Netfilter en 2008 à Paris. Patrick McHardy, membre du Netfilter Core Team, a publié la première version alpha le 18 mars 2009. C'était une version de développement précoce, mais elle marquait la transition de l'idée vers un logiciel fonctionnel.

Le 16 octobre 2013, Pablo Neira Ayuso a soumis une « nftables core pull request » au noyau Linux. La fusion a été achevée le 19 janvier 2014, le même jour que la sortie du noyau 3.13. À partir de ce moment, nftables faisait partie du noyau standard.

La première version pour utilisateurs finaux, la 0.099, est apparue le 20 janvier 2014 — un jour après l'intégration dans le noyau. Cela a donné aux utilisateurs un outil stable pour travailler avec nftables dans des environnements de production.

La version la plus récente est la 1.1.6, publiée le 5 décembre 2025. Le wiki nftables confirme que des versions ont été maintenues jusqu'au moins le 30 avril 2025 (version 1.1.3). Le projet est activement maintenu.

Étapes : commencer avec nftables

1. Vérifiez si nftables est disponible

nft --version

Cela affiche la version de l'outil nft. Si la commande n'est pas trouvée, installez d'abord le paquet.

2. Consultez la ruleset actuelle

sudo nft list ruleset

Cela affiche toutes les tables, chaînes et règles existantes. Sur un nouveau système, c'est vide ou cela affiche uniquement la configuration par défaut de votre distribution.

3. Créez une table

sudo nft add table inet filter

Cela crée une table nommée « filter » pour la famille « inet ». La famille `inet` traite à la fois IPv4 et IPv6 dans une seule table — c'est le grand avantage par rapport à iptables, où vous aviez besoin de tables séparées.

Les autres familles sont `ip` (IPv4 uniquement), `ip6` (IPv6 uniquement), `arp` et `bridge`.

4. Ajoutez une chaîne

sudo nft add chain inet filter input { type filter hook input priority 0 \; policy accept \; }

Cela ajoute une chaîne nommée « input » liée au hook input. La politique est définie sur `accept`, ce qui signifie que tous les paquets sont autorisés par défaut. Les barres obliques inverses sont nécessaires pour échapper les accolades et les points-virgules pour le shell.

Vous avez trois hooks standard : `input` (paquets entrants), `output` (paquets sortants) et `forward` (paquets transférés).

5. Ajoutez une règle

sudo nft add rule inet filter input tcp dport 22 accept

Cela accepte le trafic TCP entrant sur le port 22 (SSH). La syntaxe est construite logiquement : d'abord la table, puis la chaîne, puis les critères de correspondance, puis l'action.

Si vous voulez bloquer tout le reste du trafic, ajoutez après cette règle une règle de drop :

sudo nft add rule inet filter input drop

6. Enregistrez la configuration

sudo nft list ruleset > /etc/nftables.conf

Les règles nftables ne sont pas persistantes après un redémarrage. En écrivant la ruleset dans le fichier de configuration, le système charge les règles automatiquement au démarrage.

7. Rechargez la configuration

sudo nft -f /etc/nftables.conf

Cela lit le fichier de configuration et applique toutes les règles. Utilisez cela après avoir modifié le fichier ou après un redémarrage du service.

8. Utilisez des ensembles pour des règles plus efficaces

sudo nft add set inet filter blacklist { type ipv4_addr \; }
sudo nft add element inet filter blacklist { 192.168.1.100, 10.0.0.5 }
sudo nft add rule inet filter input ip saddr @blacklist drop

Les ensembles sont des structures de données avancées plus efficaces que les chaînes de règles linéaires. Le noyau évalue les règles via des tables de hachage ou des arbres radix, ce qui donne des temps de recherche plus rapides pour les grands ensembles de règles. Vous pouvez également mettre à jour les ensembles dynamiquement sans recharger toute la ruleset — essentiel dans les environnements cloud et conteneurisés.

Vérification

Vérifiez que votre pare-feu fonctionne correctement :

sudo nft list ruleset

Cela affiche la configuration complète. Vous devriez voir votre table, votre chaîne et vos règles. Testez ensuite la connexion vers une adresse IP bloquée :

ping -c 3 192.168.1.100

Si la règle fonctionne, vous n'obtiendrez aucune réponse. Pour une vérification automatisée avec une sortie JSON :

sudo nft -j list ruleset

Cela génère du JSON que vous pouvez traiter avec des outils de surveillance ou des systèmes de journalisation.

Problèmes fréquents

Problème : commande nft introuvable Installez le paquet :

sudo apt install nftables

Sur RHEL/Fedora :

sudo dnf install nftables

Problème : message d'erreur « Operation not permitted » lors de l'ajout de règles Vous avez besoin des droits root. Utilisez sudo ou connectez-vous en tant que root. Vérifiez également si le kernel prend en charge nftables :

cat /proc/net/netfilter/nf_tables

Si ce fichier n'existe pas, votre kernel ne prend pas en charge nftables ou le module n'est pas chargé.

Problème : les règles ont disparu après un redémarrage Écrivez la ruleset dans le fichier de configuration et assurez-vous que le service est actif :

sudo systemctl enable nftables
sudo systemctl start nftables

Intégration avec d'autres systèmes

firewalld, le daemon de pare-feu standard des systèmes basés sur Red Hat, utilise nftables comme backend par défaut. Les utilisateurs qui utilisent firewalld travaillent donc déjà avec nftables sans le savoir.

Docker prend en charge nftables expérimentalement à partir de Docker Engine 29.0.0. Vous pouvez configurer le backend avec :

dockerd --firewall-backend=nftables

Cette prise en charge est encore expérimentale. Les règles pour les réseaux overlay (Docker Swarm) n'ont pas encore été migrées, vous ne pouvez donc pas activer nftables lorsque Docker fonctionne en mode Swarm.

Monitoring et débogage

La commande `nft monitor` affiche les modifications du pare-feu en temps réel :

sudo nft monitor rules

Cela suit uniquement les modifications de règles — ajouts, suppressions et ajustements. Pour les systèmes automatisés :

sudo nft -j monitor

Cela génère une sortie JSON que vous pouvez intégrer à des outils de monitoring.

Sécurité

nftables simplifie l'interface kernel en un seul appel système (`nft`), ce qui réduit la surface d'attaque. Vous avez un contrôle précis sur les utilisateurs ou processus autorisés à modifier les règles. Cela améliore la gestion de l'accès au pare-feu.

Le développement de nftables se poursuit. Le projet s'adapte aux exigences des environnements réseau modernes — des serveurs sur site à l'infrastructure cloud et aux conteneurs. Avec le soutien de Red Hat via firewalld, Docker et le kernel Linux lui-même, nftables n'est plus une alternative, mais la norme. La question n'est pas de savoir si vous passerez, mais quand vous ferez la transition — et si vous avez encore besoin des configurations iptables héritées au moment où le dernier support iptables disparaîtra.

← Retour à la base de connaissances
← Terug naar kennisbank