2.10. Débogage des règles nftables
Le cadre nftables
offre différentes options aux administrateurs pour déboguer les règles et déterminer si les paquets y correspondent.
2.10.1. Création d'une règle avec un compteur
Pour savoir si une règle est respectée, vous pouvez utiliser un compteur.
- Pour plus d'informations sur la procédure d'ajout d'un compteur à une règle existante, voir Ajout d'un compteur à une règle existante.
Conditions préalables
- La chaîne à laquelle vous souhaitez ajouter la règle existe.
Procédure
Ajoutez une nouvelle règle avec le paramètre
counter
à la chaîne. L'exemple suivant ajoute une règle avec un compteur qui autorise le trafic TCP sur le port 22 et compte les paquets et le trafic qui correspondent à cette règle :# nft add rule inet example_table example_chain tcp dport 22 counter accept
Pour afficher les valeurs du compteur :
# nft list ruleset table inet example_table { chain example_chain { type filter hook input priority filter; policy accept; tcp dport ssh counter packets 6872 bytes 105448565 accept } }
2.10.2. Ajouter un compteur à une règle existante
Pour savoir si une règle est respectée, vous pouvez utiliser un compteur.
- Pour plus d'informations sur une procédure qui ajoute une nouvelle règle avec un compteur, voir Création d'une règle avec le compteur.
Conditions préalables
- La règle à laquelle vous souhaitez ajouter le compteur existe.
Procédure
Affiche les règles de la chaîne, y compris leurs poignées :
# nft --handle list chain inet example_table example_chain table inet example_table { chain example_chain { # handle 1 type filter hook input priority filter; policy accept; tcp dport ssh accept # handle 4 } }
Ajoutez le compteur en remplaçant la règle par le paramètre
counter
. L'exemple suivant remplace la règle affichée à l'étape précédente et ajoute un compteur :# nft replace rule inet example_table example_chain handle 4 tcp dport 22 counter accept
Pour afficher les valeurs du compteur :
# nft list ruleset table inet example_table { chain example_chain { type filter hook input priority filter; policy accept; tcp dport ssh counter packets 6872 bytes 105448565 accept } }
2.10.3. Surveillance des paquets correspondant à une règle existante
La fonction de traçage de nftables
, combinée à la commande nft monitor
, permet aux administrateurs d'afficher les paquets qui correspondent à une règle. Vous pouvez activer le traçage pour une règle et l'utiliser pour surveiller les paquets qui correspondent à cette règle.
Conditions préalables
- La règle à laquelle vous souhaitez ajouter le compteur existe.
Procédure
Affiche les règles de la chaîne, y compris leurs poignées :
# nft --handle list chain inet example_table example_chain table inet example_table { chain example_chain { # handle 1 type filter hook input priority filter; policy accept; tcp dport ssh accept # handle 4 } }
Ajoutez la fonction de traçage en remplaçant la règle par les paramètres
meta nftrace set 1
. L'exemple suivant remplace la règle affichée à l'étape précédente et active le traçage :# nft replace rule inet example_table example_chain handle 4 tcp dport 22 meta nftrace set 1 accept
Utilisez la commande
nft monitor
pour afficher le suivi. L'exemple suivant filtre la sortie de la commande pour n'afficher que les entrées contenantinet example_table example_chain
:# nft monitor | grep "inet example_table example_chain" trace id 3c5eb15e inet example_table example_chain packet: iif "enp1s0" ether saddr 52:54:00:17:ff:e4 ether daddr 52:54:00:72:2f:6e ip saddr 192.0.2.1 ip daddr 192.0.2.2 ip dscp cs0 ip ecn not-ect ip ttl 64 ip id 49710 ip protocol tcp ip length 60 tcp sport 56728 tcp dport ssh tcp flags == syn tcp window 64240 trace id 3c5eb15e inet example_table example_chain rule tcp dport ssh nftrace set 1 accept (verdict accept) ...
AvertissementEn fonction du nombre de règles dont le traçage est activé et de la quantité de trafic correspondant, la commande
nft monitor
peut afficher un grand nombre de résultats. Utilisezgrep
ou d'autres utilitaires pour filtrer la sortie.