Outils pour utilisateurs

Outils du site


Manipulations de base

La manière de gérer le filtrage avec l'outil nft étant tout-à-fait nouvelle, on va commencer par quelques manipulations simples.

Nous partons sur une base telle qu'elle a été définie en page précédente. Elle a été construite en traduisant des règles iptables mais il faut abandonner cette méthode.

Nous savons déjà qu'il n'existe plus qu'un seul outil nft pour gérer aussi bien IPv4 qu' IPv6, ARP ou encore ehternet. Voyons ce qu'il est nécessaire de savoir pour commencer.

Identifier les tables existantes

nft list tables
table ip nat
table ip filter
Au passage, notons si c'était passé inaperçu, que les noms des tables peuvent contenir des espaces.

Identifier le contenu d'une table

nft  list table ip filter
table ip filter {
	chain INPUT {
		type filter hook input priority 0; policy accept;
		iifname "lo" counter packets 0 bytes 0 accept
		iifname "enp7s0" counter packets 0 bytes 0 accept
	}

	chain FORWARD {
		type filter hook forward priority 0; policy accept;
		ip daddr { 208.67.220.123, 208.67.222.123 } counter packets 10 bytes 840 drop
		iifname "enp7s0" oifname "enp1s0" ct state established,related,new counter packets 7 bytes 511 accept
		iifname "enp1s0" oifname "enp7s0" ct state established,related counter packets 7 bytes 1490 accept
	}

	chain OUTPUT {
		type filter hook output priority 0; policy accept;
		oifname "lo" counter packets 0 bytes 0 accept
		oifname "enp7s0" counter packets 0 bytes 0 accept
	}
}
En plus de lister les chaînes et les règles dans ces chaînes; nous voyons aussi l'état des compteurs.

Les compteurs...

Contrairement aux compteurs de ipchains qui existent par défaut, ils deviennent facultatifs dans nftables mais ici, nos règles étant des traductions de règles iptables, les compteurs ont été définis.

Modifier une règle dans une chaîne

Il faut d'abord savoir que chaque chaîne, chaque règle dans nftables dispose d'un “handler” et que ce “handler” nous ne l'avons jamais vu…

Pour le trouver:

nft -a list table ip filter
table ip filter { # handle 9
	chain INPUT { # handle 1
		type filter hook input priority 0; policy accept;
		iifname "lo" counter packets 0 bytes 0 accept # handle 5
		iifname "enp7s0" counter packets 0 bytes 0 accept # handle 6
	}

	chain FORWARD { # handle 2
		type filter hook forward priority 0; policy accept;
		ip daddr { 208.67.220.123, 208.67.222.123 } counter packets 10 bytes 840 drop # handle 7
		iifname "enp7s0" oifname "enp1s0" ct state established,related,new counter packets 9 bytes 663 accept # handle 8
		iifname "enp1s0" oifname "enp7s0" ct state established,related counter packets 9 bytes 1642 accept # handle 9
	}

	chain OUTPUT { # handle 3
		type filter hook output priority 0; policy accept;
		oifname "lo" counter packets 0 bytes 0 accept # handle 10
		oifname "enp7s0" counter packets 0 bytes 0 accept # handle 11
	}
}
le modificateur -a (ou plus clairement --handle) permet de le découvrir ces “handles”, autant le savoir…

Pour modifier par exemple le “handle 9” dont nous n'avons pas besoin du compteur:

nft replace rule ip filter FORWARD handle 9 iifname "enp1s0" oifname "enp7s0" ct state established,related accept
Syntaxe assez lourde, mais faudra faire avec. On va faire la même chose avec le handle 8 et au final, nous obtenons:
nft list table ip filter
table ip filter {
	chain INPUT { # handle 1
		type filter hook input priority 0; policy accept;
		iifname "lo" counter packets 0 bytes 0 accept
		iifname "enp7s0" counter packets 0 bytes 0 accept
	}

	chain FORWARD {
		type filter hook forward priority 0; policy accept;
		ip daddr { 208.67.220.123, 208.67.222.123 } counter packets 10 bytes 840 drop
		iifname "enp7s0" oifname "enp1s0" ct state established,related,new accept
		iifname "enp1s0" oifname "enp7s0" ct state established,related accept
	}

	chain OUTPUT {
		type filter hook output priority 0; policy accept;
		oifname "lo" counter packets 0 bytes 0 accept
		oifname "enp7s0" counter packets 0 bytes 0 accept
	}
}
Les compteurs ont disparu sans pour autant modifier les règles de filtrage.

Manipulations de base: Dernière modification le: 20/06/2025 à 14:46 par prof