# Nftables

nftables est un sous-système du noyau Linux fournissant le filtrage et la classification des paquets. Il est disponible depuis le noyau Linux 3.13 publié le 19 janvier 2014 [2].
nftables, ayant pour ambition de remplacer le framework iptables, est aussi censé remplacer certaines parties de Netfilter, tout en les conservant et les réutilisant.
Parmi les avantages de nftables sur iptables, il y a moins de duplication de code et plus de débit. nftables est configuré via l'utilitaire espace utilisateur nft, tandis que netfilter est configuré via les utilitaires iptables, ip6tables, arptables (en) et ebtables.
nftables utilise les blocs de construction de l'infrastructure Netfilter, tels que les points d'ancrage existants dans la pile de réseau, le système de suivi de connexion, le composant de mise en file d'attente de l'espace utilisateur et le sous-système de journalisation.

## nft
### Syntaxe de la ligne de commande

Une commande pour supprimer tous les paquets avec l'adresse IP de destination 1.2.3.4 :
La syntaxe de iptables est différente :
En outre, il existe une couche de compatibilité prévue pour la traduction des règles de pare-feu iptables déjà existantes en leurs équivalents nftables.

## L'histoire

Le projet a été présenté pour la première fois au public lors de l'atelier Netfilter 2008 par Patrick McHardy de l'équipe principale de Netfilter. La première version préliminaire de l’implémentation du noyau et de l’espace utilisateur a été publiée en mars 2009. Bien que l’outil ait été appelé "... le plus grand changement apporté au pare-feu Linux depuis l’introduction d’iptables en 2001", il n’a reçu que peu de presse. Le hackeur informatique Fyodor Vaskovich (Gordon Lyon) a déclaré qu'il "attend avec impatience sa publication générale dans le noyau Linux traditionnel".
Le projet est resté en phase alpha et le site Web officiel a été supprimé en 2009. En mars 2010, des courriels de l'auteur figurant sur les listes de diffusion du projet montraient que le projet était toujours actif et sur le point de sortir d'une version bêta, mais cette dernière n'a jamais été officiellement expédiée. En octobre 2012, Pablo Neira Ayuso a proposé une couche de compatibilité pour iptables et a annoncé l'inclusion éventuelle du projet dans le noyau principal.
Le 16 octobre 2013, Pablo Neira Ayuso a soumis une demande d'extraction nftables core à l'arborescence principale du noyau Linux. Il a été fusionné dans la ligne principale du noyau le 19 janvier 2014 avec la publication de la version 3.13 du noyau Linux.

## Vue d'ensemble

Le moteur de noyau nftables ajoute une simple machine virtuelle au noyau Linux, capable d'exécuter du bytecode pour inspecter un paquet réseau et de décider de la manière dont ce paquet doit être traité. Les opérations implémentées par cette machine virtuelle sont intentionnellement rendues basiques. Il peut extraire des données du paquet lui-même, consulter les métadonnées associées (interface entrante, par exemple) et gérer les données de suivi de connexion. Des opérateurs arithmétiques, binaires et de comparaison peuvent être utilisés pour prendre des décisions en fonction de ces données. La machine virtuelle est également capable de manipuler des ensembles de données (généralement des adresses IP), ce qui permet de remplacer plusieurs opérations de comparaison par une recherche d'ensemble unique.
L'organisation décrite ci-dessus est contraire au code de pare-feu d'iptables, dont la connaissance du protocole est tellement intégrée à la logique que le code a dû être répliqué à quatre reprises - pour les ponts IPv4, IPv6, ARP et Ethernet - comme pare-feu Les moteurs sont trop spécifiques au protocole pour être utilisés de manière générique.
Les principaux avantages de nftables par rapport à iptables sont la simplification de l’ABI du noyau Linux, la réduction de la duplication de code, l’amélioration du rapport d’erreurs et l’exécution, le stockage et les modifications incrémentielles plus efficaces des règles de filtrage. Iptables, ip6tables, arptables et ebtables (utilisés respectivement pour les ponts IPv4, IPv6, ARP et Ethernet) sont censés être remplacés par nft (8) en tant qu'implémentation unifiée unique, fournissant une configuration de pare-feu au-dessus de la machine virtuelle intégrée au noyau.
nftables propose également une API utilisateur améliorée qui permet le remplacement atomique d’une ou de plusieurs règles de pare-feu au sein d’une même transaction Netlink. Cela accélère les changements de configuration du pare-feu pour les configurations ayant de grands ensembles de règles; cela peut également aider à éviter les conditions de concurrence pendant l'exécution des modifications de règles. En outre, une couche de compatibilité prévue fournira la traduction des règles de pare-feu iptables déjà existantes en leurs équivalents nftables.