nftables (commande nft) est le système de pare-feu intégré au noyau Linux depuis 3.13 (2014). Il remplace progressivement iptables, son prédécesseur — sur les distros modernes, iptables est en fait un wrapper iptables-nft qui traduit en règles nftables. Le langage nft est plus expressif, supporte IPv4 et IPv6 dans la même règle, et s'écrit dans un fichier de config plutôt qu'en commandes shell empilées.
Syntaxe
# Lister les regles actives
nft list ruleset
nft list table inet filter
# Ajouter une regle ponctuelle
nft add rule inet filter input tcp dport 22 accept
# Charger un fichier de config
nft -f /etc/nftables.conf
$ nft list ruleset | head -20
Vue de l'état complet du pare-feu noyau. nft list ruleset dump tout — tables, chaînes, règles, en syntaxe rechargeable. Pour sauvegarder l'état avant de bidouiller : nft list ruleset > /tmp/backup-nft.conf.
# # /etc/nftables.conf — pare-feu type pour serveur web
flush ruleset
table inet filter {
chain input {
type filter hook input priority filter; policy drop;
iif lo accept
ct state established,related accept
ct state invalid drop
tcp dport { 22, 80, 443 } accept
icmp type echo-request limit rate 5/second accept
icmpv6 type { destination-unreachable, packet-too-big, time-exceeded, parameter-problem, nd-neighbor-solicit, nd-neighbor-advert, nd-router-solicit, nd-router-advert } accept
icmpv6 type echo-request limit rate 5/second accept
}
chain forward { type filter hook forward priority filter; policy drop; }
chain output { type filter hook output priority filter; policy accept; }
}
Exemple de fichier à adapter, pas une commande shell à coller. flush ruleset efface aussi les règles nftables d’autres outils ; ne l’utiliser que si ce fichier est propriétaire de tout le pare-feu. Adapter le port SSH et les services avant chargement, prévoir un accès de secours et vérifier la configuration avec nft -c -f FICHIER. Les règles autorisent les connexions suivies, certains messages ICMP et les ports déclarés ; les besoins DHCP, routage et conteneurs peuvent imposer d’autres règles.
# nft -f /etc/nftables.conf
systemctl enable --now nftables
Charge immédiatement ce fichier puis active nftables.service. La persistance dépend du service fourni par la distribution : /etc/nftables.conf est courant sur Debian, tandis que Fedora utilise notamment /etc/sysconfig/nftables.conf et des fichiers inclus. Vérifier systemctl cat nftables.service et la configuration réellement chargée ; ne pas faire gérer les mêmes règles en parallèle par firewalld ou ufw.
$ iptables-translate -A INPUT -p tcp --dport 22 -j ACCEPT
nft 'add rule ip filter INPUT tcp dport 22 counter accept'
Outil de migration : convertit une commande iptables en son équivalent nft. Utile quand on hérite d'un vieux script iptables et qu'on veut le porter sans tout réécrire à la main.
Coexistence iptables/nftables :
iptables-legacy et nftables peuvent techniquement coexister, mais leurs règles sont distinctes et peuvent toutes agir sur le trafic. iptables-nft utilise au contraire le backend nftables. Identifier le backend et le gestionnaire propriétaire des règles avant de modifier : éviter de mélanger une gestion manuelle avec firewalld, ufw ou les règles de conteneurs. Un flush ruleset efface toutes les règles nftables, y compris celles d’autres outils.
Voir aussi :
ufw firewall-cmd ss