<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://doc.ycharbi.fr/index.php?action=history&amp;feed=atom&amp;title=Nftables</id>
	<title>Nftables - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="https://doc.ycharbi.fr/index.php?action=history&amp;feed=atom&amp;title=Nftables"/>
	<link rel="alternate" type="text/html" href="https://doc.ycharbi.fr/index.php?title=Nftables&amp;action=history"/>
	<updated>2026-04-17T01:16:28Z</updated>
	<subtitle>Historique des versions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.40.0</generator>
	<entry>
		<id>https://doc.ycharbi.fr/index.php?title=Nftables&amp;diff=1099&amp;oldid=prev</id>
		<title>Ycharbi : /* Utilisation native */ Ajout d'un lien vers &quot;iptables-persistent&quot;.</title>
		<link rel="alternate" type="text/html" href="https://doc.ycharbi.fr/index.php?title=Nftables&amp;diff=1099&amp;oldid=prev"/>
		<updated>2019-12-10T15:24:48Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Utilisation native : &lt;/span&gt; Ajout d&amp;#039;un lien vers &amp;quot;iptables-persistent&amp;quot;.&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;fr&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Version précédente&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version du 10 décembre 2019 à 17:24&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l13&quot;&gt;Ligne 13 :&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 13 :&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Via un fichier de configuration: &amp;lt;source lang=&amp;quot;bash&amp;quot; inline&amp;gt;/etc/nftables.conf&amp;lt;/source&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Via un fichier de configuration: &amp;lt;source lang=&amp;quot;bash&amp;quot; inline&amp;gt;/etc/nftables.conf&amp;lt;/source&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Il est à noter que Nftables intègre de base le concept de persistance des règles à condition d'utiliser la troisième méthode (celle du fichier de configuration). Les règles seront donc chargées automatiquement au démarrage par le service &amp;lt;source lang=&quot;bash&quot; inline&amp;gt;nftables.service&amp;lt;/source&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Il est à noter que Nftables intègre de base le concept de &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Iptables#Persistance_des_r.C3.A8gles|&lt;/ins&gt;persistance des règles&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]] &lt;/ins&gt;à condition d'utiliser la troisième méthode (celle du fichier de configuration). Les règles seront donc chargées automatiquement au démarrage par le service &amp;lt;source lang=&quot;bash&quot; inline&amp;gt;nftables.service&amp;lt;/source&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Listage==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Listage==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Ycharbi</name></author>
	</entry>
	<entry>
		<id>https://doc.ycharbi.fr/index.php?title=Nftables&amp;diff=1072&amp;oldid=prev</id>
		<title>Ycharbi : Page créée avec « Category:pare feux  Nftables est le successeur d'Iptables. Il a la particularité principale d'être plus complexe à configuré (comme à peu près tout les nouveaux... »</title>
		<link rel="alternate" type="text/html" href="https://doc.ycharbi.fr/index.php?title=Nftables&amp;diff=1072&amp;oldid=prev"/>
		<updated>2019-09-11T18:14:43Z</updated>

		<summary type="html">&lt;p&gt;Page créée avec « &lt;a href=&quot;/index.php/Cat%C3%A9gorie:Pare_feux&quot; title=&quot;Catégorie:Pare feux&quot;&gt;Category:pare feux&lt;/a&gt;  Nftables est le successeur d&amp;#039;Iptables. Il a la particularité principale d&amp;#039;être plus complexe à configuré (comme à peu près tout les nouveaux... »&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Category:pare feux]]&lt;br /&gt;
&lt;br /&gt;
Nftables est le successeur d'Iptables. Il a la particularité principale d'être plus complexe à configuré (comme à peu près tout les nouveaux logiciels libre... C'est une tendance déplorable...).&lt;br /&gt;
&lt;br /&gt;
Heureusement, il existe une méthode pour traduire les règles Iptables en règles Nftables. Ceci viendra combler la pauvreté tiers-mondiste de la documentation officielle.&lt;br /&gt;
&lt;br /&gt;
Par défaut, Nftables est vide de toute règle (comme son prédécesseur) mais également de toute table (on sent donc tout de suite venir la merde de la non standardisation et donc de la difficulté de développer des outils comme [[fail2ban]] par exemple...).&lt;br /&gt;
&lt;br /&gt;
=Utilisation native=&lt;br /&gt;
Il existe trois façons de configurer Nftables:&lt;br /&gt;
* Via la commande &amp;lt;source lang=&amp;quot;bash&amp;quot; inline&amp;gt;nft&amp;lt;/source&amp;gt; se comportant comme la commande &amp;lt;source lang=&amp;quot;bash&amp;quot; inline&amp;gt;iptables&amp;lt;/source&amp;gt;&lt;br /&gt;
* Via un shell interactif accessible via la commande &amp;lt;source lang=&amp;quot;bash&amp;quot; inline&amp;gt;nft -i&amp;lt;/source&amp;gt;&lt;br /&gt;
* Via un fichier de configuration: &amp;lt;source lang=&amp;quot;bash&amp;quot; inline&amp;gt;/etc/nftables.conf&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il est à noter que Nftables intègre de base le concept de persistance des règles à condition d'utiliser la troisième méthode (celle du fichier de configuration). Les règles seront donc chargées automatiquement au démarrage par le service &amp;lt;source lang=&amp;quot;bash&amp;quot; inline&amp;gt;nftables.service&amp;lt;/source&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Listage==&lt;br /&gt;
'''Lister les tables'''&lt;br /&gt;
 nft list tables&lt;br /&gt;
&lt;br /&gt;
'''Lister les chaînes'''&lt;br /&gt;
 nft list chains&lt;br /&gt;
&lt;br /&gt;
'''Lister les règles'''&lt;br /&gt;
 nft list table ip filter&lt;br /&gt;
&lt;br /&gt;
Note: Les arguments &amp;quot;ip&amp;quot; et &amp;quot;filter&amp;quot; sont variables en fonction de ce que vous voulez:&lt;br /&gt;
* '''ip''': pour de l'IPv4. Peut être '''ip6''' pour de l'IPv6 ou '''inet''' pour les deux&lt;br /&gt;
* '''filter''': le nom de la table que vous avez définit à la création&lt;br /&gt;
&lt;br /&gt;
==Création d'une table==&lt;br /&gt;
Par convention, les tables Nftables sont écrites en minuscules (contrairement à Iptables).&lt;br /&gt;
&lt;br /&gt;
Création d'une table nommée ''filter'' agissant sur IPv4&lt;br /&gt;
 nft add table ip filter&lt;br /&gt;
&lt;br /&gt;
==Création d'une chaîne==&lt;br /&gt;
Création de la chaîne input avec blocage du trafic par défaut&lt;br /&gt;
 nft add chain ip filter input { type filter hook input priority 0\; policy drop\; }&lt;br /&gt;
&lt;br /&gt;
''&amp;lt;commande&amp;gt; &amp;lt;action&amp;gt; &amp;lt;famille_IP&amp;gt; &amp;lt;nom_table&amp;gt; &amp;lt;nom_chaine&amp;gt; { type &amp;lt;filter|route|nat&amp;gt; hook &amp;lt;prerouting|input|output|postrouting} priority &amp;lt;poids_comme_MX&amp;gt;\; policy &amp;lt;accept|drop&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
==Création d'une règle==&lt;br /&gt;
Création d'une règle d'acceptation du port 80&lt;br /&gt;
 nft add rule ip filter input tcp dport 80 accept&lt;br /&gt;
&lt;br /&gt;
==Suppression d'une règle==&lt;br /&gt;
Pour supprimer une règle, il faut d'abord afficher un numéro lié aux règles&lt;br /&gt;
 nft --handle list table ip filter&lt;br /&gt;
&lt;br /&gt;
''Dans l'exemple, le numéro de la règle est 2. L'attribution de ces numéros n'est pas incrémental mais aléatoire (ce ne serai pas drôle sinon...).''&lt;br /&gt;
&lt;br /&gt;
Suppression de la règle&lt;br /&gt;
 nft delete rule ip filter input handle 2&lt;br /&gt;
&lt;br /&gt;
==Sources de la section==&lt;br /&gt;
* https://wiki.nftables.org/wiki-nftables/index.php/Configuring_tables&lt;br /&gt;
* https://www.mankier.com/8/nft&lt;br /&gt;
* https://wiki.archlinux.org/index.php/Nftables&lt;br /&gt;
&lt;br /&gt;
=Utilisation par conversion=&lt;br /&gt;
Une fonction indispensable pour gérer le pare feux via Nftables est de convertir les règles Iptables en règles pour celui-ci. Comme ça, pas besoin de galérer des heures à trouver la bonne syntaxe (particulièrement à chier, il faut le dire) pour de pauvres règles toutes simples.&lt;br /&gt;
&lt;br /&gt;
L'outil miracle se nomme &amp;lt;source lang=&amp;quot;bash&amp;quot; inline&amp;gt;iptables-translate&amp;lt;/source&amp;gt; et se trouve dans le paquet &amp;lt;source lang=&amp;quot;bash&amp;quot; inline&amp;gt;iptables&amp;lt;/source&amp;gt;. Il est donc probablement déjà présent sur votre machine (testé sur Debian Buster).&lt;br /&gt;
&lt;br /&gt;
==Conversion de règles==&lt;br /&gt;
L'outil est très simple d'utilisation. Il suffit de remplacer la commande &amp;lt;source lang=&amp;quot;bash&amp;quot; inline&amp;gt;iptables&amp;lt;/source&amp;gt; par &amp;lt;source lang=&amp;quot;bash&amp;quot; inline&amp;gt;iptables-translate&amp;lt;/source&amp;gt; lorsque vous tapez vos règles. Ces dernières ne s'appliquerons pas, l’outil redirigeant la chaîne de caractère convertie dans le ''stdout'' de votre terminal en règle Nftables prête à l'emploi.&lt;br /&gt;
&lt;br /&gt;
Par exemple:&lt;br /&gt;
 iptables-translate -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
donne:&lt;br /&gt;
 nft add rule ip filter INPUT ct state related,established counter accept&lt;br /&gt;
&lt;br /&gt;
Il est possible de donner directement un fichier de sauvegarde Iptables à Nftables afin de convertir une configuration complète en un seul coup ! C'est presque trop beau pour être vrai tellement c'est facile et que ça marche du premier coup sans galère (on est vraiment pas habitué à ça dans le monde du libre) !&lt;br /&gt;
&lt;br /&gt;
Comme la syntaxe est légèrement différente entre les règles fournies par la commande &amp;lt;source lang=&amp;quot;bash&amp;quot; inline&amp;gt;iptables&amp;lt;/source&amp;gt; et un fichier de sauvegarde Iptables. Il faut utilisé une autre commande toujours présente dans le même paquet:&lt;br /&gt;
 iptables-restore-translate -f /etc/iptables/rules.v4 &amp;gt; /etc/nftables.conf&lt;br /&gt;
&lt;br /&gt;
Ainsi, un ensemble de règles comme [https://confs.imirhil.fr/20170513_root66_securite-admin-sys/#36 celles-ci]:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
*filter&lt;br /&gt;
:INPUT DROP&lt;br /&gt;
:FORWARD DROP&lt;br /&gt;
:OUTPUT DROP&lt;br /&gt;
&lt;br /&gt;
# Windows, ça spam…&lt;br /&gt;
-A INPUT -p udp -d 255.255.255.255 -j DROP&lt;br /&gt;
-A INPUT -p udp -d 192.168.1.255 -j DROP&lt;br /&gt;
-A INPUT -p udp -m multiport --dport netbios-ns,netbios-dgm,netbios-ssn -j DROP&lt;br /&gt;
&lt;br /&gt;
-A INPUT -i lo -j ACCEPT&lt;br /&gt;
-A INPUT -p icmp -j ACCEPT&lt;br /&gt;
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A INPUT -p tcp -m tcp --dport ssh -j ACCEPT&lt;br /&gt;
-A INPUT -p tcp -m tcp --dport http -j ACCEPT&lt;br /&gt;
-A INPUT -p tcp -m tcp --dport https -j ACCEPT&lt;br /&gt;
-A INPUT -p tcp -m tcp --dport smtp -j ACCEPT&lt;br /&gt;
-A INPUT -p tcp -m tcp --dport submission -j ACCEPT&lt;br /&gt;
-A INPUT -p tcp -m tcp --dport imaps -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
-A OUTPUT -o lo -j ACCEPT&lt;br /&gt;
-A OUTPUT -p icmp -j ACCEPT&lt;br /&gt;
-A OUTPUT -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
COMMIT&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ressemble à ça après conversion:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
table ip filter {&lt;br /&gt;
	chain INPUT {&lt;br /&gt;
		type filter hook input priority 0; policy drop;&lt;br /&gt;
		ip protocol udp ip daddr 255.255.255.255 counter packets 0 bytes 0 drop&lt;br /&gt;
		ip protocol udp ip daddr 192.168.150.255 counter packets 0 bytes 0 drop&lt;br /&gt;
		udp dport { netbios-ns, netbios-dgm, netbios-ssn } counter packets 0 bytes 0 drop&lt;br /&gt;
		iifname &amp;quot;lo&amp;quot; counter packets 0 bytes 0 accept&lt;br /&gt;
		ip protocol icmp counter packets 0 bytes 0 accept&lt;br /&gt;
		ct state established,related counter packets 402 bytes 28608 accept&lt;br /&gt;
		tcp dport ssh counter packets 1 bytes 88 accept&lt;br /&gt;
		tcp dport http counter packets 0 bytes 0 accept&lt;br /&gt;
		tcp dport https counter packets 0 bytes 0 accept&lt;br /&gt;
		tcp dport smtp counter packets 0 bytes 0 accept&lt;br /&gt;
		tcp dport submission counter packets 0 bytes 0 accept&lt;br /&gt;
		tcp dport imaps counter packets 0 bytes 0 accept&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain FORWARD {&lt;br /&gt;
		type filter hook forward priority 0; policy drop;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain OUTPUT {&lt;br /&gt;
		type filter hook output priority 0; policy drop;&lt;br /&gt;
		oifname &amp;quot;lo&amp;quot; counter packets 0 bytes 0 accept&lt;br /&gt;
		ip protocol icmp counter packets 0 bytes 0 accept&lt;br /&gt;
		ct state established,related,new counter packets 234 bytes 35560 accept&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Franchement, vous vous imaginiez taper ça à la main sérieux ? Avec un retour d'erreur n'aidant absolument pas à la résolution de problème, trouver la bonne syntaxe tout seul relève de la pure torture.&lt;br /&gt;
&lt;br /&gt;
{{info|Ne pas oublier d'ajouter le shebang du fichier de destination (&amp;lt;source lang=&amp;quot;bash&amp;quot; inline&amp;gt;#!/usr/sbin/nft -f&amp;lt;/source&amp;gt;) et éventuellement la première règle de purge pour bien gérer un redémarrage du service à chaud (&amp;lt;source lang=&amp;quot;bash&amp;quot; inline&amp;gt;flush ruleset&amp;lt;/source&amp;gt; équivalent de &amp;lt;source lang=&amp;quot;bash&amp;quot; inline&amp;gt;iptables -F&amp;lt;/source&amp;gt;). Ce fichier doit avoir les droits d'exécution (il s'agit d'un script).}}&lt;br /&gt;
&lt;br /&gt;
==Source de la section==&lt;br /&gt;
* https://wiki.nftables.org/wiki-nftables/index.php/Moving_from_iptables_to_nftables&lt;/div&gt;</summary>
		<author><name>Ycharbi</name></author>
	</entry>
</feed>