Provided by: manpages-fr_4.27.0-1_all bug

NOM

       iptables-extensions — Liste des extensions dans la distribution standard d’iptables

SYNOPSIS

       ip6tables [-m nom [options_module...]] [-j nom_action [options_action...]

       iptables [-m nom [options_module...]] [-j nom_action [options_action...]

EXTENSIONS DE COMPARAISON

       iptables  peut  utiliser des modules de comparaison étendue de paquets à l’aide des options -m ou --match
       suivies du nom du module de comparaison ; différentes options de ligne de commande  complémentaires  sont
       alors  disponibles  en  fonction  du  module  spécifique.  Vous  pouvez  spécifier  plusieurs  modules de
       comparaison étendue sur une seule ligne, et vous pouvez utiliser l’options -h  ou  --help,  une  fois  le
       module spécifié, afin d’obtenir une aide spécifique à ce dernier. Les modules de comparaison étendue sont
       pris en compte dans l’ordre selon lequel ils sont spécifiés dans la règle.

       Si  l’option  -p  ou --protocol a été spécifiée et si et seulement si une option inconnue est rencontrée,
       iptables va essayer de charger un module de comparaison de même nom que celui du protocole pour tenter de
       rendre l’option disponible.

   addrtype
       Ce module vérifie la correspondance des paquets en fonction de leur type d’adresse. Les  types  d’adresse
       sont  utilisés  dans la pile réseau du noyau et classent les adresses en plusieurs groupes. La définition
       exacte de ces groupes dépend du protocole spécifique de couche trois.

       Les types d’adresse valables sont les suivants :

       UNSPEC une adresse non spécifiée (par exemple 0.0.0.0)

       UNICAST
              une adresse unicast (connexion point-à-point)

       LOCAL  une adresse locale

       BROADCAST
              une adresse de broadcast (diffusion générale)

       ANYCAST
              un paquet anycast (une adresse pour plusieurs destinataires)

       MULTICAST
              une adresse multicast (diffusion vers un groupe de destinataires)

       BLACKHOLE
              une adresse blackhole (trou noir)

       UNREACHABLE
              une adresse inaccessible

       PROHIBIT
              une adresse interdite

       THROW  FIXME

       NAT    FIXME

       XRESOLVE

       [!] --src-type type
              Vérifier si l’adresse source est du type donné

       [!] --dst-type type
              Vérifier si l’adresse de destination est du type donné

       --limit-iface-in
              La vérification du type d’adresse peut être limitée à l’interface par laquelle  entre  le  paquet.
              Cette  option  n’est  valable  que dans les chaînes PREROUTING, INPUT et FORWARD. Elle ne peut pas
              être spécifiée en combinaison avec l’option --limit-iface-out.

       --limit-iface-out
              La vérification du type d’adresse peut être limitée à l’interface par  laquelle  sort  le  paquet.
              Cette  option  n’est valable que dans les chaînes POSTROUTING, OUTPUT et FORWARD. Elle ne peut pas
              être spécifiée en combinaison avec l’option --limit-iface-in.

   ah (spécifique à IPv6)
       Ce module vérifie la correspondance des paramètres dans l’en-tête Authentication des paquets IPsec.

       [!] --ahspi spi[:spi]
              Vérifier la correspondance des SPI (Security Parameters Index — Index des Paramètres de Sécurité).

       [!] --ahlen taille
              Taille totale de cet en-tête en octets.

       --ahres
              Correspondance si le champ réservé est rempli avec des zéros.

   ah (spécifique à IPv4)
       Ce module vérifie la correspondance des  SPI  (Security  Parameters  Index  —  Index  des  Paramètres  de
       Sécurité) dans l’en-tête Authentication des paquets IPsec.

       [!] --ahspi spi[:spi]

   bpf
       Vérifier les correspondances en utilisant un filtre de socket Linux. Prend comme paramètre le chemin d’un
       objet  eBPF  (Extended Berkeley Packet Filter) ou d’un programme cBPF (Classic Berkeley Packet Filter) au
       format décimal.

       --object-pinned chemin
              Spécifier le chemin vers un objet eBPF épinglé.

       Les applications chargent les programmes eBPF dans le noyau à l’aide de l’appel système bpf()  et  de  la
       commande BPF_PROG_LOAD, et peuvent les épingler (référencer) dans un système de fichiers virtuel à l’aide
       de  BPF_OBJ_PIN.  Pour  utiliser  un  objet  épinglé  dans iptables, montez le système de fichiers bpf en
       utilisant

              mount -t bpf bpf ${BPF_MOUNT}

       puis insérez le filtre dans iptables avec son chemin :

              iptables -A OUTPUT -m bpf --object-pinned ${BPF_MOUNT}/{PINNED_PATH} -j ACCEPT

       --bytecode code
              Passer  le  format  de  bytecode  (code  intermédiaire)  BPF  tel  que  généré  par   l’utilitaire
              nfbpf_compile.

       Le  format  de  code est similaire à la sortie de la commande « tcpdump -ddd » : une ligne qui indique le
       nombre d’instructions suivie d’une ligne pour chaque instruction. Les lignes d’instruction respectent  le
       motif « u16 u8 u8 u32 » en notation décimale. Les champs codent l’opération, le décalage de saut si vrai,
       le décalage de saut si faux et le champ multi-usage générique « K ». Les commentaires ne sont pas pris en
       charge.

       Par  exemple,  pour  ne  lire  que  les paquets correspondant à « ip proto 6 », insérez ce qui suit, sans
       commentaires, ni blancs à la fin :

              4 # nombre d’instructions
              48 0 0 9 # charger le bytecode ip->proto
              21 0 1 6 # saut égal à IPPROTO_TCP
              6 0 0 1 # renvoyer réussite (différent de zéro)
              6 0 0 0 # renvoyer échec (zéro)

       Vous pouvez transmettre ce filtre à la vérification  de  correspondance  bpf  à  l’aide  de  la  commande
       suivante :

              iptables -A OUTPUT -m bpf --bytecode '4,48 0 0 9,21 0 1 6,6 0 0 1,6 0 0 0' -j ACCEPT

       À la place, vous pouvez invoquer l’utilitaire nfbpf_compile.

              iptables -A OUTPUT -m bpf --bytecode "`nfbpf_compile RAW 'ip proto 6'`" -j ACCEPT

       Ou  alors,  utilisez tcpdump -ddd. Dans ce cas, générez un BPF ciblant un dispositif avec le même type de
       liaison de données que la correspondance de xtables. iptables transmet les paquets de la couche réseau  à
       la  couche  supérieure, sans couche MAC. Sélectionner un dispositif ayant pour type de liaison de données
       RAW, comme un dispositif « tun » :

              ip tuntap add tun0 mode tun
              ip link set tun0 up
              tcpdump -ddd -i tun0 ip proto 6

       Utilisez la commande « tcpdump -L -i $dev » pour obtenir la liste des types de liaison de données  connus
       pour un dispositif donné.

       Pour en apprendre davantage à propos de BPF, lisez la page de manuel bpf(4) de FreeBSD.

   cgroup
       [!] --path chemin
              Vérifier la correspondance de l’appartenance à cgroup2.

              Chaque  socket  est  associé  au  cgroup  version  2  des  processus  de création. Les paquets qui
              correspondent viennent de (ou vont  vers)  tous  les  sockets  de  la  sous-hiérarchie  du  chemin
              spécifié. Le chemin doit être relatif à la racine de la hiérarchie cgroup2.

       [!] --cgroup identifiant_classe
              Vérifier la correspondance à l’identifiant de classe net_cls de cgroup.

              L’identifiant  de  classe  est  le marqueur défini à l’aide du contrôleur net_cls de cgroup. Cette
              option ne peut pas être utilisée en combinaison avec l’option --path.

       Exemple :

              iptables -A OUTPUT -p tcp --sport 80 -m cgroup ! --path service/serveur_HTTP -j DROP

              iptables -A OUTPUT -p tcp --sport 80 -m cgroup ! --cgroup 1 -j DROP

       IMPORTANT : lorsqu’il est utilisé dans la chaîne INPUT, le vérificateur de  correspondance  cgroup  n’est
       pas  actuellement  d’une  grande  utilité,  car  il ne vérifie que la correspondance des paquets qui sont
       traités pour les sockets locaux à l’aide d’un  démultiplexage  de  socket  précoce.  C’est  pourquoi  son
       utilisation dans la chaîne INPUT n’est pas recommandée, sauf si ses implications sont bien comprises.

       Disponible à partir de Linux 3.14.

   cluster
       Ce  module  permet  de  déployer  des grappes de passerelles et de dorsaux à partage de charge sans avoir
       besoin de répartiteurs de charge.

       Cette  recherche  de  correspondance  nécessite  que  tous  les  nœuds  voient  les  mêmes  paquets.   La
       correspondance  «  cluster » pourra alors décider si ce nœud doit gérer un paquet en fonction des options
       suivantes :

       --cluster-total-nodes nombre
              Définir le nombre total de nœuds dans la grappe.

       [!] --cluster-local-node numéro
              Définir l’identifiant du numéro de nœud local.

       [!] --cluster-local-nodemask masque
              Définir le masque de l’identifiant du numéro de nœud local. Vous pouvez utiliser cette option à la
              place de --cluster-local-node.

       --cluster-hash-seed valeur
              Définir la valeur de germe du hachage de Jenkins.

       Exemple :

              iptables -A PREROUTING -t mangle -i eth1 -m cluster --cluster-total-nodes 2 --cluster-local-node 1
              --cluster-hash-seed 0xdeadbeef -j MARK --set-mark 0xffff

              iptables -A PREROUTING -t mangle -i eth2 -m cluster --cluster-total-nodes 2 --cluster-local-node 1
              --cluster-hash-seed 0xdeadbeef -j MARK --set-mark 0xffff

              iptables -A PREROUTING -t mangle -i eth1 -m mark ! --mark 0xffff -j DROP

              iptables -A PREROUTING -t mangle -i eth2 -m mark ! --mark 0xffff -j DROP

       Et les commandes suivantes pour faire que tous les nœuds voient les mêmes paquets :

              ip maddr add 01:00:5e:00:01:01 dev eth1

              ip maddr add 01:00:5e:00:01:02 dev eth2

              arptables -A OUTPUT -o eth1 --h-length 6 -j mangle --mangle-mac-s 01:00:5e:00:01:01

              arptables  -A  INPUT  -i  eth1  --h-length  6  --destination-mac   01:00:5e:00:01:01   -j   mangle
              --mangle-mac-d 00:zz:yy:xx:5a:27

              arptables -A OUTPUT -o eth2 --h-length 6 -j mangle --mangle-mac-s 01:00:5e:00:01:02

              arptables   -A   INPUT   -i  eth2  --h-length  6  --destination-mac  01:00:5e:00:01:02  -j  mangle
              --mangle-mac-d 00:zz:yy:xx:5a:27

       NOTE : les commandes arptables ci-avant utilisent la syntaxe  courante.  Si  vous  utilisez  arptables-jf
       fournie  avec  certaines  versions de RedHat, CentOS et Fedora, vous ferez face à des erreurs de syntaxe.
       Dans ce cas, vous  devrez  adapter  ces  exemples  à  la  syntaxe  d’arptables-jf  pour  qu’ils  puissent
       fonctionner.

       Dans  le cas des connexions TCP, la fonctionnalité pickup doit être désactivée pour éviter de marquer les
       paquets TCP ACK entrant dans le sens de la réponse comme valables.

              echo 0 > /proc/sys/net/netfilter/nf_conntrack_tcp_loose

   comment
       Cette extension permet d’ajouter des commentaires (jusqu’à 256 caractères) à toute règle.

       --comment commentaire

       Exemple :
              iptables -A INPUT -i eth1 -m comment --comment "mon réseau local"

   connbytes
       Vérifier la correspondance en fonction du nombre d’octets ou de paquets qu’une connexion (ou un des  deux
       flux constituant la connexion) a déjà transmis, ou en fonction du nombre moyen d’octets par paquet.

       Les compteurs sont sur 64 bits et ne risquent donc pas de déborder ;)

       La  principale  utilisation consiste à détecter les téléchargements de longue durée et à les marquer pour
       être programmés avec une priorité inférieure dans le contrôle de trafic.

       Le nombre d’octets transférés par connexion peut être visualisé à l’aide de « conntrack -L » et accédé  à
       l’aide de ctnetlink.

       Notez  que  pour  les  connexions  qui  ne  possèdent  pas d’informations de comptage, la vérification de
       correspondance renverra toujours faux. Le drapeau de sysctl « net.netfilter.nf_conntrack_acct  »  définit
       si  les nouvelles connexions feront l’objet d’un comptage d’octets et de paquets. Les flux des connexions
       existantes ne gagneront/perdront pas une/leur structure de comptage  après  une  bascule  du  drapeau  de
       sysctl.

       [!] --connbytes mini[:maxi]
              Vérifier la correspondance des paquets issus d’une connexion dont le nombre de paquets ou d’octets
              transmis,  ou  la taille moyenne des paquets est supérieure à mini et inférieure à maxi octets. Si
              maxi est omis, seule la supériorité de la valeur à mini est vérifiée. « ! » permet de vérifier  la
              correspondance des paquets qui ne correspondent pas à l’intervalle spécifié.

       --connbytes-dir {original|reply|both}
              Paquets à prendre en compte

       --connbytes-mode {packets|bytes|avgpkt}
              Cette option permet de définir s’il faut vérifier le nombre de paquets ou d’octets transmis, ou la
              taille  moyenne (en octets) de tous les paquets déjà reçus. Notez que lorsque « both « est utilisé
              en combinaison avec « avgpkt », et  si  les  données  transitent  principalement  dans  une  seule
              direction  (comme par exemple avec HTTP), la taille moyenne des paquets sera à peu près égale à la
              moitié de celle des paquets de données proprement dits.

       Exemple :
              iptables .. -m connbytes --connbytes 10000:100000 --connbytes-dir both --connbytes-mode bytes ...

   connlabel
       Ce module fait correspondre ou ajoute des connlabels (étiquettes  de  connexion)  à  une  connexion.  Les
       connlabels sont similaires aux connmarks, sauf que les étiquettes sont basées sur des bits ; c’est-à-dire
       que toutes les étiquettes peuvent être attachées à un flux en même temps. Ce module prend actuellement en
       charge jusqu’à 128 étiquettes uniques.

       [!] --label nom
              Correspondance si l’étiquette nom à été définie pour la connexion. On peut utiliser un nombre à la
              place  d’un  nom  (lequel  sera  converti  en  nombre,  voir EXEMPLE ci-après). Utiliser un nombre
              outrepasse toujours le fichier connlabel.conf.

       --set  Définir une étiquette pour une connexion si  elle  ne  l’est  pas  déjà.  Noter  que  définir  une
              étiquette  peut  échouer,  car  le  noyau alloue la zone de stockage de l’étiquette conntrack à la
              création de la connexion, et il ne réserve que la quantité de mémoire requise par le jeu de règles
              existant à la création de la connexion. Dans ce cas, la correspondance échouera  (ou  réussira  en
              cas de négation de l’option --label).

       Cette  vérification  de  correspondance  requiert  libnetfilter_conntrack version 1.0.4 ou ultérieure. La
       traduction d’étiquette est effectuée à l’aide du fichier de configuration /etc/xtables/connlabel.conf.

       Exemple :

              0    eth0-in
              1    eth0-out
              2    ppp-in
              3    ppp-out
              4    bulk-traffic
              5    interactive

   connlimit
       Ce module vous permet de limiter le nombre de connexions simultanées à un serveur par adresse  IP  client
       (ou bloc d’adresses client).

       --connlimit-upto n
              Correspondance si le nombre de connexions existantes est inférieur ou égal à n.

       --connlimit-above n
              Correspondance si le nombre de connexions existantes est strictement supérieur à n.

       --connlimit-mask taille_préfixe
              Regrouper  les  hôtes  en  fonction  de la taille du préfixe. Pour IPv4, cette taille doit être un
              nombre entre 0 et 32 inclus (ou entre 0 et 128 pour IPv6). Par défaut, c’est la taille maximale de
              préfixe pour le protocole applicable qui sera utilisée.

       --connlimit-saddr
              Appliquer la limite au groupe source. Il s’agit du comportement par  défaut  si  --connlimit-daddr
              n’est pas spécifiée.

       --connlimit-daddr
              Appliquer la limite au groupe destination.

       Exemples :

       -   permettre 2 connexions telnet par hôte client :
           iptables -A INPUT -p tcp --syn --dport 23 -m connlimit --connlimit-above 2 -j REJECT

       -   vous pouvez aussi utiliser l’option inverse :
           iptables -A INPUT -p tcp --syn --dport 23 -m connlimit --connlimit-upto 2 -j ACCEPT

       -   limiter  le  nombre de requêtes HTTP simultanées à 16 par réseau source de classe C (masque réseau de
           24 bits) :
           iptables -p tcp --syn --dport 80 -m connlimit --connlimit-above 16 --connlimit-mask 24 -j REJECT

       -   limiter le nombre de requêtes HTTP simultanées à 16 pour le réseau de liaison locale (IPv6) :
           ip6tables -p tcp --syn --dport 80 -s fe80::/64 -m connlimit --connlimit-above 16 --connlimit-mask  64
           -j REJECT

       -   limiter le nombre de connexions vers un hôte particulier :
           ip6tables  -p  tcp  --syn  --dport  49152:65535  -d 2001:db8::1 -m connlimit --connlimit-above 100 -j
           REJECT

   connmark
       Ce module recherche une correspondance du champ « mark » de netfilter associé à  une  connexion  (et  qui
       peut être défini à l’aide de l’action CONNMARK ci-après).

       [!] --mark valeur[/masque]
              Vérifier  la correspondance des paquets dans les connexions possédant la valeur de « mark » donnée
              (si un masque est spécifié, il est combiné à l’aide d’un ET logique avec la valeur  de  «  mark  »
              avant la comparaison).

   conntrack
       Ce  module,  lorsque  combiné  avec  le  traçage  de  connexion,  permet d’accéder à l’état du traçage de
       connexion pour ce paquet ou cette connexion.

       [!] --ctstate liste_états
              liste_états est une liste, séparée par des virgules, des états de connexion à comparer. Les  états
              possibles sont énumérés ci-après.

       [!] --ctproto l4proto
              Protocol de la couche 4 à comparer (sous forme de numéro ou de nom).

       [!] --ctorigsrc adresse[/masque]

       [!] --ctorigdst adresse[/masque]

       [!] --ctreplsrc adresse[/masque]

       [!] --ctrepldst adresse[/masque]
              Comparaison avec l’adresse originelle/réponse source/destination.

       [!] --ctorigsrcport port[:port]

       [!] --ctorigdstport port[:port]

       [!] --ctreplsrcport port[:port]

       [!] --ctrepldstport port[:port]
              Comparaison  avec  le  port  originel/réponse  source/destination (TCP/UDP/etc.) ou la clé GRE. La
              comparaison avec des plages de port  n’est  prise  en  charge  que  pour  les  versions  du  noyau
              supérieures à 2.6.38.

       [!] --ctstatus liste_états
              statuslist  est  une liste, séparée par des virgules, des états de connexion à comparer. Les états
              possibles sont énumérés ci-après.

       [!] --ctexpire durée[:durée]
              Comparaison entre la durée de vie restante en secondes et la valeur  ou  l’intervalle  de  valeurs
              (incluses) donné.

       --ctdir {ORIGINAL|REPLY}
              Vérifier  la  correspondance  des paquets qui cheminent dans la direction spécifiée. Si ce drapeau
              n’est pas spécifié, les paquets qui cheminent dans les deux directions correspondent.

       États pour --ctstate :

       INVALID
              Le paquet n’est associé à aucune connexion connue.

       NEW    Le paquet a initié une nouvelle connexion ou est associé à une connexion qui n’a pas vu de paquets
              dans les deux directions.

       ESTABLISHED
              Le paquet est associé à une connexion qui a vu des paquets dans les deux directions.

       RELATED
              Le paquet initie une nouvelle connexion mais est déjà associé à  une  connexion  existante,  telle
              qu’un transfert de données FTP ou une erreur ICMP.

       UNTRACKED
              Le paquet n’est pas tracé, ce qui se produit si vous indiquez explicitement de ne pas le tracer en
              utilisant « -j CT --notrack » dans la table « raw ».

       SNAT   Un  état virtuel qui correspond si l’adresse source originelle diffère de l’adresse destination de
              réponse.

       DNAT   Un état virtuel qui correspond si l’adresse destination originelle diffère de l’adresse source  de
              réponse.

       États pour --ctstatus :

       NONE   Aucun des états ci-après.

       EXPECTED
              Il s’agit d’une connexion attendue (c’est-à-dire qu’un assistant de conntrack l’a établie).

       SEEN_REPLY
              Conntrack a vu des paquets dans les deux directions.

       ASSURED
              L’entrée de conntrack ne doit jamais être périmée prématurément.

       CONFIRMED
              La connexion est confirmée : le paquet qui en est à l’origine a quitté la boîte.

   cpu
       [!] --cpu numéro
              Vérifier  le  numéro  de  CPU (central processing unit — processeur) qui traite ce paquet. Les CPU
              sont numérotés de 0 à nombre_CPU - 1. Peut être utilisé en combinaison  avec  RPS  (Remote  Packet
              Steering  —  Pilotage  de  paquets  à  distance)  ou les cartes réseau à files d’attente multiples
              (multiqueue NIC) pour répartir le trafic réseau sur différentes files d’attente.

       Exemple :

       iptables -t nat -A PREROUTING -p tcp --dport 80 -m cpu --cpu 0 -j REDIRECT --to-ports 8080

       iptables -t nat -A PREROUTING -p tcp --dport 80 -m cpu --cpu 1 -j REDIRECT --to-ports 8081

       Disponible depuis Linux 2.6.36.

   dccp
       [!] --source-port,--sport port[:port]

       [!] --destination-port,--dport port[:port]

       [!] --dccp-types masque
              Correspondance si le type de paquet DCCP (Datagram Congestion  Control  Protocol  —  Protocole  de
              Contrôle  de  Congestion  des Datagrammes) fait partie de masque. masque est une liste de types de
              paquet séparés par des virgules. Les types  de  paquets  sont  :  REQUEST,  RESPONSE,  DATA,  ACK,
              DATAACK, CLOSEREQ, CLOSE, RESET, SYNC, SYNCACK et INVALID.

       [!] --dccp-option nombre
              Correspondance si l’option DCCP est définie.

   devgroup
       Vérifier la correspondance du groupe de dispositifs de l’interface d’un paquet entrant/sortant.

       [!] --src-group nom
              Vérifier la correspondance du groupe de dispositifs du dispositif entrant.

       [!] --dst-group nom
              Vérifier la correspondance du groupe de dispositifs du dispositif sortant.

   dscp
       Ce  module vérifie la correspondance du champ DSCP (Differentiated Services Code Point — champ permettant
       de différencier les services) sur 6 bits à l’intérieur du champ TOS (Type Of Service)  de  l’en-tête  IP.
       DSCP a supplanté TOS au sein de l’IETF (Internet Engineering Task Force).

       [!] --dscp valeur
              Correspondance avec une valeur décimale ou hexadécimale comprise dans la plage 0–63.

       [!] --dscp-class classe
              Vérifier   la   correspondance  avec  la  classe  DiffServ  (Differentiated  Services  —  Services
              Différenciés). Les classes valables sont BE, EF, AFxx ou CSx. Elles sont ensuite  converties  vers
              leurs valeurs numériques respectives.

   dst (spécifique à IPv6)
       Ce module vérifie la correspondance des paramètres de l’en-tête « Destination Options ».

       [!] --dst-len taille
              Taille totale de cet en-tête en octets.

       --dst-opts type[:taille][,type[:taille]...]
              Type numérique de l’option et taille des données de l’option en octets.

   ecn
       Ce  module permet de vérifier la correspondance des bits ECN de l’en-tête IPv4/IPv6 et TCP. ECN (Explicit
       Congestion Notification) est le  mécanisme  de  notification  explicite  de  congestion  décrit  dans  la
       RFC 3168.

       [!] --ecn-tcp-cwr
              Correspond  si  le  bit TCP ECN CWR (Congestion Window Received — fenêtre de congestion reçue) est
              positionné.

       [!] --ecn-tcp-ece
              Correspond si le bit TCP ECN ECE  (ECN  Echo  —  paquet  reçu  avec  le  bit  CE  positionné)  est
              positionné.

       [!] --ecn-ip-ect nombre
              Vérifie  la  correspondance  d’un point de code IPv4/IPv6 ECT (ECN-Capable Transport) particulier.
              Vous devez spécifier un nombre entre 0 et 3.

   esp
       Ce module vérifie la correspondance des  SPI  (Security  Parameters  Index  —  index  des  paramètres  de
       sécurité) de l’en-tête ESP (Encapsulation Security Payload — encapsulation sécurisée de charge utile) des
       paquets IPsec.

       [!] --espspi spi[:spi]

   eui64 (Extended Unique Identifier  identifiant unique étendu) ; spécifique à IPv6.
       Ce  module  vérifie  la  correspondance  de  la  partie  EUI-64  d’une  adresse  IPv6 autoconfigurée sans
       conservation d’état (stateless). Il compare cette partie EUI-64 dérivée de l’adresse MAC source  dans  la
       trame   Ethernet   avec   les  64  bits  les  moins  significatifs  de  l’adresse  IPv6  source.  Le  bit
       « Universal/Local » n’est cependant pas comparé. Ce module ne  vérifie  pas  la  correspondance  d’autres
       trames de la couche liaison et n’est valable que dans les chaînes PREROUTING, INPUT et FORWARD.

   frag (spécifique à IPv6)
       Ce module vérifie la correspondance des paramètres de l’en-tête Fragment.

       [!] --fragid id[:id]
              Vérifie la correspondance de l’identifiant ou de la plage d’identifiant donné.

       [!] --fraglen taille
              Cette option ne peut pas être utilisée avec un noyau de version 2.6.10 ou ultérieure. La taille de
              l’en-tête Fragment est statique et cette option n’est donc pas pertinente.

       --fragres
              Correspond si les champs réservés sont remplis de zéros.

       --fragfirst
              Vérifier s’il s’agit du premier fragment.

       --fragmore
              Correspond s’il y a encore des fragments.

       --fraglast
              Correspond s’il s’agit du dernier fragment.

   hashlimit
       hashlimit  utilise  des  compartiments  de  hachage  (hash  buckets)  pour exprimer une correspondance de
       limitation de débit (comme la correspondance de limit) pour un groupe de connexions utilisant  une  seule
       règle  iptables.  Le  groupement  peut  s’effectuer par groupe d’hôtes (adresse source et/ou destination)
       et/ou par port. Ce module permet d’exprimer « N paquets par unité de temps et par groupe » ou « N  octets
       par seconde » (voir les exemples ci-après).

       Les  options  de  limite  de  hachage  (--hashlimit-upto,  --hashlimit-above)  et  --hashlimit-name  sont
       obligatoires.

       --hashlimit-upto quantité[/second|/minute|/hour|/day]
              Correspond si le débit est inférieur ou égal à quantité/unité de temps. Ce débit est spécifié sous
              la forme d’un nombre avec un suffixe d’unité  de  temps  facultatif  (la  valeur  par  défaut  est
              3/hour), ou sous la forme quantitéb/second (nombre d’octets par seconde).

       --hashlimit-above quantité[/second|/minute|/hour|/day]
              Correspond si le débit est supérieur à quantité/unité de temps.

       --hashlimit-burst quantité
              Nombre  initial  maximal  de paquets à comparer : ce nombre est incrémenté de 1 tant que la limite
              spécifiée ci-avant n’est pas atteinte, et ce jusqu’à ce que cette limite soit atteinte ; la valeur
              par défaut est 5. Lorsqu’une vérification de correspondance de débit en octets est demandée, cette
              option spécifie la quantité d’octets pouvant excéder  le  débit  donné.  Cette  option  doit  être
              utilisée avec précautions — si l’entrée arrive à expiration, cette valeur est aussi réinitialisée.

       --hashlimit-mode {srcip|srcport|dstip|dstport},...
              Une  liste,  séparée  par  des  virgules,  d’objets  à  prendre en considération. Si aucune option
              --hashlimit-mode n’est spécifiée, hashlimit agit comme limit, au prix de devoir faire le ménage du
              hachage.

       --hashlimit-srcmask préfixe
              Lorsque « --hashlimit-mode srcip » est spécifié, toutes les  adresses  source  rencontrées  seront
              regroupées  en  fonction de la taille du préfixe donné, et le sous-réseau ainsi créé sera soumis à
              hashlimit. préfixe doit être entre 0 et 32 inclus. Notez que « --hashlimit-srcmask 0 » produit  le
              même effet que ne pas spécifier srcip pour --hashlimit-mode, mais consomme plus de ressources.

       --hashlimit-dstmask préfixe
              Comme --hashlimit-srcmask, mais pour les adresses destination.

       --hashlimit-name nom_limite
              Le nom pour l’entrée /proc/net/ipt_hashlimit/nom_limite

       --hashlimit-htable-size compartiments
              Le nombre de compartiments dans la table de hachages.

       --hashlimit-htable-max entrées
              Le nombre maximal d’entrées dans le hachage.

       --hashlimit-htable-expire msec
              Délai d’expiration des entrées du hachage en millisecondes.

       --hashlimit-htable-gcinterval msec
              Nombre de millisecondes entre chaque ramassage des déchets.

       --hashlimit-rate-match
              Catégoriser  le  flux  au lieu de limiter son débit. L’action de cette option consiste à évaluer à
              vrai ou faux le fait que le débit est au-dessus ou en-dessous d’une certaine valeur.

       --hashlimit-rate-interval sec
              Combinée avec --hashlimit-rate-match, cette option permet de spécifier  le  pas  selon  lequel  le
              débit doit être échantillonné.

       Exemples :

       correspondance au niveau de l’hôte source
              «   1000  paquets  par  seconde  pour  chaque  hôte  de  192.168.0.0/16  »  =>  -s  192.168.0.0/16
              --hashlimit-mode srcip --hashlimit-upto 1000/sec

       correspondance au niveau du port
              « 100 paquets par seconde pour chaque service de 192.168.1.1 » => -s 192.168.1.1  --hashlimit-mode
              srcport --hashlimit-upto 100/sec

       correspondance au niveau du sous-réseau
              «  10000 paquets par minute pour chaque sous-réseau /28 (groupes de 8 adresses) de 10.0.0.0/8 » =>
              -s 10.0.0.0/8 --hashlimit-mask 28 --hashlimit-upto 10000/min

       correspondance au niveau du débit en octets par seconde
              « débits excédant 512 ko/s »  =>  --hashlimit-mode  srcip,dstip,srcport,dstport  --hashlimit-above
              512kb/s

       correspondance au niveau du débit en octets par seconde
              « débits excédant512 ko/s, mais permission d’aller jusqu’à 1 Mo sans recherche de correspondance »
              => --hashlimit-mode dstip --hashlimit-above 512kb/s --hashlimit-burst 1mb

   hbh (spécifique à IPv6)
       Ce module vérifie la correspondance des paramètres de l’en-tête des options Hop-by-Hop.

       [!] --hbh-len taille
              Taille totale de cet en-tête en octets.

       --hbh-opts type[:taille][,type[:taille]...]
              Type numérique de l’option et taille des données de l’option en octets.

   helper
       Ce  module  vérifie  la  correspondance des paquets en relation avec un assistant de conntrack (conntrack
       helper) spécifique.

       [!] --helper chaîne
              Correspond aux paquets en relation avec l’assistant de conntrack spécifié.

              chaîne peut contenir « ftp » pour les paquets en relation avec une session FTP  sur  le  port  par
              défaut. Pour un port différent, ajoutez « --num_port » à la chaîne (par exemple, « ftp-2121 »).

              Les mêmes règles s’appliquent pour les autres assistants de conntrack.

   hl (spécifique à IPv6)
       Ce module vérifie la correspondance du champ Hop Limit de l’en-tête IPv6.

       [!] --hl-eq valeur
              Correspond si le champ Hop Limit contient la valeur spécifiée.

       --hl-lt valeur
              Correspond si la valeur contenue dans le champ Hop Limit est inférieure à valeur.

       --hl-gt valeur
              Correspond si la valeur contenue dans le champ Hop Limit est supérieure à valeur.

   icmp (spécifique à IPv4)
       Cette extension peut être utilisée si « --protocol icmp » est spécifié. Elle fournit l’option suivante :

       [!] --icmp-type {type[/code]|nom_type}
              Cette  option permet de spécifier le type ICMP sous la forme d’un type ICMP numérique, d’une paire
              type/code ou d’un des noms de type ICMP nom_type affichés par la commande
               iptables -p icmp -h

   icmp6 (spécifique à IPv6)
       Cette extension peut être utilisée si « --protocol ipv6-icmp » ou « --protocol  icmpv6  »  est  spécifié.
       Elle fournit l’option suivante :

       [!] --icmpv6-type type[/code]|nom_type
              Cette  option  permet  de spécifier le type ICMPv6 sous la forme d’un type ICMPv6 numérique, d’une
              paire type/code ou d’un des noms de type ICMPv6 nom_type affichés par la commande
               ip6tables -p ipv6-icmp -h

   iprange
       Ce module vérifie la correspondance de la plage d’adresses IP arbitraire donné.

       [!] --src-range de[-à]
              Correspond si l’adresse IP source appartient à la plage spécifié.

       [!] --dst-range de[-à]
              Correspond si l’adresse IP destination appartient à la plage spécifié.

   ipv6header (spécifique à IPv6)
       Ce module vérifie  la  correspondance  des  en-têtes  d’extension  IPv6  et/ou  l’en-tête  de  la  couche
       supérieure.

       --soft Correspond si le paquet contient au moins un des en-têtes spécifiés à l’aide de l’option --header.

       [!] --header en-tête[,en-tête...]
              Correspond  aux  paquets  qui  contiennent  EXACTEMENT  tous  les en-têtes spécifiés. Les en-têtes
              encapsulés avec l’en-tête ESP ne sont pas concernés. Les valeurs possibles d’en-tête sont :

       hop|hop-by-hop
              En-tête des options Hop-by-Hop

       dst    En-tête des options de destination

       route  En-tête de routage

       frag   En-tête de fragment

       auth   En-tête d’authentification

       esp    En-tête d’encapsulation sécurisée de la charge utile

       none   Pas d’en-tête Next, ce qui correspond à la valeur 59 dans le « champ Next Header  »  de  l’en-tête
              IPv6 ou de tout en-tête d’extension IPv6.

       prot   Correspondance  à n'importe quel en-tête de protocole de la couche supérieure. Un nom de protocole
              issu du fichier /etc/protocols ou une valeur numérique sont aussi autorisés.  Le  nombre  255  est
              équivalent à prot.

   ipvs
       Ce module vérifie la correspondance des propriétés de la connexion IPVS.

       [!] --ipvs
              le paquet appartient à une connexion IPVS (IP Virtual Server — serveur IP virtuel)

       Toutes les options suivantes impliquent --ipvs (même si elles sont précédées d’une négation)

       [!] --vproto protocole
              protocole VIP (Virtual IP) à comparer ; par numéro ou par nom, par exemple « tcp »

       [!] --vaddr adresse[/masque]
              adresse VIP à comparer

       [!] --vport port
              port VIP à comparer ; par numéro ou par nom, par exemple « http »

       --vdir {ORIGINAL|REPLY}
              sens de déplacement du paquet

       [!] --vmethod {GATE|IPIP|MASQ}
              méthode de redirection IPVS utilisée

       [!] --vportctl port
              port VIP de la connexion de contrôle à comparer, par exemple 21 pour FTP

   length
       Ce  module  permet  de  comparer la taille de la charge utile de la couche 3 d’un paquet (par exemple, un
       paquet de niveau 4) avec une valeur ou un intervalle de valeurs donnés.

       [!] --length taille[:taille]

   limit
       Ce module vérifie la correspondance d’un débit limité en utilisant un filtre de type « seau  à  jetons  »
       (token  bucket).  Une  règle  utilisant  cette  extension  correspondra  jusqu’à ce que cette limite soit
       atteinte. Ce module peut être utilisé en combinaison avec l’action LOG pour  fournir  une  journalisation
       limitée, par exemple.

       xt_limit  ne  prend  pas en charge la négation — pour appliquer cette dernière, vous devrez utiliser « -m
       hashlimit ! --hashlimit débit » tout en omettant --hashlimit-mode.

       --limit débit[/second|/minute|/hour|/day]
              Débit moyen maximal de comparaison : spécifié sous forme de  nombre  avec  un  suffixe  facultatif
              « /second », « /minute », « /hour » ou « /day », la valeur par défaut étant 3/hour.

       --limit-burst nombre
              Nombre  initial  maximal  de paquets à comparer : ce nombre est incrémenté de 1 tant que la limite
              spécifiée ci-avant n’est pas atteinte, et ce jusqu’à ce que cette limite soit atteinte ; la valeur
              par défaut est 5.

   mac
       [!] --mac-source adresse
              Cette option permet de vérifier la correspondance de l’adresse MAC source (Media Access  Control).
              Cette  dernière  doit  être de la forme XX:XX:XX:XX:XX:XX. Notez que cette option n’est pertinente
              que pour les paquets provenant d’un dispositif Ethernet et entrant dans  les  chaînes  PREROUTING,
              FORWARD ou INPUT.

   mark
       Ce  module vérifie la correspondance du champ de netfilter « mark » associé à un paquet (et qui peut être
       défini à l’aide de l’action MARK ci-après).

       [!] --mark valeur[/masque]
              Correspond aux paquets possédant la valeur de « mark  »  non  signée  donnée  (si  un  masque  est
              spécifié, il est combiné à l’aide d’un ET logique avec le masque avant la comparaison).

   mh (spécifique à IPv6)
       Cette  extension  est  chargée si « --protocol ipv6-mh » ou « --protocol mh » est spécifiée. Elle fournit
       l’option suivante :

       [!] --mh-type type[:type]
              Cette option permet de spécifier le type d’en-tête de mobilité (Mobility Header — MH)  sous  forme
              d’un type de MH numérique ou d’un des noms de type de MH indiqués par la commande
               ip6tables -p mh -h

   multiport
       Ce  module  vérifie  la  correspondance  d’un ensemble de ports source ou destination. Il est possible de
       spécifier jusqu’à15 ports. Une plage de ports (port:port) compte pour deux ports. Ce module ne peut  être
       utilisé qu’avec les protocoles suivants : tcp, udp, udplite, dccp et sctp.

       [!] --source-ports,--sports port[,port|,port:port]...
              Correspond  si  le  port  source fait partie des ports donnés. Le drapeau --sports est un alias de
              commodité pour cette option. Plusieurs ports ou plages de ports sont séparés par des  virgules  et
              une  plage  de  port  est  spécifié  en utilisant un deux-points « : ». Par exemple, 53,1024:65535
              correspondra au port 53 et à tous les ports de 1024 à 65535.

       [!] --destination-ports,--dports port[,port|,port:port]...
              Correspond si le port destination fait partie des ports donnés. Le drapeau --dports est  un  alias
              de commodité pour cette option.

       [!] --ports port[,port|,port:port]...
              Correspond si un des ports source ou destination est égal à un des ports donnés.

   nfacct
       Ce  module  fournit  l'infrastructure  de  statistiques  étendue pour iptables. Vous devez utiliser cette
       vérification de correspondance avec l'utilitaire d'espace utilisateur autonome nfacct(8).

       La seule option valable pour cette vérification de correspondance est la suivante :

       --nfacct-name nom
              Cette option permet de spécifier le nom d’objet existant  qui  sera  utilisé  pour  effectuer  des
              statistiques sur le trafic auquel ce jeu de règles correspond.

       Pour utiliser cette extension, vous devez créer un objet de statistiques :

              nfacct add http-traffic

       Ensuite, vous devez attacher l’extension à l’objet de statistiques à l’aide d’iptables :

              iptables -I INPUT -p tcp --sport 80 -m nfacct --nfacct-name http-traffic

              iptables -I OUTPUT -p tcp --dport 80 -m nfacct --nfacct-name http-traffic

       Enfin, vous pouvez consulter l’intensité du trafic auquel la règle correspond :

              nfacct get http-traffic

              { pkts = 00000000000000000156, bytes = 00000000000000151786 } = http-traffic;

       Vous pouvez télécharger nfacct(8) depuis https://www.netfilter.org ou depuis le dépôt git.netfilter.org.

   osf
       Le  module  osf  effectue  une  prise d’empreinte passive du système d’exploitation. Il compare certaines
       données (taille de fenêtre, MSS (Maximum Segment Size — taille maximale de segment), les options et  leur
       ordre,  TTL  (Time To Live — durée de vie), le drapeau DF (Don’t Fragment — ne pas fragmenter), etc.) des
       paquets ayant le bit SYN positionné.

       [!] --genre chaîne
              Cette option permet de  vérifier  la  correspondance  d’un  genre  de  système  d’exploitation  en
              utilisant une prise d’empreinte passive.

       --ttl niveau
              Effectuer  des  vérifications  additionnelles  de  durée  de  vie sur le paquet pour déterminer le
              système d’exploitation. niveau peut prendre les valeurs suivantes :

              0      Véritable comparaison des durées de vie de l’adresse IP et de  l’empreinte  (fonctionne  en
                     général pour les réseaux locaux).

              1      Vérifier  si  la  durée  de  vie  de  l’en-tête  IP  est  inférieure à celle de l’empreinte
                     (fonctionne avec des adresses routables globalement).

              2      Ne pas comparer les durées de vie.

       --log niveau
              Journaliser les genres déterminés dans dmesg même s’ils ne correspondent pas  au  genre  souhaité.
              niveau peut prendre une des valeurs suivantes :

              0      Journaliser toutes les signatures correspondantes ou inconnues.

              1      Journaliser seulement la première.

              2      Journaliser toutes les signatures connues correspondantes.

       Vous pouvez voir apparaître quelque chose de ce genre dans syslog :

       Windows  [2000:SP3:Windows  XP  Pro  SP1,  2000  SP3]:  11.22.33.55:4024  -> 11.22.33.44:139 hops=3 Linux
       [2.5-2.6:] : 1.2.3.4:42624 -> 1.2.3.5:22 hops=4

       Les empreintes d’OS peuvent être chargées à l’aide du programme nfnl_osf. Pour charger  une  empreinte  à
       partir d’un fichier, utilisez :

       nfnl_osf -f /usr/share/xtables/pf.os

       et pour la supprimer à nouveau,

       nfnl_osf -f /usr/share/xtables/pf.os -d

       La      base      de      données      des      empreintes      peut      être     téléchargée     depuis
       http://www.openbsd.org/cgi-bin/cvsweb/src/etc/pf.os.

   owner
       Ce module tente de vérifier la correspondance de différentes caractéristiques du créateur du paquet, pour
       les paquets générés localement. Cette recherche de correspondance n’est  valable  que  dans  les  chaînes
       OUTPUT  et POSTROUTING. Les paquets redirigés n’ont pas de socket associé, à la différence des paquets en
       provenance des threads du noyau qui ont un socket, mais généralement pas de propriétaire.

       [!] --uid-owner nom_utilisateur

       [!] --uid-owner identifiant_utilisateur[-identifiant_utilisateur]
              Correspond si la structure du fichier de socket du paquet (si elle existe)  est  la  propriété  de
              l’utilisateur donné. Vous pouvez aussi spécifier un UID numérique ou un intervalle d’UID.

       [!] --gid-owner nom_groupe

       [!] --gid-owner identifiant_groupe[-identifiant_groupe]
              Correspond  si  la structure du fichier de socket du paquet est la propriété du groupe donné. Vous
              pouvez aussi spécifier un GID numérique ou un intervalle de GID.

       --suppl-groups
              Avec cette option, le(s) groupe(s) spécifié(s) à l’aide de --gid-owner sont  aussi  comparés  avec
              les groupes supplémentaires d’un processus.

       [!] --socket-exists
              Correspond si le paquet est associé à un socket.

   physdev
       Ce module vérifie la correspondance des dispositifs d'entrée et de sortie d’un port de pont asservis à un
       dispositif  de  pont.  Ce  module  fait  partie  de l'infrastructure qui active un pare-feu IP de pontage
       transparent et n’est disponible que pour les versions 2.5.44 et ultérieures du noyau.

       [!] --physdev-in nom
              Le nom d’un port de pont par lequel un paquet est reçu (seulement pour les  paquets  entrant  dans
              les chaînes INPUT, FORWARD ou PREROUTING). Si le nom de l’interface de termine par un « + », toute
              interface  dont  le  nom  commence  par  ce nom correspondra. Si le paquet n’est pas arrivé par un
              dispositif de pont, il ne correspondra pas aux critères de cette option, à moins que « ! » ne soit
              spécifié.

       [!] --physdev-out nom
              Le nom d’un port de pont par lequel un paquet est sur le point d’être envoyé (seulement  pour  les
              paquets  ayant  subi  un pontage et entrant dans les chaînes FORWARD et POSTROUTING). Si le nom de
              l’interface de termine par un « + », toute interface dont le nom commence par ce nom correspondra.

       [!] --physdev-is-in
              Correspond si le paquet est entré par une interface de pont.

       [!] --physdev-is-out
              Correspond si le paquet est sur le point de sortir par une interface de pont.

       [!] --physdev-is-bridged
              Correspond si le paquet subit un pontage et n’est donc pas routé. Utile seulement dans les chaînes
              FORWARD et POSTROUTING.

   pkttype
       Ce module vérifie la correspondance du type du paquet au niveau de la couche liaison.

       [!] --pkt-type {unicast|broadcast|multicast}

   policy
       Ce module vérifie la correspondance de la politique utilisée par IPsec pour gérer un paquet.

       --dir {in|out}
              Cette option permet de choisir si l’on doit vérifier la correspondance de  la  politique  utilisée
              pour  la  désencapsulation  ou la politique qui sera utilisée pour l’encapsulation. in est valable
              dans les chaînes PREROUTING, INPUT et FORWARD, alors que out l’est dans les  chaînes  POSTROUTING,
              OUTPUT et FORWARD.

       --pol {none|ipsec}
              Correspond si le paquet est traité par IPsec. --pol none ne peut pas être combiné à --strict.

       --strict
              Cette  option  permet de choisir si l’intégralité de la politique doit correspondre ou si au moins
              une des règles de la politique doit correspondre à la politique donnée.

       Pour chaque élément de politique à décrire, il est possible  d’utiliser  une  ou  plusieurs  des  options
       suivantes. Lorsque --strict a été spécifiée, au moins une option doit être utilisée pour chaque élément.

       [!] --reqid identifiant
              Cette  option  permet  de  vérifier la correspondance du « reqid » de la règle de la politique. Le
              reqid peut être spécifié à l’aide de setkey(8) en utilisant unique:id comme niveau.

       [!] --spi spi
              Cette option permet de vérifier la correspondance du SPI (Security Parameters Index  —  index  des
              paramètres de sécurité) des SA (Security Associations — associations de sécurités).

       [!] --proto {ah|esp|ipcomp}
              Cette option permet de vérifier la correspondance du protocole d’encapsulation.

       [!] --mode {tunnel|transport}
              Cette option permet de vérifier la correspondance du mode d’encapsulation.

       [!] --tunnel-src adresse[/masque]
              Cette  option  permet de vérifier la correspondance de l’adresse de l’extrémité source d’une SA en
              mode tunnel. Valable seulement avec --mode tunnel.

       [!] --tunnel-dst adresse[/masque]
              Cette option permet de vérifier la correspondance de l’adresse de l’extrémité destination d’une SA
              en mode tunnel. Valable seulement avec --mode tunnel.

       --next Démarrer l’élément suivant dans la spécification de la politique. Ne  peut  être  utilisé  qu’avec
              --strict.

   quota
       Ce  module  implémente  les  quotas  réseau  en  décrémentant un compteur d’octets avec chaque paquet. La
       condition est vérifiée jusqu’à ce que le compteur d’octets  atteigne  zéro.  Ce  comportement  peut  être
       inversé  par une négation (la condition ne sera alors vérifiée que lorsque le compteur d’octets atteindra
       zéro).

       [!] --quota octets
              Le quota en octets.

   rateest
       L’estimateur de débit peut vérifier la correspondance des débits estimés comme ceux collectés à l’aide de
       l’action RATEEST. Il prend en charge la correspondance basée sur des  valeurs  de  bps/pps  absolues,  la
       comparaison  de  deux  estimateurs  de  débit  et  la  correspondance  basée sur la différence entre deux
       estimateurs de débit.

       Pour une meilleure compréhension des options valables, voici toutes les combinaisons possibles :

       Mode absolu :

       -   rateest opérateur rateest-bps

       -   rateest opérateur rateest-pps

       Mode absolu + Delta :

       -   (rateest moins rateest-bps1) opérateur rateest-bps2

       -   (rateest moins rateest-pps1) opérateur rateest-pps2

       Mode relatif :

       -   rateest1 opérateur rateest2 rateest-bps(sans débit !)

       -   rateest1 opérateur rateest2 rateest-pps(sans débit !)

       Mode relatif + Delta :

       -   (rateest1 moins rateest-bps1) opérateur (rateest2 moins rateest-bps2)

       -   (rateest1 moins rateest-pps1) opérateur (rateest2 moins rateest-pps2)

       --rateest-delta
           Pour chaque estimateur (en mode relatif ou absolu), calculer la différence entre  le  débit  du  flux
           déterminé  par l’estimateur et la valeur statique spécifiée à l’aide des options BPS/PPS. Si le débit
           du flux est plus élevé que la valeur spécifiée en BPS/PPS,0 sera utilisé  à  la  place  d’une  valeur
           négative.  Autrement  dit,  la  valeur  utilisée  sera  le  résultat  de  «  max(0,  rateest#_rate  -
           rateest#_bps) ».

       [!] --rateest-lt
           Correspond si le débit est inférieur au débit par estimateur donné.

       [!] --rateest-gt
           Correspond si le débit est supérieur au débit par estimateur donné.

       [!] --rateest-eq
           Correspond si le débit est égal au débit par estimateur donné.

       Dans le mode dit « mode absolu », un seul estimateur est utilisé et comparé  avec  une  valeur  statique,
       tandis qu’en « mode relatif », deux estimateurs de débit sont comparés avec un autre.

       --rateest nom
              Nom de l’unique estimateur de débit pour le mode absolu.

       --rateest1 nom

       --rateest2 nom
              Les noms des deux estimateurs de débit pour le mode relatif.

       --rateest-bps [valeur]

       --rateest-pps [valeur]

       --rateest-bps1 [valeur]

       --rateest-bps2 [valeur]

       --rateest-pps1 [valeur]

       --rateest-pps2 [valeur]
              Comparer  avec  la  valeur  spécifiée  les  valeurs  fournies par le(s) estimateur(s) en octets ou
              paquets par seconde. Voir la liste ci-avant pour connaître les options à utiliser dans chaque cas.
              Il est possible d’ajouter un suffixe d’unité — les suffixes disponibles  sont  :  bit,  [kmgt]bit,
              [KMGT]ibit, Bps, [KMGT]Bps et [KMGT]iBps.

       Exemple  :  voici la commande qui peut être utilisée pour router les connexions de données sortantes d’un
       serveur FTP sur deux lignes en fonction de la bande passante disponible au moment où la connexion  a  été
       établie :

       # Estimer les débits sortants :

       iptables  -t  mangle  -A  POSTROUTING  -o  eth0  -j  RATEEST --rateest-name eth0 --rateest-interval 250ms
       --rateest-ewma 0.5s

       iptables -t mangle -A POSTROUTING  -o  ppp0  -j  RATEEST  --rateest-name  ppp0  --rateest-interval  250ms
       --rateest-ewma 0.5s

       # Marquer en fonction de la bande passante disponible :

       iptables   -t  mangle  -A  balance  -m  conntrack  --ctstate  NEW  -m  helper  --helper  ftp  -m  rateest
       --rateest-delta --rateest1 eth0 --rateest-bps1 2.5mbit --rateest-gt --rateest2 ppp0 --rateest-bps2  2mbit
       -j CONNMARK --set-mark 1

       iptables   -t  mangle  -A  balance  -m  conntrack  --ctstate  NEW  -m  helper  --helper  ftp  -m  rateest
       --rateest-delta --rateest1 ppp0 --rateest-bps1 2mbit --rateest-gt --rateest2 eth0 --rateest-bps2  2.5mbit
       -j CONNMARK --set-mark 2

       iptables -t mangle -A balance -j CONNMARK --restore-mark

   realm (spécifique à IPv4)
       Ce  module  permet  de  vérifier la correspondance du domaine (realm) de routage. Les domaines de routage
       sont utilisés dans les configurations de routage complexes mettant  en  jeu  des  protocoles  de  routage
       dynamique comme BGP.

       [!] --realm valeur[/masque]
              Vérifier  la  correspondance d’un numéro de domaine donné (accompagné éventuellement d’un masque).
              Au lieu d’un numéro, valeur peut être un domaine nommé issu de  /etc/iproute2/rt_realms  (dans  ce
              cas,  le  masque  n’est pas autorisé). valeur et masque sont des entiers non signés de 4 octets et
              peuvent être spécifiés en décimal, hexadécimal (en ajoutant le  préfixe  «  0x  »)  ou  octal  (en
              préfixant la valeur d’un zéro).

   recent
       Ce module permet de créer dynamiquement une liste d’adresses IP et de vérifier la correspondance de cette
       liste de différentes manières.

       Par  exemple,  vous  pouvez créer une liste « méchants » des gens qui tentent de se connecter au port 139
       sur votre pare-feu, et supprimer ensuite tous les paquets  qui  proviennent  de  ces  derniers  sans  les
       examiner.

       --set, --rcheck, --update et --remove sont mutuellement exclusifs.

       --name nom
              Spécifier la liste à utiliser pour les commandes. Si aucun nom n’est donné, DEFAULT sera utilisé.

       [!] --set
              Cette  option permet d’ajouter l’adresse source du paquet à la liste. Si l’adresse source est déjà
              présente dans la liste, l’entrée concernée  sera  mise  à  jour.  Cette  option  renvoie  toujours
              « succès » (ou « échec » si ! est spécifié).

       --rsource
              Vérifier  la  correspondance  de/sauvegarder  l’adresse  source  de  chaque  paquet  de  la  liste
              « recent ». Il s’agit du comportement par défaut.

       --rdest
              Vérifier la correspondance de/sauvegarder l’adresse destination  de  chaque  paquet  de  la  liste
              « recent ».

       --mask masque_sous_réseau
              Cette option permet de spécifier le masque_sous_réseau qui sera appliqué à cette liste « recent ».

       [!] --rcheck
              Cette option permet de vérifier si l’adresse source du paquet est actuellement dans la liste.

       [!] --update
              Identique à --rcheck, excepté que si la correspondance est vérifiée, l’horodatage « vu la dernière
              fois » sera mis à jour.

       [!] --remove
              Cette option permet de vérifier si l’adresse source du paquet est actuellement dans la liste et si
              c’est  le  cas,  supprimer  cette  adresse de la liste et la règle renverra « vrai ». Si l’adresse
              n’est pas trouvée, la règle renverra « faux ».

       --seconds secondes
              Cette option doit être utilisée  en  combinaison  avec  une  des  options  --rcheck  ou  --update.
              Lorsqu’elle est utilisée, la correspondance ne sera vérifiée que si l’adresse est dans la liste et
              si elle a été vue au cours du dernier nombre de secondes donné.

       --reap Cette  option  ne  peut  être  utilisée qu’en combinaison avec l’option --seconds. Lorsqu’elle est
              utilisée, les entrées plus anciennes que le nombre de secondes donné seront vidées.

       --hitcount correspondances
              Cette option ne peut être utilisée qu’en  combinaison  avec  les  options  --rcheck  ou  --update.
              Lorsqu’elle est utilisée, la correspondance ne sera vérifiée que si l’adresse est dans la liste et
              si  les  paquets  ont été interceptés un nombre de fois supérieur ou égal à la valeur donnée. Elle
              peut  être  utilisée  en  combinaison  avec  l’option  --seconds  pour  créer  une  condition   de
              correspondance  encore  plus  restrictive  nécessitant  un  certain nombre d’interceptions dans un
              certain intervalle de temps.

       --rttl Cette option ne peut être utilisée qu’en combinaison avec une des options  --rcheck  ou  --update.
              Lorsqu’elle est utilisée, la correspondance ne sera vérifiée que si l’adresse est dans la liste et
              si  la  durée  de  vie  du paquet actuel correspond à celle du paquet qui correspondait à la règle
              --set. Elle peut s’avérer utile si vous rencontrer des problèmes avec des gens qui contrefont leur
              adresse source pour effectuer une attaque de type DoS à l’aide de ce module dans le but d’empêcher
              les autres utilisateurs d’accéder à votre site en vous envoyant des paquets bogués.

       Exemples :

              iptables -A FORWARD -m recent --name méchant --rcheck --seconds 60 -j DROP

              iptables -A FORWARD -p tcp -i eth0 --dport 139 -m recent --name méchant --set -j DROP

       /proc/net/xt_recent/* correspond aux listes actuelles d’adresses et d’informations  à  propos  de  chaque
       entrée de chaque liste.

       Chaque fichier dans /proc/net/xt_recent/ peut être consulté pour déterminer la liste actuelle ou écrit en
       utilisant les commandes suivantes pour modifier la liste :

       echo +adresse >/proc/net/xt_recent/DEFAULT
              pour ajouter adresse à la liste DEFAULT

       echo -adresse >/proc/net/xt_recent/DEFAULT
              pour supprimer adresse de la liste DEFAULT

       echo / >/proc/net/xt_recent/DEFAULT
              pour vider la liste DEFAULT (en supprimer toutes les entrées).

       Le module lui-même accepte les paramètres suivants (avec leur valeur par défaut) :

       ip_list_tot=100
              Nombre d’adresses mémorisées par table.

       ip_pkt_list_tot=0
              Le  nombre  de  paquets par adresse mémorisée. Ce paramètre est obsolète depuis la version 3.19 du
              noyau à partir de laquelle la taille de la table est calculée en fonction de la valeur de l’option
              --hitcount spécifiée.

       ip_list_hash_size=0
              Taille de la table de hachage. 0 signifie que cette taille  doit  être  calculée  en  fonction  de
              ip_list_tot  en  arrondissant  ce  dernier  à  la  puissance  de deux immédiatement supérieure (si
              ip_list_tot possède sa valeur par défaut 100, ip_list_hash_size prendra la valeur 128 par défaut).

       ip_list_perms=0644
              Permissions des fichiers /proc/net/xt_recent/*.

       ip_list_uid=0
              UID numérique du propriétaire des fichiers /proc/net/xt_recent/*.

       ip_list_gid=0
              GID numérique du propriétaire des fichiers /proc/net/xt_recent/*.

   rpfilter
       Ce module effectue un test par filtrage par chemin inverse sur un paquet.  Si  la  réponse  à  un  paquet
       devrait  être envoyée par la même interface que celle par laquelle il est arrivé, le paquet correspondra.
       Notez qu’à la différence du filtrage par  chemin  inverse  (rp_filter)  intégré  au  noyau,  les  paquets
       protégés  par  IPSec  ne font pas l’objet d’un traitement particulier. Si tel est votre souhait, combinez
       cette vérification de correspondance avec celle du module « policy ». De même, les paquets  arrivant  par
       l’interface  loopback sont toujours autorisés. Cette vérification de correspondance ne peut être utilisée
       que dans la chaîne PREROUTING des tables raw ou mangle.

       --loose
              Cette option permet de spécifier que le test de filtrage par chemin inverse doit réussir  même  si
              le dispositif de sortie sélectionné n’est pas celui attendu.

       --validmark
              Utiliser  aussi  la  valeur de « nfmark » du paquet lors de la détermination de la route du chemin
              inverse.

       --accept-local
              Cette option permet d’accepter les paquets arrivant du réseau avec  une  adresse  source  qui  est
              aussi assignée à la machine locale.

       --invert
              Cette  option  permet  d’inverser le résultat de la vérification de correspondance. Cette dernière
              sera positive pour les paquets qui ont échoué au test de filtrage par chemin inverse  au  lieu  de
              l’être pour ceux qui ont réussi le test.

       L’exemple  suivant  montre  comment journaliser et supprimer les paquets qui échouent au test de filtrage
       par chemin inverse :

       iptables -t raw -N RPFILTER

       iptables -t raw -A RPFILTER -m rpfilter -j RETURN

       iptables -t raw -A RPFILTER -m limit --limit 10/minute -j NFLOG --nflog-prefix "rpfilter drop"

       iptables -t raw -A RPFILTER -j DROP

       iptables -t raw -A PREROUTING -j RPFILTER

       L’exemple suivant montre comment supprimer les paquets qui ont échoué, sans journalisation :

       iptables -t raw -A RPFILTER -m rpfilter --invert -j DROP

   rt (spécifique à IPv6)
       Ce module permet de vérifier la correspondance de l’en-tête de routage IPv6.

       [!] --rt-type type
              Cette option permet de vérifier la correspondance du type (numérique).

       [!] --rt-segsleft numéro[:numéro]
              Cette option permet de vérifier la correspondance du champ « segments restants » (intervalle).

       [!] --rt-len taille
              Cette option permet de vérifier la correspondance de la taille de cet en-tête.

       --rt-0-res
              Vérifier aussi la correspondance du champ réservé (type=0).

       --rt-0-addrs adresse[,adresse...]
              Cette option permet de vérifier la correspondance des adresses type=0 (liste).

       --rt-0-not-strict
              Cette option permet d’indiquer que la liste d’adresses type=0 n’est pas une liste stricte.

   sctp
       Ce module permet de vérifier la correspondance des en-têtes du SCTP (Stream Control Transmission Protocol
       — protocole de transmission avec contrôle de flux).

       [!] --source-port,--sport port[:port]

       [!] --destination-port,--dport port[:port]

       [!] --chunk-types {all|any|only} type_fragment[:drapeaux] [...]
              Si la lettre de drapeau est en capitale, le drapeau doit être comparé s’il est  défini,  sinon  le
              drapeau doit être comparé s’il n’est pas défini.

              Types de vérification de correspondance :

       all    Correspondance   si  tous  les  types  de  fragment  donnés  sont  présents  et  si  les  drapeaux
              correspondent.

       any    Correspondance si au moins un des types de fragment donnés est présent avec les drapeaux donnés.

       only   Correspondance si seuls les types de fragment donnés sont présents avec les drapeaux donnés et  si
              aucun ne manque.

              Types  de  fragment  :  DATA,  INIT,  INIT_ACK,  SACK,  HEARTBEAT, HEARTBEAT_ACK, ABORT, SHUTDOWN,
              SHUTDOWN_ACK,  ERROR,  COOKIE_ECHO,  COOKIE_ACK,  ECN_ECNE,  ECN_CWR,  SHUTDOWN_COMPLETE,  I_DATA,
              RE_CONFIG, PAD, ASCONF, ASCONF_ACK FORWARD_TSN et I_FORWARD_TSN.

              drapeaux de type de fragment disponibles
              DATA I U B E i u b e
              I_DATA I U B E i u b e
              ABORT T t
              SHUTDOWN_COMPLETE T t

              Les  minuscules  signifient  que le drapeau doit être à « off », les capitales que le drapeau doit
              être à « on ».

       Exemples :

       iptables -A INPUT -p sctp --dport 80 -j DROP

       iptables -A INPUT -p sctp --chunk-types any DATA,INIT -j DROP

       iptables -A INPUT -p sctp --chunk-types any DATA:Be -j ACCEPT

   set
       Ce module permet de vérifier la correspondance d’ensembles d’adresses  IP  qui  peuvent  être  définis  à
       l’aide de ipset(8).

       [!] --match-set nom_ensemble drapeau[,drapeau]...
              où drapeau[,drapeau]... est une liste de spécifications src et/ou dst séparées par des virgules et
              dont le nombre est limité à 6. Ainsi la règle

               iptables -A FORWARD -m set --match-set test src,dst

              correspondra  aux  paquets  pour  lesquels  (si le type d’ensemble est ipportmap) la paire adresse
              source/port destination existe dans l’ensemble spécifié.  Si  le  type  d’ensemble  de  l’ensemble
              spécifié  est unidimensionnel (par exemple ipmap), la règle correspondra aux paquets pour lesquels
              l’adresse source existe dans l’ensemble spécifié.

       --return-nomatch
              Si l’option --return-nomatch est spécifiée et si le type d’ensemble prend  en  charge  le  drapeau
              nomatch,  la  vérification  de  correspondance  est inversée ; une correspondance vérifiée avec un
              élément ayant le drapeau nomatch activé renverra true, alors qu’une correspondance  vérifiée  avec
              un élément simple reverra false.

       ! --update-counters
              Si  le drapeau --update-counters est inversé par négation, les compteurs d’octets et de paquets de
              l’élément qui correspond dans l’ensemble ne seront pas mis à jour. Par défaut, compteurs  d’octets
              et de paquets sont mis à jour.

       ! --update-subcounters
              Si  le drapeau --update-subcounters est inversé par négation, les compteurs d’octets et de paquets
              de l’élément qui correspond dans l'ensemble des membres d'un type de liste  d'ensemble  ne  seront
              pas mis à jour. Par défaut, compteurs d’octets et de paquets sont mis à jour.

       [!] --packets-eq valeur
              Si  le  paquet correspond à un élément de l’ensemble, la correspondance ne sera vérifiée que si en
              plus la valeur du compteur de paquets de l’élément est égale à la valeur donnée.

       --packets-lt valeur
              Si le paquet correspond à un élément de l’ensemble, la correspondance ne sera vérifiée que  si  en
              plus la valeur du compteur de paquets de l’élément est inférieure à la valeur donnée.

       --packets-gt valeur
              Si  le  paquet correspond à un élément de l’ensemble, la correspondance ne sera vérifiée que si en
              plus la valeur du compteur de paquets de l’élément est supérieure à la valeur donnée.

       [!] --bytes-eq valeur
              Si le paquet correspond à un élément de l’ensemble, la correspondance ne sera vérifiée que  si  en
              plus la valeur du compteur d’octets est égale à la valeur donnée.

       --bytes-lt valeur
              Si  le  paquet correspond à un élément de l’ensemble, la correspondance ne sera vérifiée que si en
              plus la valeur du compteur d’octets de l’élément est inférieure à la valeur donnée.

       --bytes-gt valeur
              Si le paquet correspond à un élément de l’ensemble, la correspondance ne sera vérifiée que  si  en
              plus la valeur du compteur d’octets de l’élément est supérieure à la valeur donnée.

       Les  drapeaux  et  options  en  rapport  avec  les  compteurs de paquets et d’octets sont ignorés lorsque
       l’ensemble a été défini sans prise en charge du comptage.

       L’option --match-set peut être remplacée par --set si cela n’interfère pas avec une  option  d’une  autre
       extension.

       L’utilisation  de  « -m set » nécessite que le noyau prenne en charge le module ipset, ce qui est le cas,
       pour les noyaux standards, depuis Linux 2.6.39.

   socket
       Ce module permet de vérifier la correspondance d’un paquet s’il est possible de trouver un socket TCP/UDP
       ouvert en effectuant une recherche de socket sur ce paquet. La correspondance est vérifiée s’il existe un
       socket en écoute établi ou à lien non nul (éventuellement avec une adresse non locale). La recherche  est
       effectuée en utilisant le tuple packet des paquets TCP/UDP ou l’en-tête TCP/UDP original embedded dans un
       paquet d’erreur ICMP/ICPMv6.

       --transparent
              Ignorer les sockets non transparents.

       --nowildcard
              Ne  pas  ignorer les sockets liés à « n'importe quelle » adresse. Par défaut, la correspondance de
              socket n’acceptera pas de socket en  écoute  non  lié,  car  dans  ce  cas,  des  services  locaux
              pourraient intercepter le trafic qui autrement aurait été redirigé. Cette option présente donc des
              implications  de  sécurité  lorsqu’elle  est  utilisée pour vérifier la correspondance d’un trafic
              redirigé pour renvoyer de tels paquets à la machine locale avec routage  de  politique.  Lorsqu’on
              utilise  la  correspondance  de  socket pour implémenter des mandataires complètement transparents
              liés à des adresses non locales, il est recommandé d’utiliser plutôt l’option --transparent.

       Exemple (en supposant que les paquets marqués 1 sont délivrés localement) :

              -t mangle -A PREROUTING -m socket --transparent -j MARK --set-mark 1

       --restore-skmark
              Cette option permet de définir la marque du paquet avec la marque du  socket  correspondant.  Elle
              peut  être utilisée en combinaison avec les options --transparent et --nowildcard pour restreindre
              la correspondance des sockets au cas où la marque du paquet est restaurée.

       Exemple : une application ouvre 2 sockets transparents (IP_TRANSPARENT) et  leur  définit  une  marque  à
       l’aide de l’option de socket SO_MARK. Nous pouvons filtrer les paquets correspondants :

              -t mangle -I PREROUTING -m socket --transparent --restore-skmark -j action

              -t mangle -A action -m mark --mark 10 -j action2

              -t mangle -A action -m mark --mark 11 -j action3

   état
       L’extension  «  state  »  est un sous-ensemble du module « conntrack ». Elle permet d’accéder à l’état du
       traçage de connexion pour le paquet concerné.

       [!] --state état
              état est une liste des états de connexion à  comparer  séparés  par  des  virgules.  Seulement  ce
              sous-ensemble  des états pris en charge par « conntrack » est reconnu : INVALID, ESTABLISHED, NEW,
              RELATED ou UNTRACKED. Pour leur description, voir la section « conntrack » plus avant  dans  cette
              page de manuel.

   statistic
       Ce  module  vérifie  la  correspondance  des paquets en fonction de certaines conditions statistiques. Il
       prend en charge deux modes distincts qui peuvent être définis à l’aide de l’option --mode.

       Options prises en charge :

       --mode mode
              Cette option permet de définir le mode de vérification de correspondance de la règle ;  les  modes
              pris en charge sont random et nth.

       [!] --probability p
              Cette  option permet de définir la probabilité pour qu’un paquet corresponde de manière aléatoire.
              Elle ne peut être utilisée que dans le mode random. p doit être comprise  entre  0.0  et  1.0.  La
              granularité prise en charge possède un incrément de 1/2147483648.

       [!] --every n
              Vérifier  la correspondance d’un paquet sur n. Cette option ne peut être utilisée que dans le mode
              nth (voir aussi l’option --packet).

       --packet p
              Cette option permet de définir la valeur initiale du compteur pour le mode nth (0 <= p <= n-1, par
              défaut 0).

   string
       Ce module vérifie la correspondance de la chaîne donnée en utilisant  une  stratégie  de  comparaison  de
       motifs. Il nécessite un noyau Linux de version supérieure ou égale à 2.6.14.

       --algo {bm|kmp}
              Cette  option  permet  de  sélectionner  une stratégie de comparaison de motifs (bm = Boyer-Moore,
              kmp = Knuth-Pratt-Morris).

       --from décalage
              Cette option permet de définir le décalage à partir  duquel  la  comparaison  sera  effectuée.  La
              valeur par défaut est 0.

       --to décalage
              Cette  option  permet  de  définir  le nombre d’octets, à partir de l’octet 0 qui seront comparés.
              Autrement dit, décalage (compté à partir de 0) sera le numéro du dernier octet à être  comparé  et
              la position maximale du dernier caractère du motif. La valeur par défaut est la taille du paquet.

       [!] --string motif
              Cette option permet de spécifier le motif à comparer.

       [!] --hex-string motif
              Cette option permet de spécifier le motif à comparer en notation hexadécimale.

       --icase
              Ignorer la casse lors de la comparaison.

       Exemples :

              # Le motif peut contenir du texte simple.
              iptables -A INPUT -p tcp --dport 80 -m string --algo bm --string 'GET /index.html' -j LOG

              #  Le motif en notation hexadécimale peut contenir des caractères non imprimables comme |0D 0A| ou
              |0D0A|.
              iptables  -p  udp  --dport  53  -m   string   --algo   bm   --from   40   --to   57   --hex-string
              '|03|www|09|netfilter|03|org|00|'

       Nota : étant donné que l’algorithme Boyer-Moore (BM) effectue sa comparaison de la droite vers la gauche,
       et que le noyau peut stocker un paquet sous forme de plusieurs blocs non contigus, il est possible qu’une
       comparaison soit répartie sur plusieurs blocs, auquel cas cet algorithme ne le trouvera pas.

       Pour   vous  assurer  qu’une  telle  situation  ne  se  présente  jamais,  utilisez  plutôt  l’algorithme
       Knuth-Pratt-Morris (KMP). Pour résumer, choisissez l’algorithme de recherche de chaîne approprié à  votre
       cas concret.

       Par  exemple,  si  vous  utilisez  le module pour le filtrage, NIDS ou tout filtrage similaire axé sur la
       sécurité, choisissez KMP. Par contre, si vous recherchez la performance — par exemple,  si  vous  classez
       les paquets pour appliquer des politiques de qualité de service (QoS) — et si vous ne vous préoccupez pas
       de la perte éventuelle de paquets correspondants divisés en plusieurs fragments, choisissez BM.

   tcp
       Ce  module  ne peut être utilisé que si « --protocol tcp » a été spécifié. Il prend en charge les options
       suivantes :

       [!] --source-port,--sport port[:port]
              Cette option permet de spécifier le port ou une plage de ports source. port peut être  un  nom  de
              service ou un numéro de port. Il est aussi possible de spécifier une plage fermée de ports sous la
              forme  premier:dernier.  Si  premier est omis, la plage débutera à « 0 » ; si dernier est omis, la
              plage finira à « 65535 ». --sport est un alias pratique de cette option.

       [!] --destination-port,--dport port[:port]
              Cette option permet de spécifier le port ou une plage de ports destination. --dport est  un  alias
              pratique de cette option.

       [!] --tcp-flags masque comp
              Correspondance  lorsque  les  drapeaux  TCP  sont  tels  que spécifiés. Le premier argument masque
              contient les drapeaux qui doivent être examinés, sous forme d’une liste séparée par des virgules ;
              le second argument comp est une liste des drapeaux séparés par des virgules qui doit être définie.
              Les drapeaux valables sont : SYN ACK FIN RST URG PSH ALL NONE. Ainsi la commande
               iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST SYN
              ne concernera que les paquets dont le drapeau SYN est défini et dont les drapeaux ACK, FIN et  RST
              ne le sont pas.

       [!] --syn
              Correspondance  uniquement aux paquets dont le bit SYN est positionné et dont les bits ACK, RST et
              FIN ne le sont pas. De tels paquets sont utilisés pour demander l’ouverture d’une connexion TCP  ;
              par  exemple,  bloquer  de  tels  paquets  entrant  par une interface empêchera les connexions TCP
              entrantes, alors que les connexions TCP sortantes  ne  seront  pas  affectées.  Cette  option  est
              équivalente à --tcp-flags SYN,RST,ACK,FIN SYN.

       [!] --tcp-option numéro
              Correspondance si l’option TCP est définie.

   tcpmss
       Ce  module  permet de vérifier la correspondance du champ TCP MSS (Maximum Segment Size — taille maximale
       de segment) de l’en-tête TCP. Il ne peut être utilisé qu’avec les paquets TCP SYN ou SYN/ACK, car la  MSS
       n’est négociée que durant la « poignée de main » TCP au moment du lancement de la connexion.

       [!] --mss valeur[:valeur]
              Cette  option  permet  de vérifier la correspondance d’une valeur ou d’un intervalle de valeurs de
              TCP MSS. Si un intervalle est spécifié, la seconde valeur doit  être  supérieure  ou  égale  à  la
              première.

   time
       Ce  module  permet  de  vérifier  la correspondance du moment d’arrivée d’un paquet avec un intervalle de
       temps donné. Toutes les options sont facultatives, mais elles sont combinées avec un ET logique si  elles
       sont présentes. Tous les temps sont interprétés en UTC par défaut.

       --datestart AAAA[-MM[-JJ[Thh[:mm[:ss]]]]]

       --datestop AAAA[-MM[-JJ[Thh[:mm[:ss]]]]]
              Ces  options permettent de spécifier un intervalle de temps, exprimé en notation « T » de la norme
              ISO 8601, pendant lequel la correspondance  d’un  paquet  sera  vérifiée.  L’intervalle  de  temps
              maximal est 1970-01-01T00:00:00 à 2038-01-19T04:17:07.

              Si  --datestart  ou  --datestop  ne  sont pas spécifiés, leur valeur par défaut sera 1970-01-01 et
              2038-01-19, respectivement.

       --timestart hh:mm[:ss]

       --timestop hh:mm[:ss]
              Ces options  permettent  de  spécifier  un  intervalle  de  temps  journalier  pendant  lequel  la
              correspondance  d’un  paquet sera vérifiée. L’intervalle de temps maximal est 00:00:00 à 23:59:59.
              Les valeurs commençant par zéro sont autorisées (comme « 06:03 ») et correctement interprétées  en
              base 10.

       [!] --monthdays jour[,jour...]
              Cette option permet de spécifier les jours du mois au cours desquels la correspondance d’un paquet
              sera  vérifiée.  Les  valeurs possibles vont de 1 à 31. Notez que spécifier 31 ne correspondra pas
              pour les mois qui n’ont pas de 31ème jour ; même remarque pour les mois de  février  à  28  ou  29
              jours.

       [!] --weekdays jour[,jour...]
              Cette  option permet de spécifier les jours de la semaine au cours desquels la correspondance d’un
              paquet sera vérifiée. Les valeurs possibles sont Mon, Tue, Wed,  Thu,  Fri,  Sat  et  Sun  ou  des
              nombres  de 1 à 7, respectivement. Vous pouvez aussi utiliser des variantes à deux caractères (Mo,
              Tu, etc.).

       --contiguous
              Lorsque --timestop est inférieur à --timestart, considérer cela comme un simple intervalle et  non
              comme des intervalles distincts pour la comparaison. Voir EXEMPLES.

       --kerneltz
              Utiliser  la  zone  horaire  du  noyau  au  lieu d’UTC pour déterminer si un paquet correspond aux
              contraintes de temps.

       À propos des zone horaires du noyau  :  Linux  conserve  systématiquement  l’heure  système  en  UTC.  Au
       démarrage,  l’heure  système  est  initialisée à partir d’une source de temps de référence. Lorsque cette
       source de temps n’a pas d’informations à propos de la zone horaire, comme l’horloge CMOS  RTC  d’x86,  la
       zone  UTC  sera  présumée.  Si  la  source  de temps n’est pas en UTC, l’espace utilisateur devra fournir
       l’heure système et la zone horaire correctes au noyau lorsqu’il aura obtenu cette information.

       L’heure locale est une fonctionnalité qui s’ajoute à l’heure système (indépendante de la  zone  horaire).
       Chaque processus possède sa propre idée du temps local défini à l’aide de la variable d’environnement TZ.
       Le  noyau  possède  aussi  sa  propre  variable  exprimant  le  décalage  de la zone horaire. La variable
       d’environnement en espace utilisateur TZ spécifie comment l’heure système basée sur UTC est affichée, par
       exemple lorsque vous exécutez date(1) ou ce qu’affiche  votre  horloge  de  bureau.  La  chaîne  TZ  peut
       présenter  des  décalages différents en fonction de la date, ce qui provoque un saut de temps automatique
       dans l’espace utilisateur lorsque le DST (Daylight Saving Time — heure  d’été)  change.  La  variable  du
       noyau exprimant le décalage de la zone horaire lui permet de convertir des temps en provenance de sources
       non  UTC,  comme  les  systèmes de fichiers FAT, vers des temps UTC (car c’est ces derniers qu’utilise le
       reste du système).

       Le problème avec la zone horaire du noyau réside dans le fait que les distributions Linux peuvent ignorer
       la définition de la zone horaire du noyau et ne définir que l’heure système.  Même  si  une  distribution
       particulière définit la zone horaire au démarrage, elle ne maintient en général pas à jour le décalage de
       la zone horaire du noyau qui change avec l’heure d’été. ntpd(8) n’affectant pas la zone horaire du noyau,
       il  est  inutile de l’exécuter pour résoudre ce problème. Ainsi, il est possible d’avoir une zone horaire
       toujours égale à +0000 ou fausse  pendant  la  moitié  de  l’année  ;  c’est  pourquoi  l’utilisation  de
       --kerneltz est fortement déconseillée.

       EXEMPLES. Pour que les paquets correspondent pendant les weekends, utilisez :

              -m time --weekdays Sa,Su

       Ou, pour que les paquets correspondent (une seule fois) pendant une période de vacances nationales :

              -m time --datestart 2007-12-24 --datestop 2007-12-27

       Comme  l’heure de fin est exactement inclusive, vous devez utiliser le moment de fin suivant pour exclure
       de la correspondance la première seconde du jour suivant :

              -m time --datestart 2007-01-01T17:00 --datestop 2007-01-01T23:59:59

       Pendant la pause déjeuner :

              -m time --timestart 12:30 --timestop 13:30

       Le quatrième vendredi du mois :

              -m time --weekdays Fr --monthdays 22,23,24,25,26,27,28

       Notez que cet exemple exploite une certaine propriété mathématique.  Il  n’est  pas  possible  d’exprimer
       «  quatrième  jeudi  OU quatrième vendredi » à l’aide d’une seule règle ; il est cependant possible de le
       faire à l’aide de plusieurs règles.

       Vérifier une correspondance à cheval sur deux jours peut donner des résultats inattendus. Par exemple,

              « -m time --weekdays Mo --timestart 23:00 --timestop 01:00 » correspondra à la  période  du  lundi
              pendant  une  heure de minuit à 1 heure du matin et pendant une autre heure à partir de 23 heures.
              Si ce n’est pas ce que vous souhaitez, par exemple si vous voulez  «  vérifier  la  correspondance
              pendant deux heures à partir du lundi à 23 heures », vous devez ajouter l’option --contiguous dans
              cet exemple.

   tos
       Ce  module  vérifie  la  correspondance  du  champ sur 8 bits « Type of Service » de l’en-tête IPv4 (bits
       « Precedence » inclus) ou du champ « Priority » (aussi sur 8 bits) de l’en-tête IPv6.

       [!] --tos valeur[/masque]
              Cette option permet de vérifier la correspondance des paquets avec la valeur de marque TOS donnée.
              Si un masque est spécifié, il est combiné à l’aide d’un ET logique avec la  marque  TOS  avant  la
              comparaison.

       [!] --tos symbole
              Vous  pouvez  aussi spécifier un nom symbolique lors de la recherche de correspondance à l’aide du
              module tos pour IPv4. La liste des noms TOS reconnus peut être obtenue en appelant iptables  suivi
              de  -m tos -h. Notez que cela implique un masque de 0x3F, c’est-à-dire tous les bits sauf les bits
              ECN (Explicit Congestion Notification — notification explicite de congestion).

   ttl (spécifique à IPv4)
       Ce module vérifie la correspondance du champ durée de vie de l’en-tête IP.

       [!] --ttl-eq ttl
              Correspondance de la valeur de TTL donnée.

       --ttl-gt ttl
              Correspondance si la durée de vie du paquet est supérieure à la valeur de TTL donnée.

       --ttl-lt ttl
              Correspondance si la durée de vie du paquet est inférieure à la valeur de TTL donnée.

   u32
       Ce module teste si des  quantités  de4  octets  maximum  extraites  d’un  paquet  possèdent  les  valeurs
       spécifiées.  Spécifier  ce qu’il faut extraire suffit en général pour trouver des données à des décalages
       donnés dans les en-têtes tcp ou les charges utiles.

       [!] --u32 tests
              L’argument consiste en un programme dans un langage simple décrit ci-après.

              tests := emplacement "=" valeur | tests "&&" emplacement "=" valeur

              valeur := intervalle | valeur "," intervalle

              intervalle := nombre | nombre ":" nombre

       un nombre seul, n, est interprété comme n:n. n:m est interprété comme l’intervalle  des  nombres  >=n  et
       <=m.

           emplacement := nombre | emplacement opérateur nombre

           opérateur := "&" | "<<" | ">>" | "@"

       Les  opérateurs  &,  <<,  >>  et  &&  ont  la même signification qu’en C. L’opérateur = est réellement un
       opérateur d'appartenance à un ensemble et la syntaxe des valeurs décrit un ensemble. L’opérateur @ permet
       de se déplacer vers l’en-tête suivant et est décrit plus loin.

       Il existe actuellement des limites d’implémentation artificielles sur la taille des tests :

           –  pas plus de 10 « = » (et 9 « && ») dans l’argument d’u32

           –  pas plus de 10 intervalles (et 9 virgules) par valeur

           –  pas plus de 10 nombres (et 9 opérateurs) par emplacement

       Pour expliquer la signification d’un emplacement, imaginez la machine suivante qui l’interprète. Il  y  a
       trois registres :

              A est de type char *, initialement l’adresse de l’en-tête IP

              B et C sont des entiers non signés sur 32 bits, initialement égaux à 0.

       Les instructions sont :

       nombre B = nombre;

              C = (*(A+B)<<24) + (*(A+B+1)<<16) + (*(A+B+2)<<8) + *(A+B+3)

       &nombre
              C = C & nombre

       << nombre
              C = C << nombre

       >> nombre
              C = C >> nombre

       @nombre
              A = A + C ; puis exécutez l’instruction nombre

       Tout  accès  à  la mémoire en dehors de [skb->data,skb->end] fera échouer la recherche de correspondance.
       Sinon, le résultat du calcul est la valeur finale de C.

       Les blancs sont autorisés mais non obligatoires dans les tests. Cependant, les caractères  présents  dans
       ces  derniers  sont susceptibles de nécessiter une protection vis-à-vis de l’interpréteur de commande, et
       il est donc recommandé d’entourer les arguments de guillemets.

       Exemple :

              rechercher les paquets IP d’une taille totale supérieure ou égale à 256 octets.

              L’en-tête IP contient un champ longueur totale dans les octets 2 et 3.

              --u32 "0 & 0xFFFF = 0x100:0xFFFF"

              lire les octets 0 à 3

              les combiner à l’aide d’un ET logique avec 0xFFFF (ce qui donne les octets 2 et 3) et  vérifie  si
              le résultat est dans la plage [0x100:0xFFFF].

       Exemple plus réaliste, donc plus compliqué :

              rechercher les paquets avec un icmp de type 0

              Tout  d’abord,  vérifier  s’il s’agit d’un paquet ICMP ; c’est le cas si l’octet 9 (protocole) est
              égal à 1.

              --u32 "6 & 0xFF = 1 && ...

              lire les octets 6 à 9, utiliser l’opérateur & pour supprimer les octets  6  à  8  et  comparer  le
              résultat  avec  1.  Vérifier ensuite qu’il ne s’agit pas d’un fragment (si c’est le cas, il pourra
              appartenir à un tel paquet, mais ce n’est pas systématique). Notez que  ce  test  est  en  général
              nécessaire si vous voulez vérifier la correspondance de toute donnée au delà de l’en-tête IP. S’il
              s’agit  d’un  paquet complet (et non d’un fragment), les 6 derniers bits de l’octet 6 et tous ceux
              de l’octet 7 seront à 0. Autrement, vous pouvez autoriser les premiers fragments en ne testant que
              les 5 derniers bits de l’octet 6.

              ... 4 & 0x3FFF = 0 && ...

              Dernier test : le premier octet après l’en-tête IP (le type) est à 0. C’est ici  que  nous  devons
              utiliser l’opérateur « @ ». La taille de l’en-tête IP (IHL) en mots de 32 bits est stockée dans la
              moitié droite de l’octet 0 de l’en-tête IP lui-même.

              ... 0 >> 22 & 0x3C @ 0 >> 24 = 0"

              Le  premier 0 signifie « lire les octets 0 à 3 », et >>22 « décaler le résultat de 22 bits vers la
              droite. Un décalage de 24 bits donnerait le premier octet ; donc un décalage de seulement 22  bits
              correspond  à quatre fois cela plus quelques octets supplémentaires. Ensuite, &3C élimine les deux
              bits supplémentaires à droite et les quatre premiers bits du premier octet. Par exemple, si IHL=5,
              la taille de l’en-tête IP est de 20 (4 x 5) octets. Dans notre cas, les octets 0 et 1  contiennent
              (en binaire) xxxx0101 yyzzzzzz, >>22 donne la valeur sur 10 bits xxxx0101yy et &3C donne 010100. @
              indique  qu’il faut utiliser ce nombre comme nouveau décalage dans le paquet et lire quatre octets
              à partir de cette nouvelle position. Ce sont les 4 premiers octets de la charge  utile  ICMP  dont
              l’octet  0  correspond  au  type  ICMP. Il ne nous reste donc qu’à décaler la valeur de 24 vers la
              droite pour tout éliminer, sauf le premier octet, et à comparer le résultat à 0.

       Exemple :

              Les octets 8 à 12 de la charge utile TCP ont pour valeur 1, 2, 5 ou 8.

              Tout d’abord, vérifier qu’il s’agit d’un paquet TCP (similaire à ICMP).

              --u32 "6 & 0xFF = 6 && ...

              Ensuite, vérifier qu’il ne s’agit pas d’un fragment (comme ci-avant).

              ... 0 >> 22 & 0x3C @ 12 >> 26 & 0x3C @ 8 = 1,2,5,8"

              Comme ci-avant, 0>>22&3C calcule le nombre d’octets contenus dans l’en-tête IP. L’opérateur @ fait
              du résultat le nouveau décalage dans le paquet qui correspond au début de l’en-tête TCP. La taille
              de l’en-tête TCP (toujours en mots de 32 bits) est stockée dans la moitié gauche de l’octet 12  de
              l’en-tête  TCP.  12>>26&3C  convertit  cette longueur en octets (comme précédemment pour l’en-tête
              IP). « @ » fait du résultat le nouveau décalage qui correspond au début de la  charge  utile  TCP.
              Enfin, « 8 » lit les octets 8 à 12 de la charge utile et = vérifie si le résultat est égal à 1, 2,
              5 ou 8.

   udp
       Ce  module  ne peut être utilisé que si l’option « --protocol udp » est spécifiée. Il prend en charge les
       options suivantes :

       [!] --source-port,--sport port[:port]
              Cette option permet de spécifier le port ou la plage de  ports  source.  Voir  la  description  de
              l’option --source-port de l’extension TCP pour les détails.

       [!] --destination-port,--dport port[:port]
              Cette  option permet de spécifier le port ou la plage de ports destination. Voir la description de
              l’option --destination-port de l’extension TCP pour les détails.

ACTIONS ÉTENDUES

       iptables peut utiliser des modules d’action étendue  ;  les  actions  suivantes  sont  incluses  dans  la
       distribution standard :

   AUDIT
       Cette   action  crée  des  enregistrements  d’audit  pour  les  paquets  qui  l’atteignent.  Elle  permet
       d’enregistrer les paquets acceptés, éliminés et rejetés. Voir auditd(8) pour plus de détails.

       --type {accept|drop|reject}
              Cette option permet de définir le type d’enregistrement d’audit. À partir  de  Linux  4.12,  cette
              option  n’a  plus  d’effet sur les messages d’audit générés. Elle est encore acceptée par iptables
              pour des raisons de compatibilité, mais ignorée.

       Exemple :

              iptables -N AUDIT_DROP

              iptables -A AUDIT_DROP -j AUDIT

              iptables -A AUDIT_DROP -j DROP

   CHECKSUM
       Cette action contourne sélectivement les applications  défectueuses  ou  obsolètes.  Elle  ne  peut  être
       utilisée que dans la table mangle.

       --checksum-fill
              Cette  option  permet  de  calculer  et  inscrire  la  somme de contrôle dans un paquet qui en est
              dépourvu. Elle s’avère particulièrement utile si vous devez contourner des applications  anciennes
              comme  les  clients  dhcp  qui  ne  gèrent  pas bien les déchargements de somme de contrôle, et ne
              souhaitez pas désactiver le déchargement de somme de contrôle dans votre dispositif.

   CLASSIFY
       Cette action permet de définir la valeur de skb->priority, et ainsi ranger le paquet dans une classe  CBQ
       (Class-Based Queuing — mise en file d’attente en fonction de la classe) spécifique.

       --set-class majeur:mineur
              Cette  option  permet  de  définir  les  valeurs majeure et mineure de la classe. Les valeurs sont
              toujours interprétées en hexadécimal, même si le préfixe 0x n’est pas spécifié.

   CLUSTERIP (spécifique à IPv4)
       Cette action permet de configurer une grappe simple de nœuds qui partagent une adresse  IP  et  MAC  sans
       répartiteur de charge explicite en frontal. Les connexions sont réparties statistiquement entre les nœuds
       de cette grappe.

       Notez  que  l’action  CLUSTERIP  est  considérée  comme  obsolète par rapport au module de correspondance
       cluster qui est plus souple et non limité à IPv4.

       --new  Cette option permet de créer un nouveau ClusterIP. Vous devez toujours la définir dans la première
              règle concernant un ClusterIP donné.

       --hashmode mode
              Cette option permet de spécifier  le  mode  de  hachage.  Les  valeurs  possibles  sont  sourceip,
              sourceip-sourceport ou sourceip-sourceport-destport.

       --clustermac mac
              Cette option permet de spécifier l’adresse MAC du ClusterIP. Ce doit être une adresse multicast de
              la couche liaison.

       --total-nodes nombre
              Cette option permet de spécifier le nombre total de nœuds que comporte cette grappe.

       --local-node numéro
              Cette option permet de spécifier le numéro de nœud de la machine locale au sein de cette grappe.

       --hash-init aléa
              Cette option permet de spécifier la graine aléatoire utilisée pour l'initialisation du hachage.

   CONNMARK
       Cette action définit la valeur (sur 32 bits) de la marque netfilter associée à une connexion.

       --set-xmark valeur[/masque]
              Cette  option  met à zéro les bits donnés par masque et effectue un XOR entre la ctmark (marque de
              connexion) et la valeur.

       --save-mark [--nfmask masque_nf] [--ctmask masque_ct]
              Cette option copie la marque de paquet (nfmark) vers la marque de connexion (ctmark) en  utilisant
              les masques donnés. La nouvelle valeur de la marque de paquet nfmark est déterminée comme suit :

              ctmark = (ctmark & ~ctmask) ^ (nfmark & nfmask)

              Autrement  dit,  masque_ct  détermine  les  bits à mettre à zéro et masque_nf les bits de nfmark à
              combiner à l’aide d’un XOR avec la  ctmark.  La  valeur  par  défaut  de  masque_ct  et  masque_nf
              est 0xFFFFFFFF.

       --restore-mark [--nfmask masque_nf] [--ctmask masque_ct]
              Cette  option copie la marque de connexion (ctmark) vers la marque de paquet (nfmark) en utilisant
              les masques donnés. La nouvelle valeur de ctmark est déterminée comme suit :

              nfmark = (nfmark & ~nfmask) ^ (ctmark & ctmask);

              Autrement dit, masque_nf détermine les bits à mettre à zéro et masque_ct  les  bits  de  ctmark  à
              combiner  à  l’aide  d’un  XOR  avec  la  nfmark.  La  valeur par défaut de masque_ct et masque_nf
              est 0xFFFFFFFF.

              --restore-mark ne peut être utilisée que dans la table mangle.

       Les mnémoniques valables pour --set-xmark sont les suivants :

       --and-mark bits
              Effectuer un ET logique entre la ctmark et bits  (le  mnémonique  pour  --set-xmark  0/invbitsinvbits est la négation binaire de bits).

       --or-mark bits
              Effectuer un OU logique entre la ctmark et bits (le mnémonique pour --set-xmark bits/bits).

       --xor-mark bits
              Effectuer un XOR logique entre la ctmark et bits (le mnémonique pour --set-xmark bits/0).

       --set-mark valeur[/masque]
              Cette  option  permet de définir la marque de connexion. Si un masque est spécifié, seuls les bits
              correspondant aux bits positionnés du masque seront modifiés.

       --save-mark [--mask masque]
              Cette option permet de copier la marque de paquet nfmark vers la marque de connexion ctmark. Si un
              masque est spécifié, seuls les bits correspondant aux bits positionnés du masque seront copiés.

       --restore-mark [--mask masque]
              Cette option permet de copier la marque de connexion ctmark vers la marque de paquet nfmark. Si un
              masque est spécifié, seuls les bits correspondant aux bits positionnés du  masque  seront  copiés.
              Cette option ne peut être utilisée que dans la table mangle.

   CONNSECMARK
       Cette  action  permet  de copier les marquages de sécurité depuis les paquets vers les connexions (si non
       étiquetées), et depuis les connexions vers les paquets (là encore, si non étiquetés). Utilisée en général
       en combinaison avec l’action SECMARK, elle peut être utilisée dans la  table  security  (à  des  fins  de
       rétrocompatibilité avec les noyaux plus anciens, elle peut aussi être utilisée dans la table mangle).

       --save Si  le  paquet  possède un marquage de sécurité, copier ce dernier vers la connexion si elle n’est
              pas marquée.

       --restore
              Si la connexion possède un marquage de sécurité, copier  ce  dernier  vers  le  paquet  s’il  n’en
              possède pas déjà un.

   CT
       L’action  CT  permet  de définir les paramètres d’un paquet ou de la connexion qui lui est associée. Elle
       attache un « modèle » d’entrée de traçage de connexion au paquet, ce modèle étant ensuite utilisé par  le
       cœur  de  conntrack  lors  de  l’initialisation  d’une nouvelle entrée ct. Cette action ne peut donc être
       utilisée que dans la table raw.

       --notrack
              Désactiver le traçage de connexion pour ce paquet.

       --helper nom
              Utiliser l’assistant identifié à l’aide de nom pour la connexion. Utiliser cette option  est  plus
              souple que charger les modules d’assistant de conntrack avec des ports prédéfinis.

       --ctevents evènement[,...]
              Ne  générer  que les évènements de conntrack spécifiés pour cette connexion. Les types d’évènement
              valables sont  :  new,  related,  destroy,  reply,  assured,  protoinfo,  helper,  mark  (ce  type
              d’évènement fait référence à la ctmark, pas à la nfmark), natseqinfo et secmark (ctsecmark).

       --expevents évènement[,...]
              Ne  générer  que  les  événements  d'attente  spécifiés  pour cette connexion. Le type d’évènement
              valable est : new.

       --zone-orig {id|mark}
              Assigner ce paquet à la zone id pour le trafic venant de la direction ORIGINAL et n’effectuer  des
              recherches  que  dans cette zone. Si mark est spécifié à la place de id, la zone est dérivée de la
              marque de paquet nfmark.

       --zone-reply {id|mark}
              Assigner ce paquet à la zone id pour le trafic venant de la direction  REPLY  et  n’effectuer  des
              recherches  que  dans cette zone. Si mark est spécifié à la place de id, la zone est dérivée de la
              marque de paquet nfmark.

       --zone {id|mark}
              Assigner ce paquet à la zone id et n’effectuer des recherches que dans cette  zone.  Si  mark  est
              spécifié  à  la  place  de  id,  la zone est dérivée de la marque de paquet nfmark. Par défaut les
              paquets ont pour zone 0. Cette option s’applique aux deux directions.

       --timeout nom
              Utiliser la politique de délai d’expiration identifiée par nom pour  la  connexion.  Cette  option
              permet  une  définition plus souple de la politique de délai d’expiration que les valeurs de délai
              d’expiration global disponibles dans /proc/sys/net/netfilter/nf_conntrack_*_timeout_*.

   DNAT
       Cette action ne peut être utilisée que dans la table nat, dans les chaînes PREROUTING et OUTPUT, et  dans
       les  chaînes  définies par l’utilisateur qui sont appelées depuis ces chaînes. Elle indique que l’adresse
       de destination du paquet doit être modifiée (et que tous les paquets ultérieurs de cette connexion seront
       aussi modifiés), et que l’examen des règles doit cesser. Elle accepte les options suivantes :

       --to-destination [adr_ip[-adr_ip]][:port[-port[/port_de_base]]]
              Cette option permet de spécifier une adresse IP  de  destination  seule  ou  une  plage  inclusive
              d’adresses  IP.  Il  est  possible d’indiquer une plage de ports si la règle spécifie aussi un des
              protocoles suivants : tcp, udp, dccp ou sctp. Si aucune plage de ports n’est spécifiée, le port de
              destination ne sera jamais modifié. Si  aucune  adresse  IP  n’est  spécifiée,  seul  le  port  de
              destination sera modifié. Si port_de_base est spécifié, la différence entre le port de destination
              d’origine  et sa valeur sera utilisée comme décalage dans la plage de ports de redirection, ce qui
              permet de créer des plages de redirection de ports décalés (disponible depuis la version  4.18  du
              noyau). Pour un seul port ou un port_de_base, il est possible d’utiliser un nom de service tel que
              ceux du fichier /etc/services.

       --random
              Rendre aléatoire la redirection du port source (noyaux >= 2.6.22).

       --persistent
              Attribuer à un client les mêmes adresses source et destination pour chaque connexion. Cette option
              l’emporte   sur  l’action  SAME.  La  redirection  persistante  est  prise  en  charge  depuis  la
              version 2.6.29-rc2.

       IPv6 est pris en charge depuis la version 3.7 du noyau Linux.

   DNPT (spécifique à IPv6)
       Cette action permet d’effectuer une translation IPv6 à  IPv6  sans  conservation  d’état  (stateless)  du
       préfixe réseau de destination (comme décrit dans la RFC 6296).

       Vous  devez  utiliser  cette action dans la table mangle, pas dans la table nat. Elle accepte les options
       suivantes :

       --src-pfx [préfixe/taille]
              Définir le préfixe source que vous voulez traduire, ainsi que sa taille.

       --dst-pfx [préfixe/taille]
              Définir le préfixe de destination que vous voulez  utiliser  dans  la  traduction,  ainsi  que  sa
              taille.

       Pour annuler la traduction, vous devez utiliser l’action SNPT. Exemple :

              ip6tables  -t  mangle  -I  POSTROUTING  -s  fd00::/64  !  -o  vboxnet0 -j SNPT --src-pfx fd00::/64
              --dst-pfx 2001:e20:2000:40f::/64

              ip6tables  -t  mangle  -I  PREROUTING  -i  wlan0  -d  2001:e20:2000:40f::/64  -j  DNPT   --src-pfx
              2001:e20:2000:40f::/64 --dst-pfx fd00::/64

       Vous devrez peut-être activer le mandataire d’hôtes voisins IPv6 :

              sysctl -w net.ipv6.conf.all.proxy_ndp=1

       Vous  devez  aussi  utiliser  l’action  NOTRACK  pour  désactiver  le  traçage de connexion pour les flux
       traduits.

   DSCP
       Cette action modifie la valeur des bits DSCP (Differentiated Services Code Point —  valeur  de  code  des
       services différenciés) au sein de l’en-tête TOS (Type of Service — type de service) du paquet IPv4. Comme
       elle manipule un paquet, elle ne peut être utilisée que dans la table mangle.

       --set-dscp valeur
              Affecter une valeur numérique au champ DSCP (en décimal ou hexadécimal).

       --set-dscp-class classe
              Affecter une classe de DiffServ (Differentiated Services) au champ DSCP.

   ECN (spécifique à IPv4)
       Cette  action  contourne  de  manière  sélective  les  trous  noirs ECN (Explicit Congestion Notification
       — notification explicite de congestion) connus. Elle ne peut être utilisée que dans la table mangle.

       --ecn-tcp-remove
              Supprimer tous les bits ECN de l’en-tête TCP. Bien entendu, cette option  ne  peut  être  utilisée
              qu’en combinaison avec -p tcp.

   HL (spécifique à IPv6)
       Cette  action  permet  de  modifier  le champ « Hop Limit » de l’en-tête IPv6. Le champ « Hop Limit » est
       similaire à la valeur de TTL (Time To Live — durée de vie) en IPv4. Définir ou incrémenter la  valeur  du
       champ  «  Hop  Limit  »  peut s’avérer très dangereux et il faut par conséquent éviter de le faire à tout
       prix. Cette action ne peut être utilisée que dans la table mangle.

       Ne définissez ou incrémentez jamais cette valeur pour les paquets qui quittent votre réseau local !

       --hl-set valeur
              Définir « Hop Limit » à valeur.

       --hl-dec valeur
              Décrémenter « Hop Limit » un nombre de fois égal à valeur.

       --hl-inc valeur
              Incrémenter « Hop Limit » un nombre de fois égal à valeur.

   HMARK
       Cette action est similaire à MARK, c’est-à-dire qu’elle définit la marque fwmark  (marque  de  pare-feu),
       mais que cette dernière est calculée en hachant le sélecteur de paquet choisi. Vous devez aussi spécifier
       la  plage  de marquage et éventuellement le décalage à partir duquel démarrer. Les messages d’erreur ICMP
       (Internet Control Message Protocol — Protocole de message de contrôle sur  Internet)  sont  inspectés  et
       utilisés pour calculer le hachage.

       Les options disponibles sont :

       --hmark-tuple tuple
              Les  membres  du  tuple possibles sont : src pour adresse source (adresses IPv4 ou IPv6), dst pour
              adresse de destination (adresses IPv4 ou IPv6), sport pour port source (TCP, UDP,  UDPlite,  SCTP,
              DCCP),  dport  pour  port  de  destination  (TCP,  UDP,  UDPlite, SCTP, DCCP), spi pour « Security
              Parameter Index » (AH, ESP) et ct pour utilisation du tuple conntrack à la place des sélecteurs de
              paquet.

       --hmark-mod valeur (doit être supérieure à 0)
              Modulus pour le calcul du hachage (afin de limiter la plage de marques possibles).

       --hmark-offset valeur
              Décalage à partir duquel démarrer les marques.

       Pour une utilisation avancée, au lieu d’utiliser --hmark-tuple, vous pouvez spécifier
              des préfixes et des masques personnalisés :

       --hmark-src-prefix cidr
              Le masque d’adresse source en notation CIDR.

       --hmark-dst-prefix cidr
              Le masque d’adresse de destination en notation CIDR.

       --hmark-sport-mask valeur
              Un masque de port source sur 16 bits en hexadécimal.

       --hmark-dport-mask valeur
              Un masque de port de destination sur 16 bits en hexadécimal.

       --hmark-spi-mask valeur
              Un champ de 32 bits avec le masque spi.

       --hmark-proto-mask valeur
              Un champ sur 8 bits avec le numéro du protocole de la couche 4.

       --hmark-rnd valeur
              Une valeur personnalisée quelconque sur 32 bits pour amorcer le calcul du hachage.

       Exemples :

       iptables -t mangle -A PREROUTING -m conntrack --ctstate NEW
        -j HMARK --hmark-tuple ct,src,dst,proto --hmark-offset 10000 --hmark-mod 10 --hmark-rnd 0xcafedeca

       iptables -t mangle -A PREROUTING -j HMARK --hmark-offset 10000 --hmark-tuple src,dst,proto --hmark-mod 10
       --hmark-rnd 0xfadeface

   IDLETIMER
       Cette action permet de détecter le moment où des interfaces sont inactives depuis un certain  temps.  Les
       minuteurs sont identifiés par des étiquettes et sont créés lorsqu’une règle est définie avec une nouvelle
       étiquette.  Les  règles acceptent aussi une valeur de délai (en secondes) en tant qu’option. Si plusieurs
       règles utilisent la même étiquette de minuteur, ce dernier sera  redémarré  chaque  fois  qu’une  de  ces
       règles  s’applique  à  un  paquet.  Une entrée est créée pour chaque minuteur dans sysfs(5). Cet attribut
       contient le temps restant avant expiration  du  minuteur.  Les  attributs  sont  situés  sous  la  classe
       xt_idletimer :

       /sys/class/xt_idletimer/timers/<étiquette>

       Lorsque  le  minuteur  arrive  à  expiration, le module de l’action envoie une notification sysfs(5) vers
       l’espace utilisateur, ce dernier pouvant alors décider  quoi  faire  (par  exemple  se  déconnecter  pour
       économiser de l’énergie).

       --timeout valeur
              La valeur de délai en secondes après laquelle la notification sera envoyée.

       --label chaîne
              Un identifiant unique pour chaque minuteur. La taille maximale de la chaîne est de 27 caractères.

   LED
       Cette action permet de créer un déclencheur de LED (Light-Emitting Diode — diode électroluminescente) qui
       peut  alors  être  relié  aux voyants de l’indicateur du système en les allumant ou les faisant clignoter
       lorsque certains paquets traversent le système. Par exemple, une LED pourrait s’allumer pendant  quelques
       minutes  chaque  fois  qu’une  connexion  SSH  est  établie  avec  la  machine locale. Le comportement du
       déclencheur peut être contrôlé à l’aide des options suivantes :

       --led-trigger-id nom
              Le  nom  donné  au  déclencheur  de  LED.  Le  véritable  nom  du  déclencheur  sera  préfixé  par
              « netfilter- ».

       --led-delay ms
              Le  temps  (en  millisecondes)  pendant lequel la LED devra rester allumée lorsqu’un paquet arrive
              avant d’être éteinte. La valeur par défaut est 0 (clignoter aussi vite que possible). Pour que  la
              LED reste allumée en permanence une fois activée, utilisez la valeur spéciale inf (dans ce cas, le
              déclencheur devra être détaché et attaché à nouveau manuellement au dispositif à LED pour éteindre
              cette dernière).

       --led-always-blink
              Toujours  faire clignoter la LED à l’arrivée d’un paquet, même si cette dernière est déjà allumée.
              Cette option permet de notifier l’arrivée de nouveaux paquets, même avec  de  grandes  valeurs  de
              délai (autrement, le délai serait simplement prolongé de manière silencieuse).

       Exemple :

       Créer un déclencheur de LED pour le trafic SSH entrant :
              iptables -A INPUT -p tcp --dport 22 -j LED --led-trigger-id ssh

       puis relier le nouveau déclencheur à une LED :
              echo netfilter-ssh >/sys/class/leds/nom_led/trigger

   LOG
       Cette  action  permet  d’activer  la  journalisation  des  paquets  qui correspondent au niveau du noyau.
       Lorsqu’elle est utilisée dans une règle, le noyau Linux enregistre certaines  informations  à  propos  de
       tous  les  paquets  qui  correspondent (comme la plupart des champs d’en-tête IP/IPv6) dans le journal du
       noyau (d’où elles peuvent être consultées à l’aide de dmesg(1) ou lues dans le journal du système).

       Cette action est « non terminale », c’est-à-dire que le parcours des règles continue à la règle suivante.
       Ainsi, si vous voulez journaliser les paquets que vous refusez, utilisez deux règles  séparées  avec  les
       mêmes  critères  de  correspondance,  la  première utilisant l’action LOG et la seconde la cible DROP (ou
       REJECT).

       --log-level niveau
              Le niveau de journalisation qui peut être un nombre (spécifique au système) ou un mnémonique.  Les
              valeurs  possibles  sont  (dans  l’ordre  décroissant  des priorités) : emerg, alert, crit, error,
              warning, notice, info ou debug.

       --log-prefix préfixe
              Faire débuter les messages de journalisation par le préfixe spécifié (jusqu’à 29 lettres de long),
              ce qui permet de distinguer les messages dans les journaux.

       --log-tcp-sequence
              Journaliser les numéros de séquence TCP. Cette option induit un risque de sécurité si  le  journal
              est accessible en lecture pour les utilisateurs.

       --log-tcp-options
              Journaliser les options de l’en-tête du paquet TCP.

       --log-ip-options
              Journaliser les options de l’en-tête du paquet IP/IPv6.

       --log-uid
              Journaliser l’UID du processus qui a généré le paquet.

       --log-macdecode
              Journaliser les adresses MAC et le protocole.

   MARK
       Cette  action permet de définir la valeur de la marque de Netfilter associée au paquet. Par exemple, vous
       pouvez l’utiliser conjointement avec un  routage  basé  sur  la  marque  de  pare-feu  fwmark  (nécessite
       iproute2). Si vous envisagez de le faire, notez que pour affecter le routage, la marque doit être définie
       soit  dans  la chaîne PREROUTING, soit dans la chaîne OUTPUT de la table mangle. La taille du champ de la
       marque est de 32 bits.

       --set-xmark valeur[/masque]
              Mettre à zéro les bits donnés par masque et combiner valeur avec la marque de paquet (« nfmark  »)
              à l’aide d’un XOR. Si masque est omis, sa valeur par défaut est 0xFFFFFFFF.

       --set-mark valeur[/masque]
              Mettre à zéro les bits donnés par masque et combiner valeur avec la marque de paquet à l’aide d’un
              OU logique. Si masque est omis, sa valeur par défaut est 0xFFFFFFFF.

       Les mnémoniques suivants sont disponibles :

       --and-mark bits
              Combiner  la  nfmark  avec  bits  à  l’aide  d’un ET logique (c’est le mnémonique pour --set-xmark
              0/invbitsinvbits est la négation logique de bits).

       --or-mark bits
              Combiner la nfmark avec bits à l’aide d’un  OU  logique  (c’est  le  mnémonique  pour  --set-xmark
              bits/bits).

       --xor-mark bits
              Combiner la nfmark avec bits à l’aide d’un XOR (c’est le mnémonique pour --set-xmark bits/0).

   MASQUERADE
       Cette action n’est valable que dans la table nat et la chaîne POSTROUTING. Elle ne doit être utilisée que
       pour  les  connexions  avec adresse IP dynamiquement assignée (dialup — accès commuté) : si vous avez une
       adresse IP statique, vous devez utiliser l’action SNAT.  La  «  mascarade  »  (masquerading)  consiste  à
       spécifier une association avec l’adresse IP de l’interface par laquelle sort le paquet, mais a aussi pour
       effet  d’oublier  les  connexions  lorsque  l’interface  est  désactivée. C’est un comportement approprié
       lorsque les accès commutés ultérieurs ont peu de chance d’avoir la même adresse d’interface (et  que  les
       connexions établies seront perdues de toute façon).

       --to-ports port[-port]
              Cette  option  permet  de  spécifier  une  plage  de  ports  source  à  utiliser, outrepassant les
              heuristiques de sélection de port source de SNAT (voir ci-avant). Elle ne peut être  utilisée  que
              si la règle spécifie aussi un des protocoles suivants : tcp, udp, dccp ou sctp.

       --random
              Rendre  aléatoire  la  redirection  de  port  source (noyaux de version >= 2.6.21). À partir de la
              version 5.0 du noyau, --random est identique à --random-fully.

       --random-fully
              Rendre totalement aléatoire la redirection de port source (noyaux de version >= 3.13).

       IPv6 est pris en charge depuis la version 3.7 du noyau Linux.

   NETMAP
       Cette action permet de rediriger statiquement tout un réseau d’adresses vers un autre réseau  d’adresses.
       Elle ne peut être utilisée que dans les règles de la table nat.

       --to adresse[/masque]
              Cette  option  permet  de  spécifier le réseau d’adresses de redirection. L’adresse résultante est
              construite de la manière suivante : tous les bits à  1  du  masque  sont  remplacés  par  ceux  de
              l’adresse  de  redirection  spécifiée,  et  tous  les  bits  à  0  du masque par ceux de l’adresse
              d’origine.

       IPv6 est pris en charge depuis la version 3.7 du noyau Linux.

   NFLOG
       Cette action permet la journalisation des paquets qui correspondent. Lorsqu’elle est  utilisée  dans  une
       règle,  le  noyau  Linux transmet le paquet au dorsal de journalisation chargé pour le journaliser. Cette
       action est en général utilisée conjointement avec nfnetlink_log comme dorsal  de  journalisation,  lequel
       diffusera  (multicast)  le paquet à l’aide d’un socket netlink vers le groupe de multidiffusion spécifié.
       Un ou plusieurs processus de l’espace utilisateur peuvent  souscrire  au  groupe  afin  de  recevoir  les
       paquets.  Comme LOG, c’est une action « non terminale », c’est-à-dire que le parcours des règles continue
       à la règle suivante.

       --nflog-group groupe_netlink
              Cette option permet de spécifier le groupe netlink (0–2^16-1)  auquel  les  paquets  sont  envoyés
              (applicable seulement à nfnetlink_log). La valeur par défaut est 0.

       --nflog-prefix préfixe
              Cette  option  permet de spécifier un préfixe, d’une longueur maximale de 64 caractères, à ajouter
              au message de journalisation pour faciliter la discrimination des messages dans les journaux.

       --nflog-range taille
              Cette option n’ayant jamais fonctionné, utilisez --nflog-size à la place.

       --nflog-size taille
              Cette option permet de spécifier  le  nombre  d’octets  qui  doivent  être  copiés  vers  l’espace
              utilisateur  (applicable  seulement  pour  nfnetlink_log).  Des instances de nfnetlink_log pouvant
              spécifier leur propre plage, cette option outrepasse cette dernière.

       --nflog-threshold taille
              Cette option permet de spécifier le nombre de paquets à mettre en file  d’attente  dans  le  noyau
              avant  de  les  envoyer  vers  l’espace utilisateur (applicable seulement pour nfnetlink_log). Une
              valeur élevée diminue la surcharge par paquet, mais augmente le  délai  avec  lequel  les  paquets
              atteignent l’espace utilisateur. La valeur par défaut est 1.

   NFQUEUE
       Cette  action  transmet le paquet à l’espace utilisateur en utilisant le gestionnaire nfnetlink_queue. Le
       paquet est placé dans la file d’attente identifiée par son numéro sur 16 bits. L’espace utilisateur  peut
       inspecter  et modifier le paquet s’il le souhaite ; il devra alors supprimer ou réinjecter le paquet dans
       le noyau. Voir libnetfilter_queue pour les détails. nfnetlink_queue a été ajouté à Linux à partir  de  la
       version   2.6.14,  queue-balance  à  partir  de  la  version  2.6.31  et  queue-bypass  à  partir  de  la
       version 2.6.39.

       --queue-num valeur
              Cette option permet de spécifier le numéro de file d’attente à  utiliser  qui  doit  être  compris
              entre 0 et 65535 inclus. La valeur par défaut est 0.

       --queue-balance valeur:valeur
              Cette  option  permet  de spécifier une plage de numéros de file d’attente à utiliser. Les paquets
              seront alors  répartis  entre  ces  dernières.  Cette  option  s’avère  utile  pour  les  systèmes
              multicœurs  :  lancer  plusieurs  instances  du programme en espace utilisateur associés aux files
              d’attente x, x+1, ... x+n et utiliser « --queue-balance x:x+n ». Les  paquets  appartenant  à  une
              même connexion sont placés dans la même file d’attente de netfilter (nfqueue). À cause de certains
              détails de l’implémentation, une valeur de borne inférieure de la plage égale à 0 limite la valeur
              de la borne supérieure à 65534, c’est-à-dire que le nombre de files d’attente entre lesquelles les
              paquets pourront être répartis est de 65535.

       --queue-bypass
              Par  défaut,  si  aucun  programme  de  l’espace utilisateur n’est associé à une file d’attente de
              netfilter, tous les paquets qui doivent être mis en file d’attente sont supprimés.  Lorsque  cette
              option  est  utilisée, la règle contenant l’action NFQUEUE se comportera comme la cible ACCEPT, et
              le paquet sera envoyé à la table suivante.

       --queue-cpu-fanout
              Cette option est disponible à partir de la version 3.10 du noyau Linux. Lorsqu’elle est  spécifiée
              conjointement  avec  l’option  --queue-balance,  elle utilise l’identifiant de processeur comme un
              index pour associer les paquets à une file d’attente. Elle est conçue sur l’idée selon laquelle on
              peut améliorer les performances s’il y a une file d’attente par processeur. Vous  devez  spécifier
              l’option --queue-balance pour pouvoir utiliser cette option.

   NOTRACK
       Cette  action permet de désactiver le traçage des connexions pour tous les paquets qui correspondent à la
       règle actuelle. Elle est équivalente à « -j CT --notrack ». Comme CT, NOTRACK ne peut être  utilisée  que
       dans la table raw.

   RATEEST
       Cette  action  collecte  des  statistiques, effectue des estimations de débit et sauvegarde les résultats
       pour une évaluation ultérieure à l’aide du module rateest.

       --rateest-name nom
              Cette option permet d’enregistrer le  décompte  des  paquets  qui  correspondent  dans  l’ensemble
              spécifié par nom, ce dernier pouvant être choisi arbitrairement.

       --rateest-interval quantité{s|ms|µs}
              Cette  option  permet  de spécifier un intervalle de mesure de débit en secondes, millisecondes ou
              microsecondes.

       --rateest-ewmalog valeur
              Cette option permet de spécifier avec quelle période doit être effectué le calcul de la moyenne de
              la mesure du débit.

   REDIRECT
       Cette action ne peut être utilisée que dans les chaînes PREROUTING et OUTPUT de la table nat, et dans les
       chaînes définies par l’utilisateur qui ne sont appelées que depuis ces chaînes. Elle redirige  le  paquet
       vers la machine elle-même en remplaçant l’adresse IP de destination par l’adresse primaire de l’interface
       d’entrée  (les paquets générés localement sont associés à l’adresse « localhost », 127.0.0.1 pour IPv4 et
       ::1 pour IPv6, et les paquets arrivant sur une interface qui  n’ont  pas  d’adresse  IP  configurée  sont
       supprimés).

       --to-ports port[-port]
              Cette  option  permet  de spécifier un port ou une plage de ports de destination à utiliser : sans
              cela, le port de destination ne sera jamais modifié. Elle ne peut être utilisée que  si  la  règle
              spécifie  aussi  un  des protocoles suivants : tcp, udp, dccp ou sctp. Pour un port unique, il est
              aussi possible de spécifier un nom de service parmi ceux listés dans /etc/services.

       --random
              Rendre aléatoire la redirection du port source (noyaux >= 2.6.22).

       IPv6 est pris en charge à partir de la version 3.7 des noyaux Linux.

   REJECT (spécifique à IPv6)
       Cette action permet de renvoyer un paquet d’erreur en réponse à un paquet qui correspondait à la règle  ;
       cela  mis  à  part, elle est équivalente à DROP ; il s’agit donc d’une action terminale qui interrompt le
       parcours des règles. Elle ne peut être utilisée que dans les chaînes INPUT, FORWARD et  OUTPUT,  et  dans
       les chaînes définies par l’utilisateur qui ne sont appelées que depuis ces chaînes. Les options suivantes
       permettent de contrôler la nature du paquet d’erreur renvoyé :

       --reject-with type
              Le  type  spécifié  peut  être  icmp6-no-route,  no-route,  icmp6-adm-prohibited,  adm-prohibited,
              icmp6-addr-unreachable, addr-unreach ou icmp6-port-unreachable qui  renvoie  le  message  d’erreur
              ICMPv6  approprié  (la valeur par défaut est icmp6-port-unreachable). L’option tcp-reset peut être
              utilisée dans les règles qui ne concernent que le protocole TCP : elle renvoie un paquet TCP  RST.
              Cette  option  s’avère  particulièrement  utile  pour  bloquer  les tentatives ident (113/tcp) qui
              surviennent fréquemment lors d’envois de courriels à des serveurs de  messagerie  défectueux  (qui
              autrement  n'accepteront  pas  votre  courrier).  tcp-reset  ne  peut  être utilisée que depuis la
              version 2.6.14 du noyau.

       Avertissement : vous ne devez pas appliquer sans discrimination l’action REJECT aux paquets  dont  l’état
       de connexion est considéré INVALID ; vous devez plutôt les supprimer à l’aide de la cible DROP.

       Imaginez  un  hôte  source  transmettant  un  paquet P, ce dernier subissant un retard de transmission si
       important que l’hôte source effectue  une  retransmission  sous  la  forme  du  paquet  P_2,  ce  dernier
       atteignant  sa  destination  avec  succès  et  faisant progresser l’état de connexion normalement. Il est
       concevable que le paquet P arrivant en retard soit considéré comme non associé à une entrée de traçage de
       connexion. Générer une réponse REJECT pour un tel paquet mettrait alors fin à la connexion saine.

       Donc, au lieu de :

       -A INPUT ... -j REJECT

       utilisez plutôt :

       -A INPUT ... -m conntrack --ctstate INVALID -j DROP
       -A INPUT ... -j REJECT

   REJECT (spécifique à IPv4)
       Cette action permet de renvoyer un paquet d’erreur en réponse à un paquet qui correspondait à la règle  ;
       cela  mis  à  part, elle est équivalente à DROP ; il s’agit donc d’une action terminale qui interrompt le
       parcours des règles. Elle ne peut être utilisée que dans les chaînes INPUT, FORWARD et  OUTPUT,  et  dans
       les chaînes définies par l’utilisateur qui ne sont appelées que depuis ces chaînes. Les options suivantes
       permettent de contrôler la nature du paquet d’erreur renvoyé :

       --reject-with type
              Le  type  spécifié  peut  être icmp-net-unreachable, icmp-host-unreachable, icmp-port-unreachable,
              icmp-proto-unreachable, icmp-net-prohibited, icmp-host-prohibited ou icmp-admin-prohibited (*) qui
              renvoie le message d’erreur ICMP approprié  (la  valeur  par  défaut  est  icmp-port-unreachable).
              L’option  tcp-reset  peut  être  utilisée dans les règles qui ne concernent que le protocole TCP :
              elle renvoie un paquet TCP RST. Cette option  s’avère  particulièrement  utile  pour  bloquer  les
              tentatives  ident  (113/tcp) qui surviennent fréquemment lors d’envois de courriels à des serveurs
              de messagerie défectueux (qui autrement n'accepteront pas votre courrier).

              (*) Utiliser icmp-admin-prohibited avec des noyaux qui ne le prennent  pas  en  charge  entraînera
              l’envoi vers la cible DROP au lieu de l’application de l’action REJECT.

       Avertissement  :  vous ne devez pas appliquer sans discrimination l’action REJECT aux paquets dont l’état
       de connexion est considéré INVALID ; vous devez plutôt les supprimer à l’aide de la cible DROP.

       Imaginez un hôte source transmettant un paquet P, ce dernier  subissant  un  retard  de  transmission  si
       important  que  l’hôte  source  effectue  une  retransmission  sous  la  forme  du paquet P_2, ce dernier
       atteignant sa destination avec succès et faisant progresser  l’état  de  connexion  normalement.  Il  est
       concevable que le paquet P arrivant en retard soit considéré comme non associé à une entrée de traçage de
       connexion. Générer une réponse REJECT pour un tel paquet mettrait alors fin à la connexion saine.

       Donc, au lieu de :

       -A INPUT ... -j REJECT

       utilisez plutôt :

       -A INPUT ... -m conntrack --ctstate INVALID -j DROP
       -A INPUT ... -j REJECT

   SECMARK
       Ce  module  permet  de  définir  la valeur de la marque de sécurité associée au paquet et destinée à être
       utilisée par les sous-systèmes de sécurité tels que SELinux. Il peut être utilisé dans la table  security
       (ainsi que dans la table mangle à des fins de rétrocompatibilité avec les noyaux plus anciens). La taille
       de la marque est de 32 bits.

       --selctx contexte_sécurité

   SET
       Ce  module permet d’ajouter et/ou supprimer des entrées dans les ensembles d’adresses IP définis à l’aide
       d’ipset(8).

       --add-set nom_ensemble drapeau[,drapeau...]
              Cette option permet d’ajouter la(les) adresse(s)/port(s) du paquet à l’ensemble spécifié.

       --del-set nom_ensemble drapeau[,drapeau...]
              Cette option permet de supprimer la(les) adresse(s)/port(s) du paquet de l’ensemble spécifié.

       --map-set nom_ensemble drapeau[,drapeau...]
              [--map-mark] [--map-prio] [--map-queue] mappent  les  propriétés  du  paquet  (marquage  pare-feu,
              priorité tc (traffic control — contrôle de trafic), file d'attente matériel)

              où les drapeau(x), dont le nombre est limité à 6, sont des spécifications src et/ou dst.

       --timeout valeur
              Lors  de  l’ajout  d’une  entrée, cette option permet de définir la valeur du délai d’expiration à
              utiliser à la place de la valeur par défaut définie pour l’ensemble.

       --exist
              Lors de l’ajout d’une entrée, si elle existe déjà, cette option permet de réinitialiser la  valeur
              du délai d’expiration à la valeur spécifiée ou, à défaut, à celle définie pour l’ensemble.

       --map-set nom_ensemble
              nom_ensemble doit être créé à l’aide de l’option --skbinfo. --map-mark mappe la marque de pare-feu
              avec  le  paquet  en  en  recherchant  la  valeur dans l’ensemble. --map-prio mappe la priorité du
              contrôle de trafic avec le paquet en en recherchant la valeur dans l’ensemble.  --map-queue  mappe
              la  file d’attente matériel de la NIC (Network Interface Card — carte réseau) en en recherchant la
              valeur dans l’ensemble.

              L’option --map-set ne peut être utilisée que dans la  table  mangle.  Les  options  --map-prio  et
              --map-queue peuvent être utilisées dans les chaînes OUTPUT, FORWARD et POSTROUTING.

       L’utilisation  de  «  -j SET » nécessite la prise en charge d’ipset par le noyau, ce qui est le cas, pour
       les noyaux standards, à partir de Linux 2.6.39.

   SNAT
       Cette action ne peut être utilisée que dans les chaînes POSTROUTING et INPUT de la table nat, et dans les
       chaînes définies par l’utilisateur qui ne  sont  appelées  que  depuis  ces  chaînes.  Elle  indique  que
       l’adresse  source du paquet (ainsi que celle de tous les paquets ultérieurs de cette connexion) doit être
       modifiée et que le parcours des règles doit cesser. Elle accepte les options suivantes :

       --to-source [adr_ip[-adr_ip]][:port[-port]]
              Cette option permet de spécifier une seule nouvelle adresse  IP  source  ou  une  plage  inclusive
              d’adresses  IP, et éventuellement une plage de ports, si la règle spécifie aussi un des protocoles
              suivants : tcp, udp, dccp ou sctp. Si aucune plage de ports n’est spécifiée, les ports  source  de
              numéro  inférieur  à 512 seront redirigés vers d’autres ports de numéro inférieur à 512, ceux dont
              les numéros sont compris entre 512 et 1023 inclus seront redirigés vers d’autres ports  de  numéro
              inférieur  à  1024 et les autres ports seront redirigés vers d’autres ports de numéro supérieur ou
              égal à 1024. Lorsque c’est possible, aucune modification de port n’est effectuée.

       --random
              Rendre aléatoire la redirection du port source grâce à un algorithme basé sur le  hachage  (noyaux
              de version >= 2.6.21).

       --random-fully
              Rendre  totalement  aléatoire  la  redirection du port source grâce à un PRNG (Pseudorandom Number
              Generator — générateur de nombres pseudo-aléatoires) ; disponible à partir de la version  3.14  du
              noyau.

       --persistent
              Attribuer à un client les mêmes adresses source et destination pour chaque connexion. Cette option
              l’emporte   sur  l’action  SAME.  La  redirection  persistante  est  prise  en  charge  depuis  la
              version 2.6.29-rc2.

       Les noyaux de version antérieure à 2.6.36-rc1 ne prennent pas en charge  l’action  SNAT  dans  la  chaîne
       INPUT.

       IPv6 est pris en charge depuis la version 3.7 du noyau Linux.

   SNPT (spécifique à IPv6)
       Cette  action  permet  d’effectuer  une  translation  NPTv6 (IPv6 à IPv6 Network Prefix Translation) sans
       conservation d’état (stateless) du préfixe réseau source (comme décrit dans la RFC 6296).

       Vous devez utiliser cette action dans la table mangle, pas dans la table nat. Elle  accepte  les  options
       suivantes :

       --src-pfx [préfixe/taille]
              Définir le préfixe source que vous voulez traduire, ainsi que sa taille.

       --dst-pfx [préfixe/taille]
              Définir  le  préfixe  de  destination  que  vous  voulez utiliser dans la traduction, ainsi que sa
              taille.

       Pour annuler la translation, vous devez utiliser l’action DNPT. Exemple :

              ip6tables -t mangle -I POSTROUTING  -s  fd00::/64  !  -o  vboxnet0  -j  SNPT  --src-pfx  fd00::/64
              --dst-pfx 2001:e20:2000:40f::/64

              ip6tables   -t  mangle  -I  PREROUTING  -i  wlan0  -d  2001:e20:2000:40f::/64  -j  DNPT  --src-pfx
              2001:e20:2000:40f::/64 --dst-pfx fd00::/64

       Vous devrez peut-être activer le mandataire d’hôtes voisins IPv6 :

              sysctl -w net.ipv6.conf.all.proxy_ndp=1

       Vous devez aussi utiliser l’action NOTRACK  pour  désactiver  le  traçage  de  connexion  pour  les  flux
       traduits.

   SYNPROXY
       Cette  action  permet  de  traiter  la  poignée  de  main TCP en trois temps (TCP three-way-handshake) en
       parallèle dans le contexte netfilter pour protéger le système de la machine locale  ou  du  dorsal.  Elle
       nécessite  le  traçage  de  connexion, car les numéros de séquence doivent être traduits. La capacité des
       noyaux à absorber les attaques SYNFLOOD ayant été considérablement améliorée avec la version  4.4,  cette
       action ne devrait plus être nécessaire pour protéger les serveurs Linux.

       --mss taille_maximale_segment
              Cette  option permet de définir la taille maximale de segment indiquée aux clients. Elle doit être
              identique à celle du dorsal.

       --wscale redimensionnement_fenêtre
              Facteur de multiplication de la fenêtre de réception indiqué aux clients. Il doit être identique à
              celui du dorsal.

       --sack-perm
              Transmission de l'option d'acquittement sélectif du client  au  dorsal  (sera  désactivée  si  non
              présente).

       --timestamps
              Transmission  de l'option d'horodatage du client au dorsal (sera désactivée si non présente, aussi
              nécessaire pour l’acquittement sélectif et le redimensionnement de fenêtre).

       Exemple :

       Déterminer les options tcp utilisées par le dorsal à partir d’un système externe.

              tcpdump -pni eth0 -c 1 'tcp[tcpflags] == (tcp-syn|tcp-ack)'
                  port 80 &
              telnet 192.0.2.42 80
              18:57:24.693307 IP 192.0.2.42.80 > 192.0.2.43.48757:
                  Flags [S.], seq 360414582, ack 788841994, win 14480,
                  options [mss 1460,sackOK,
                  TS val 1409056151 ecr 9690221,
                  nop,wscale 9],
                  length 0

       Mettre le mode tcp_loose à off de façon que le traçage de connexion marque les paquets  hors  flux  comme
       « INVALID ».

              echo 0 > /proc/sys/net/netfilter/nf_conntrack_tcp_loose

       Faire que les paquets SYN ne soient pas tracés.

              iptables -t raw -A PREROUTING -i eth0 -p tcp --dport 80
                  --syn -j CT --notrack

       Intercepter  les  états  « UNTRACKED » (paquets SYN) et « INVALID » (paquets ACK de la poignée de main en
       trois temps) et les soumettre à l’action  SYNPROXY.  Cette  règle  répondra  aux  paquets  SYN  avec  des
       syncookies  SYN+ACK,  créera une connexion ESTABLISHED pour une réponse client valable (paquets ACK de la
       poignée de main en trois temps) et supprimera  les  cookies  incorrects.  Les  combinaisons  de  drapeaux
       inattendues  (par  exemple  SYN+FIN,  SYN+ACK)  au  cours  de  la  poignée  de  main  en  trois  temps ne
       correspondront pas et le parcours des règles continuera.

              iptables -A INPUT -i eth0 -p tcp --dport 80
                  -m state --state UNTRACKED,INVALID -j SYNPROXY
                  --sack-perm --timestamp --mss 1460 --wscale 9

       Supprimer les paquets non valables, c’est-à-dire les paquets  hors  flux  qui  n’ont  pas  été  soumis  à
       l’action SYNPROXY.

              iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state INVALID -j DROP

   TCPMSS
       Cette action modifie la valeur de MSS (Maximum Segment Size — taille maximale de segment) des paquets TCP
       SYN  pour  contrôler  la  taille maximale pour cette connexion (en général en la limitant au MTU (Maximum
       Transmission Unit — unité de transmission maximale) de votre interface de sortie moins 40  pour  IPv4  ou
       moins 60 pour IPv6). Bien entendu, elle ne peut être utilisée que conjointement avec l’option -p tcp.

       Cette  action  permet  de contourner les FAI ou serveurs en état de mort cérébrale manifeste qui bloquent
       les paquets considérés comme « nécessitant une fragmentation ICMP  »  ou  comme  «  paquets  ICMPv6  trop
       gros  ».  Les  symptômes  de ce problème se manifestent par le fait que, bien que tout semble fonctionner
       correctement depuis votre pare-feu ou routeur Linux,  les  machines  situées  derrière  ces  derniers  ne
       peuvent jamais échanger de gros paquets :

       1.  Les navigateurs internet se connectent puis se bloquent sans réception de données.

       2.  Les petits courriels sont envoyés, mais les gros bloquent.

       3.  ssh fonctionne correctement, mais scp bloque après la poignée de main initiale.

       Solution : activer cette option et ajouter à la configuration de votre pare-feu une règle du style :

               iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN
                           -j TCPMSS --clamp-mss-to-pmtu

       --set-mss valeur
              Cette option permet de définir explicitement la MSS à la valeur spécifiée. Si la MSS du paquet est
              déjà  inférieure  à  valeur, elle ne sera pas augmentée (à partir de Linux 2.6.25) pour éviter des
              problèmes avec les hôtes qui fonctionnent avec une MSS particulière.

       --clamp-mss-to-pmtu
              Cette option permet de fixer automatiquement la valeur de MSS à « path_MTU - 40 » pour IPv4  et  à
              «  path_MTU  - 60 » pour IPv6 (NDT : le path_MTU est la plus petite unité de transmission maximale
              rencontrée sur le chemin réseau). Elle peut ne pas fonctionner comme souhaité lorsque  des  routes
              asymétriques  avec  des  path_MTU  différents  existent  —  le  noyau  utilise  le  path_MTU qu’il
              utiliserait pour  envoyer  des  paquets  depuis  lui-même  vers  les  adresses  IP  source  et  de
              destination. Avant Linux 2.6.25, seul le path_MTU vers l’adresse IP de destination était considéré
              par cette option ; les noyaux ultérieurs considèrent aussi le path_MTU vers l’adresse IP source.

       Ces options sont mutuellement exclusives.

   TCPOPTSTRIP
       Cette  action  permet  de  supprimer  les options TCP d’un paquet TCP (en fait, elle les remplace par des
       options vides — NO-OP). Pour qu’elle fonctionne, vous devez ajouter l’option -p tcp.

       --strip-options option[,option...]
              Cette option permet de supprimer les options spécifiées. Ces dernières peuvent être  spécifiées  à
              l’aide  de leur numéro d’option TCP ou de leur nom symbolique. La liste des options reconnues peut
              être obtenue en appelant iptables avec -j TCPOPTSTRIP -h.

   TEE
       Cette action permet de cloner un paquet et de rediriger ce clone vers une autre machine  sur  le  segment
       réseau  local.  En  d’autres  termes,  le  prochain saut doit être la cible, ou vous devrez configurer le
       prochain saut pour rediriger le clone plus loin si vous le souhaitez.

       --gateway adr_ip
              Cette option permet d’envoyer le paquet cloné  à  l’hôte  pouvant  être  atteint  à  l’adresse  IP
              spécifiée.  Utiliser  0.0.0.0  (pour  les  paquets  IPv4)  ou :: (pour les paquets IPv6) n’est pas
              valable.

       Pour rediriger tout le trafic entrant sur eth0 vers une machine de journalisation de la couche réseau :

       -t mangle -A PREROUTING -i eth0 -j TEE --gateway 2001:db8::1

   TOS
       Cette action permet de définir le champ « Type of Service » de l’en-tête IPv4  (y  compris  les  bits  de
       priorité)  ou  le  champ « Priority » de l’en-tête IPv6. Notez que TOS partage les mêmes bits que DSCP et
       ECN. L’action TOS ne peut être utilisée que dans la table mangle.

       --set-tos valeur[/masque]
              Mettre à zéro les bits spécifiés par masque (voir NOTE ci-après) et combiner valeur  et  le  champ
              TOS/Priority avec un XOR. Si masque est omis, sa valeur par défaut est 0xFF.

       --set-tos symbole
              Vous  pouvez utiliser un nom symbolique lors de l’utilisation de l’action TOS pour IPv4. Un masque
              de 0xFF sera alors implicite (voir NOTE ci-après). La liste des noms de  TOS  valables  peut  être
              obtenue en appelant iptables avec « -j TOS -h ».

       Les mnémoniques suivants sont disponibles :

       --and-tos bits
              Combiner   la   valeur   de   TOS   et   bits   à   l’aide   d’un   ET  logique  (mnémonique  pour
              « --set-tos 0/invbits » où invbits est la négation binaire de bits, voir NOTE ci-après).

       --or-tos bits
              Combiner  la  valeur  de   TOS   et   bits   à   l’aide   d’un   OU   logique   (mnémonique   pour
              « --set-tos bits/bits », voir NOTE ci-après).

       --xor-tos bits
              Combiner  la  valeur  de TOS et bits à l’aide d’un XOR (mnémonique pour « --set-tos bits/0 », voir
              NOTE ci-après).

       NOTE : avec les noyaux jusqu’à la version 2.6.38, à l’exception des versions à long terme 2.6.32 (>=.42),
       2.6.33 (>=.15) et 2.6.35 (>=.14), un bogue fait que la manipulation du champ  TOS  en  IPv6  se  comporte
       différemment  de  ce  qui est documenté et diffère de la version IPv4. Le masque TOS indique les bits que
       l’on veut mettre à zéro ; il doit donc être  inversé  avant  d’être  appliqué  au  champ  TOS  d’origine.
       Cependant,  les  noyaux  mentionnés  ci-avant  n’effectuent  pas  cette  inversion,  ce  qui  entraîne un
       fonctionnement défectueux de l’option --set-tos et de ses mnémoniques.

   TPROXY
       Cette action ne peut être utilisée que dans la table mangle, dans la chaîne  PREROUTING  et  les  chaînes
       définies  par l’utilisateur qui ne sont appelées que depuis cette chaîne. Elle redirige le paquet vers un
       socket local sans modifier l’en-tête de paquet de quelque façon que ce soit. Elle peut aussi modifier  la
       valeur de marquage qui pourra alors être utilisée dans des règles de routage avancées. Elle accepte trois
       options :

       --on-port port
              Cette  option  permet  de  spécifier  le  port  de  destination  à utiliser. Elle est obligatoire,
              0 signifiant que le nouveau port de destination est le même que  le  port  d’origine.  Elle  n’est
              valable que si la règle spécifie aussi -p tcp ou -p udp.

       --on-ip adresse
              Cette  option  permet  de  spécifier l’adresse de destination à utiliser. Par défaut, il s’agit de
              l’adresse de l’interface entrante. Elle n’est valable que si la règle spécifie aussi -p tcp ou  -p
              udp.

       --tproxy-mark valeur[/masque]
              Cette  option permet de marquer les paquets avec la paire valeur/masque spécifiée. La valeur de la
              marque de pare-feu (fwmark) définie ici peut être utilisée pour le routage  avancé  (cette  option
              est  nécessaire pour utiliser un mandataire transparent (transparent proxying) : si elle n’est pas
              présente, ces paquets  seront  redirigés,  ce  qui  ne  correspond  probablement  pas  à  ce  vous
              souhaitez).

   TRACE
       Cette  action marque les paquets de façon que le noyau journalise chaque règle qui correspond aux paquets
       lorsque ces derniers traversent les tables, chaînes ou règles. Elle ne peut être  utilisée  que  dans  la
       table raw.

       Avec iptables-legacy, un dorsal de journalisation comme ip(6)t_LOG ou nfnetlink_log doit être chargé pour
       que    cela    soit    visible.    Les    paquets   sont   journalisés   avec   le   préfixe   «   TRACE:
       nom_table:nom_chaîne:type:numéro_règle » où type peut avoir pour valeur « rule » pour une  règle  à  part
       entière,  «  return  »  pour  une  règle  implicite  à  la  fin d’une chaîne définie par l’utilisateur ou
       « policy » pour la politique des chaînes intégrées.

       Avec iptables-nft, l’action est traduite en une expression meta  nftrace  de  nftables.  Ainsi  le  noyau
       envoie  les  évènements  de  traçage  à  l’aide  de netlink vers l’espace utilisateur où ils peuvent être
       affichés en  utilisant  la  commande  xtables-monitor  --trace.  Pour  les  détails,  veuillez  consulter
       xtables-monitor(8).

   TTL (spécifique à IPv4)
       Cette  action  permet  de modifier le champ d’en-tête IPv4 TTL. Le champ TTL détermine le nombre de sauts
       (routeurs) qu’un paquet peut traverser avant que sa durée de vie soit dépassée.

       Définir ou augmenter la valeur du champ TTL peut s’avérer très dangereux et il  faut  donc  à  tout  prix
       éviter de le faire. Cette action ne peut être utilisée que dans la table mangle.

       Ne définissez ou incrémentez jamais cette valeur pour les paquets qui quittent votre réseau local !

       --ttl-set valeur
              Cette option permet de définir la valeur du champ TTL à valeur.

       --ttl-dec n
              Cette option permet de décrémenter la valeur du champ TTL n fois.

       --ttl-inc n
              Cette option permet d’incrémenter la valeur du champ TTL n fois.

   ULOG (spécifique à IPv4)
       Cette action est le prédécesseur obsolète spécifique à IPv4 de l’action NFLOG. Elle permet de journaliser
       les paquets qui correspondent dans l’espace utilisateur. Lorsque cette action est définie pour une règle,
       le  noyau  Linux  multidiffuse  les  paquets  à  l’aide d’un socket netlink. Un ou plusieurs processus de
       l’espace utilisateur peuvent alors s’abonner à différents  groupes  de  multidiffusion  et  recevoir  les
       paquets.  Comme LOG, c’est une action « non terminale », c’est-à-dire que le parcours des règles continue
       à la règle suivante.

       --ulog-nlgroup groupe_netlink
              Cette option permet de spécifier le groupe netlink (1-32) auquel est envoyé le paquet.  La  valeur
              par défaut est 1.

       --ulog-prefix préfixe
              Cette  option  permet  de  spécifier  le  préfixe à ajouter aux messages de journalisation ; d’une
              taille maximale de 32 caractères, il permet de distinguer les messages dans les journaux.

       --ulog-cprange n
              Cette option permet de spécifier le nombre d’octets à copier vers l’espace utilisateur. Une valeur
              de 0 (la valeur par défaut) signifie que le paquet doit être copié dans  sa  totalité  sans  tenir
              compte de sa taille.

       --ulog-qthreshold n
              Cette  option  permet  de spécifier le nombre de paquets à mettre en file d’attente dans le noyau.
              Définir cette valeur à 10, par exemple, stocke dix  paquets  dans  le  noyau  et  les  transmet  à
              l’espace  utilisateur  en  un seul message netlink en plusieurs parties (multipart). La valeur par
              défaut est 1 (à des fins de rétrocompatibilité).

TRADUCTION

       La traduction française de cette page de manuel  a  été  créée  par  Lucien  Gentis  <lucien.gentis@univ-
       lorraine.fr>

       Cette  traduction  est  une  documentation libre ; veuillez vous reporter à la GNU General Public License
       version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

       Si vous découvrez un bogue dans la traduction de cette page de manuel,  veuillez  envoyer  un  message  à
       debian-l10n-french@lists.debian.org.

iptables 1.8.11                                                                           iptables-extensions(8)