[critical] Correction de networking/nftables.md
parent
246d2ce100
commit
04349892b6
|
@ -3,11 +3,11 @@
|
||||||
## Introduction
|
## Introduction
|
||||||
|
|
||||||
`NFTables` est un outil permettant de de gérer une partie de la gestion des
|
`NFTables` est un outil permettant de de gérer une partie de la gestion des
|
||||||
paquets dans une machine Linux. Cet outil supplante ses prédécesseurs xtables
|
paquets réseaux dans une machine Linux. Cet outil supplante ses prédécesseurs
|
||||||
(iptables, ip6tables, arptables, ...) et son support ets inclus dans les noyaux
|
xtables (iptables, ip6tables, arptables, ...) et son support ets inclus dans les
|
||||||
Linux modernes. Lorsqu'un paquet traverse, sort de ou entre sur votre machine,
|
noyaux Linux modernes. Lorsqu'un paquet traverse, sort de ou entre sur votre
|
||||||
il parcourt un certain chemin de prises de décisions afin de décider de son
|
machine, il parcourt un certain chemin de prises de décisions afin de décider de
|
||||||
sort (jeté, accepté (= intouché), modifié, ...).
|
son sort (jeté, accepté (= intouché), modifié, ...).
|
||||||
|
|
||||||
## Structure de NFTables
|
## Structure de NFTables
|
||||||
|
|
||||||
|
@ -23,7 +23,8 @@ de décision du noyau.
|
||||||
|
|
||||||
Là encore, on peut souhaiter avoir des chaînes différentes pour les paquets IP,
|
Là encore, on peut souhaiter avoir des chaînes différentes pour les paquets IP,
|
||||||
IPv6, arp, ... . Pour cette raison, les chaînes sont regroupées dans des tables,
|
IPv6, arp, ... . Pour cette raison, les chaînes sont regroupées dans des tables,
|
||||||
chacune ne concernant qu'un type de protocole de couche 3.
|
chacune ne concernant un ou plusieurs type de protocole (généralement de couche
|
||||||
|
3).
|
||||||
|
|
||||||
|
|
||||||
La structure des règles NFTables ainsi obtenue devient :
|
La structure des règles NFTables ainsi obtenue devient :
|
||||||
|
@ -55,7 +56,7 @@ La structure des règles NFTables ainsi obtenue devient :
|
||||||
| | +----------------------------------+ | |
|
| | +----------------------------------+ | |
|
||||||
| | | |
|
| | | |
|
||||||
| | ... | |
|
| | ... | |
|
||||||
| |----------------------------------------------------+ |
|
| +----------------------------------------------------+ |
|
||||||
| |
|
| |
|
||||||
| +----------------------------------------------------+ |
|
| +----------------------------------------------------+ |
|
||||||
| | Chaîne concernant le crochet du NAT en entrée | |
|
| | Chaîne concernant le crochet du NAT en entrée | |
|
||||||
|
@ -70,7 +71,7 @@ La structure des règles NFTables ainsi obtenue devient :
|
||||||
| | +----------------------------------+ | |
|
| | +----------------------------------+ | |
|
||||||
| | | |
|
| | | |
|
||||||
| | ... | |
|
| | ... | |
|
||||||
| |----------------------------------------------------+ |
|
| +----------------------------------------------------+ |
|
||||||
| |
|
| |
|
||||||
+------------------------------------------------------------+
|
+------------------------------------------------------------+
|
||||||
|
|
||||||
|
@ -86,16 +87,16 @@ La structure des règles NFTables ainsi obtenue devient :
|
||||||
|
|
||||||
Comme le décrit le schéma précédent, les tables sont juxtaposées les unes les
|
Comme le décrit le schéma précédent, les tables sont juxtaposées les unes les
|
||||||
autres. Lorsqu'un paquet est traité, selon le protocole utilisé, aucune, une ou
|
autres. Lorsqu'un paquet est traité, selon le protocole utilisé, aucune, une ou
|
||||||
plusieurs tables seront utilisées pour charger les règles à appliquer. \`A
|
plusieurs tables seront utilisées pour charger les règles à appliquer. À
|
||||||
chaque étape de traitement du paquet, les chaînes correspondant au paquet seront
|
chaque étape de traitement du paquet, les chaînes correspondant au paquet seront
|
||||||
alors appliquées.
|
alors appliquées.
|
||||||
|
|
||||||
Un paquet parcourt les règles d'une chaîne dans l'ordre de leur écriture.
|
Un paquet parcourt les règles d'une chaîne dans l'ordre de leur écriture.
|
||||||
Si une action est indiquée dans le corps d'une règle, elle sera exécutée si
|
Si une action est indiquée dans le corps d'une règle, elle sera exécutée si
|
||||||
toutes les conditions le précédant dans l'écriture de la règle sont vérifiées.
|
toutes les conditions la précédant dans l'écriture de la règle sont vérifiées.
|
||||||
|
|
||||||
Le parcourt d'une chaîne s'arrête lorsqu'un verdict s'applique au paquet
|
Le parcourt d'une chaîne s'arrête lorsqu'un verdict s'applique au paquet
|
||||||
considéré. Un verdict est une cation particulière parmi peut être :
|
considéré. Un verdict est une action particulière parmi peut être :
|
||||||
* l'abandon du paquet
|
* l'abandon du paquet
|
||||||
|
|
||||||
* l'abandon du paquet avec choix du message retourné à l'émetteur
|
* l'abandon du paquet avec choix du message retourné à l'émetteur
|
||||||
|
@ -114,7 +115,7 @@ Une table est caractérisée par :
|
||||||
* Un nom
|
* Un nom
|
||||||
|
|
||||||
* Un type de paquet : principalement ip (pour l'IPv4), ip6 (pour l'IPv6) et inet
|
* Un type de paquet : principalement ip (pour l'IPv4), ip6 (pour l'IPv6) et inet
|
||||||
* (pour l'IPv4 et IPv6).
|
(pour l'IPv4 et IPv6).
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -154,7 +155,7 @@ reject [with MSG], ...).
|
||||||
|
|
||||||
Une chaîne peut être créée par la commande `nft add chain <type de la table>
|
Une chaîne peut être créée par la commande `nft add chain <type de la table>
|
||||||
<nom de la table> <nom de la chaîne> '{ type <type> hook <crochet> priority
|
<nom de la table> <nom de la chaîne> '{ type <type> hook <crochet> priority
|
||||||
<priorité>; [policy <verdict par défaut>;] }', ou par le morceau de
|
<priorité>; [policy <verdict par défaut>;] }'`, ou par le morceau de
|
||||||
configuration textuelle suivant :
|
configuration textuelle suivant :
|
||||||
|
|
||||||
```
|
```
|
||||||
|
@ -174,19 +175,19 @@ Une règle est caractérisée par :
|
||||||
|
|
||||||
Dans la définition d'une règle, il est possible d'indiquer :
|
Dans la définition d'une règle, il est possible d'indiquer :
|
||||||
|
|
||||||
* des conditions écrites `<type> <valeur>`, o' \`u le type est un champ du
|
* des conditions écrites `<type> <valeur>`, où le type est un champ du
|
||||||
paquet et la valeur est la valeur du champ, comme par exemple `ip protocol
|
paquet et la valeur est la valeur du champ, comme par exemple `ip protocol
|
||||||
udp` (type : `ip protocol` représentant le champ du protocole de couche 4 dans
|
udp` (type : `ip protocol` représentant le champ du protocole de couche 4 dans
|
||||||
un paquet IPv4, valeur `tcp`).
|
un paquet IPv4, valeur `tcp`).
|
||||||
|
|
||||||
Les types peuvent être décrits par `nft describe <type>`.
|
Les types peuvent être décrits par `nft describe <type>`.
|
||||||
|
|
||||||
* des actions, parmi lesquelles ``compter les paquets'' (`counter`), logger les
|
* des actions, parmi lesquelles "compter les paquets" (`counter`), logger les
|
||||||
paquets (`log prefix ...`).
|
paquets (`log prefix ...`).
|
||||||
|
|
||||||
|
|
||||||
Pour ajouter une règle, il est possible d'utiliser `nft add rule <type de la
|
Pour ajouter une règle, il est possible d'utiliser `nft add rule <type de la
|
||||||
table> <nom de la table> <nom de la chaîne> '<règle>''`, ou d'ajouter la règle
|
table> <nom de la table> <nom de la chaîne> '<règle>'`, ou d'ajouter la règle
|
||||||
sur une ligne dans la configuration textuelle.
|
sur une ligne dans la configuration textuelle.
|
||||||
|
|
||||||
|
|
||||||
|
@ -196,7 +197,7 @@ sur une ligne dans la configuration textuelle.
|
||||||
|
|
||||||
* `nft -f <file>` lit la configuration d'un ficher et l'applique
|
* `nft -f <file>` lit la configuration d'un ficher et l'applique
|
||||||
|
|
||||||
* `systemctl reload nftables` a le même effet que `nft -f /etc/nftables.conf` di
|
* `systemctl reload nftables` a le même effet que `nft -f /etc/nftables.conf` si
|
||||||
le service existe.
|
le service existe.
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue