Chapitre 2. Démarrer avec nftables
Le cadre nftables
classe les paquets et succède aux utilitaires iptables
, ip6tables
, arptables
, ebtables
et ipset
. 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 :
- Tableaux de consultation intégrés au lieu d'un traitement linéaire
-
Un cadre unique pour les protocoles
IPv4
etIPv6
- Toutes les règles sont appliquées de manière atomique au lieu d'aller chercher, de mettre à jour et de stocker un ensemble complet de règles
-
Prise en charge du débogage et du traçage dans l'ensemble de règles (
nftrace
) et surveillance des événements de traçage (dans l'outilnft
) - Syntaxe plus cohérente et plus compacte, pas d'extensions spécifiques au protocole
- Une API Netlink pour les applications tierces
Le cadre nftables
utilise des tableaux pour stocker les chaînes. Les chaînes contiennent des règles individuelles pour effectuer des actions. L'utilitaire nft
remplace tous les outils des cadres de filtrage de paquets précédents. Vous pouvez utiliser la bibliothèque libnftnl
pour une interaction de bas niveau avec nftables
Netlink API par le biais de la bibliothèque libmnl
.
Pour afficher l'effet des modifications apportées au jeu de règles, utilisez la commande nft list ruleset
. Comme ces utilitaires ajoutent des tables, des chaînes, des règles, des jeux et d'autres objets au jeu de règles nftables
, sachez que les opérations sur le jeu de règles nftables
, telles que la commande nft flush ruleset
, peuvent affecter les jeux de règles installés à l'aide de la commande iptables
.
2.1. Migrer d'iptables à nftables
Si votre configuration de pare-feu utilise encore les règles iptables
, vous pouvez migrer vos règles iptables
vers nftables
.
Les paquetages ipset
et iptables-nft
ont été dépréciés dans Red Hat Enterprise Linux 9. Cela inclut la dépréciation de nft-variants
tels que les utilitaires iptables
, ip6tables
, arptables
, et ebtables
. Si vous utilisez l'un de ces outils, par exemple, parce que vous avez effectué une mise à niveau à partir d'une version antérieure de RHEL, Red Hat vous recommande de migrer vers l'outil de ligne de commande nft
fourni par le paquetage nftables
.
2.1.1. Quand utiliser firewalld, nftables ou iptables ?
Voici un bref aperçu des scénarios dans lesquels vous devez utiliser l'un des utilitaires suivants :
-
firewalld
: Utilisez l'utilitairefirewalld
pour des cas d'utilisation simples de pare-feu. L'utilitaire est facile à utiliser et couvre les cas d'utilisation typiques de ces scénarios. -
nftables
: Utilisez l'utilitairenftables
pour configurer des pare-feu complexes et critiques en termes de performances, par exemple pour l'ensemble d'un réseau. -
iptables
: L'utilitaireiptables
sur Red Hat Enterprise Linux utilise l'API du noyaunf_tables
au lieu de l'interfacelegacy
. L'APInf_tables
offre une compatibilité ascendante de sorte que les scripts qui utilisent les commandesiptables
fonctionnent toujours sur Red Hat Enterprise Linux. Pour les nouveaux scripts de pare-feu, Red Hat recommande d'utilisernftables
.
Pour éviter que les différents services de pare-feu ne s'influencent mutuellement, exécutez un seul d'entre eux sur un hôte RHEL et désactivez les autres services.
2.1.2. Conversion des jeux de règles iptables et ip6tables en nftables
Utilisez les utilitaires iptables-restore-translate
et ip6tables-restore-translate
pour traduire les jeux de règles iptables
et ip6tables
en nftables
.
Conditions préalables
-
Les paquets
nftables
etiptables
sont installés. -
Le système a configuré les règles
iptables
etip6tables
.
Procédure
Inscrivez les règles
iptables
etip6tables
dans un fichier :# iptables-save >/root/iptables.dump # ip6tables-save >/root/ip6tables.dump
Convertir les fichiers dump en instructions
nftables
:# iptables-restore-translate -f /root/iptables.dump > /etc/nftables/ruleset-migrated-from-iptables.nft # ip6tables-restore-translate -f /root/ip6tables.dump > /etc/nftables/ruleset-migrated-from-ip6tables.nft
-
Examinez et, si nécessaire, mettez à jour manuellement les règles générées sur
nftables
. Pour permettre au service
nftables
de charger les fichiers générés, ajoutez ce qui suit au fichier/etc/sysconfig/nftables.conf
:include "/etc/nftables/ruleset-migrated-from-iptables.nft" include "/etc/nftables/ruleset-migrated-from-ip6tables.nft"
Arrêtez et désactivez le service
iptables
:# systemctl disable --now iptables
Si vous avez utilisé un script personnalisé pour charger les règles
iptables
, assurez-vous que le script ne démarre plus automatiquement et redémarrez pour vider toutes les tables.Activez et démarrez le service
nftables
:# systemctl enable --now nftables
Vérification
Affichez l'ensemble de règles
nftables
:# nft list ruleset
Ressources supplémentaires
2.1.3. Conversion de règles iptables et ip6tables en règles nftables
Red Hat Enterprise Linux fournit les utilitaires iptables-translate
et ip6tables-translate
pour convertir une règle iptables
ou ip6tables
en une règle équivalente pour nftables
.
Conditions préalables
-
Le paquet
nftables
est installé.
Procédure
Utilisez l'utilitaire
iptables-translate
ouip6tables-translate
au lieu deiptables
ouip6tables
pour afficher la règlenftables
correspondante, par exemple :# iptables-translate -A INPUT -s 192.0.2.0/24 -j ACCEPT nft add rule ip filter INPUT ip saddr 192.0.2.0/24 counter accept
Notez que certaines extensions ne prennent pas en charge la traduction. Dans ce cas, l'utilitaire imprime la règle non traduite préfixée par le signe
#
, par exemple :# iptables-translate -A INPUT -j CHECKSUM --checksum-fill nft # -A INPUT -j CHECKSUM --checksum-fill
Ressources supplémentaires
-
iptables-translate --help
2.1.4. Comparaison des commandes iptables et nftables les plus courantes
Voici une comparaison des commandes courantes iptables
et nftables
:
Liste de toutes les règles :
iptables nftables iptables-save
nft list ruleset
L'inscription d'une certaine table et d'une certaine chaîne :
iptables nftables iptables -L
nft list table ip filter
iptables -L INPUT
nft list chain ip filter INPUT
iptables -t nat -L PREROUTING
nft list chain ip nat PREROUTING
La commande
nft
ne précrée pas les tables et les chaînes. Elles n'existent que si un utilisateur les a créées manuellement.Liste des règles générées par firewalld :
# nft list table inet firewalld # nft list table ip firewalld # nft list table ip6 firewalld