Réseau

nftables remplace iptables comme cadriciel de filtrage de paquets réseau par défaut

Le cadriciel nftables fournit des facilités de classification des paquets et est le successeur désigné des outils iptables, ip6tables, arptables et ebtables. Il offre de nombreuses améliorations en termes de commodité, de fonctionnalités et de performances par rapport aux outils de filtrage de paquets précédents, notamment :

  • Tables de recherche au lieu d’un traitement linéaire.

  • Un cadriciel unique pour les protocoles IPv4 et IPv6.

  • Les règles sont toutes appliquées de manière atomique au lieu d’aller chercher, de mettre à jour et de stocker un jeu de règles complet.

  • Support pour le débogage et le traçage dans le jeu de règles (nftrace) et la surveillance des évènements de traçage (dans l’outil nft).

  • Syntaxe plus cohérente et plus compacte, pas d’extensions spécifiques au protocole.

  • Une API Netlink pour les applications tierces.

Tout comme pour iptables, nftables utilise des tables pour stocker les chaines. Les chaines contiennent des règles individuelles pour effectuer des actions. L’outil nft remplace tous les outils des précédents cadriciels de filtrage de paquets. La bibliothèque libnftables peut être utilisée pour une interaction de bas niveau avec l’API Netlink nftables par le biais de la bibliothèque libmnl.

Les outils iptables, ip6tables, ebtables et arptables sont remplacés par des outils basés sur nftables et portant le même nom. Le comportement est identique à celui de leurs homologues existants, mais en interne ils utilisent nftables avec les anciens modules du noyau netfilter par le biais d’une interface de compatibilité lorsque cela est nécessaire.

L’effet des modules sur le jeu de règles nftables peut être observé en utilisant la commande nft list ruleset. Comme ces outils ajoutent des tables, des chaines et des règles au jeu de règles nftables, il faut savoir que les opérations sur le jeu de règles nftables, comme la commande nft flush ruleset, peuvent affecter les jeux de règles installés à l’aide des anciennes commandes séparées.

Pour identifier rapidement quelle variante de l’outil est présente, les informations sur la version ont été mises à jour pour inclure le nom du back-end. Dans Fedora 32, l’outil iptables basé sur nftables imprime la chaine de version suivante :

$ iptables --version
iptables v1.8.4 (nf_tables)

À titre de comparaison, les informations suivantes sont imprimées si l’ancien outil iptables est présent :

$ iptables --version
iptables v1.8.4 (legacy)