iptables

IPTABLES(8)                                                          IPTABLES(8)



NOM
       iptables - Outil d'administration pour le filtrage de paquets IPv4 et le
       NAT

RÉSUMÉ
       iptables [-t table] -[AD] chaîne règle [options]
       iptables [-t table] -I chaîne [numéro-de-règle] règle [options]
       iptables [-t table] -R chaîne numéro-de-règle règle [options]
       iptables [-t table] -D chaîne numéro-de-règle [options]
       iptables [-t table] -[LFZ] [chaîne] [options]
       iptables [-t table] -N chaîne
       iptables [-t table] -X [chaîne]
       iptables [-t table] -P chaîne cible [options]
       iptables [-t table] -E ancien-nom-de-chaîne nouveau-nom-de-chaîne

DESCRIPTION
       iptables est utilisé pour mettre en place, maintenir et inspecter les
       tables des règles de filtrage des paquets IP du noyau Linux. Différentes
       tables peuvent être définies. Chaque table contient plusieurs chaînes
       prédéfinies et peut aussi contenir des chaînes définies par
       l'utilisateur.

       Chaque chaîne est une liste de règles que peuvent vérifier un ensemble de
       paquets ; dans ce cas, on dit qu'on cherche à établir une correspondance
       avec la règle. Chaque règle détermine ce qui doit être fait avec un
       paquet qui correspond. Cette action est appellée une «cible», qui peut
       être un saut vers une chaîne définie par l'utilisateur dans la même
       table.


CIBLES
       Une règle de pare-feu spécifie des critères de correspondance pour un
       paquet, et une cible. Si le paquet ne correspond pas, la règle suivante
       de la chaîne est examinée ; s'il correspond, la règle suivante est
       déterminée par la valeur de la cible, qui peut être le nom d'une chaîne
       définie par l'utilisateur ou l'une des valeurs spéciales suivantes :
       ACCEPT, DROP, QUEUE ou RETURN.

       ACCEPT signifie que le paquet est autorisé à passer.  DROP signifie que
       le paquet est détruit.  QUEUE signifie que le paquet est transmis à
       l'espace utilisateur (si cette option est reconnue par le noyau).  RETURN
       signifie que l'on cesse de parcourir cette chaîne pour retourner dans la
       chaîne précédente (appelante) en passant à la règle suivante.  Si on
       atteint la fin d'une chaîne prédéfinie ou s'il y a correspondance avec
       une règle dans une chaîne prédéfinie ayant pour cible RETURN, la cible
       désignée par le comportement par défaut de la chaîne détermine le sort du
       paquet.

TABLES
       Il y a actuellement trois tables indépendantes (le moment où sont
       présentes les tables dépend des options de configuration du noyau et des
       modules chargés).

       -t, --table table
              Cette option désigne la table de correspondance des paquets sur
              laquelle la commande doit opérer. Si le noyau est configuré avec
              le chargement automatique des modules, une tentative sera faite
              pour charger le module approprié pour cette table, si ce n'est pas
              déjà fait.

              Les tables sont les suivantes :

              filter :
                  C'est la table par défaut (si l'option -t est omise). Elle
                  contient les chaînes prédéfinies INPUT (pour les paquets
                  entrants dans la machine), FORWARD (pour les paquets routés à
                  travers la machine) et OUTPUT (pour les paquets générés
                  localement).

              nat :
                  Cette table est consultée lorsqu'on rencontre un paquet qui
                  crée une nouvelle connexion. La table est composée de trois
                  chaînes prédéfinies : PREROUTING (pour modifier les paquets
                  dès qu'ils entrent), OUTPUT (pour modifier les paquets générés
                  localement, avant le routage) et POSTROUTING (pour modifier
                  les paquets lorsqu'ils sont sur le point de sortir).

              mangle :
                  Cette table est employée pour effectuer une modification
                  spéciale des paquets.  Jusqu'au noyau 2.4.17, elle offrait
                  deux chaînes prédéfinies : PREROUTING (pour modifier les
                  paquets entrants, avant le routage) et OUTPUT (pour modifier
                  les paquets générés localement, avant le routage).  Depuis le
                  noyau 2.4.18, trois autres chaînes prédéfinies sont aussi
                  prises en charge : INPUT (pour les paquets entrants, destinés
                  à la machine elle-même), FORWARD (pour modifier les paquets
                  routés à travers la machine) et POSTROUTING (pour modifier les
                  paquets lorsqu'ils sont sur le point de sortir).

OPTIONS
       Les options reconnues par iptables peuvent être réparties en plusieurs
       groupes.

   COMMANDES
       Ces options précisent une action particulière à accomplir. Une seule
       option peut être indiquée sur la ligne de commande, sauf indication
       contraire. Pour tous les noms en version longue des commandes et des
       options, vous avez le droit d'utiliser un nombre restreint de lettres du
       moment qu' iptables peut identifier chaque commande sans ambiguïté.

       -A, --append chaîne règle
              Ajoute une ou plusieurs règles à la fin de la chaîne sélectionnée.
              Lorsque les noms source et/ou destination désignent plus d'une
              adresse, une règle sera ajoutée pour chaque combinaison d'adresses
              possible.

       -D, --delete chaîne règle
       -D, --delete chaîne numéro-de-règle
              Efface une ou plusieurs règles de la chaîne sélectionnée. Il y a
              deux versions de cette commande : on peut désigner la règle par sa
              position dans la chaîne avec un numéro (commençant à 1 pour la
              première règle) ou bien par une règle de correspondance avec sa
              syntaxe exacte.

       -I, --insert chaîne [numéro-de-règle] règle
              Insère une ou plusieurs règles dans la chaîne sélectionnée à la
              position donnée par le numéro de règle. Si ce numéro est 1, la ou
              les règles sont insérées au début de la chaîne. C'est le
              comportement par défaut si aucun numéro n'est spécifié.

       -R, --replace chaîne numéro-de-règle règle
              Remplace une règle dans la chaîne sélectionnée. Si les noms source
              et/ou destination désignent de multiples adresses, la commande
              échouera. Les règles sont numérotées en partant de 1.

       -L, --list [chaîne]
              Liste toutes les règles de la chaîne sélectionnée. Si aucune
              chaîne n'est sélectionnée, toutes les chaînes sont listées. Comme
              toute commande, elle s'applique à la table spécifiée (filter par
              défaut), ainsi les règles de NAT sont listées avec
               iptables -t nat -n -L
              Notez qu'on l'utilise souvent avec l'option -n, pour éviter de
              longues résolutions DNS inverses.  Il est autorisé de spécifier
              simultanément l'option -Z (zéro), auquel cas la ou les chaînes
              seront automatiquement listées et les compteurs remis à zéro. La
              sortie exacte dépend des autres arguments fournis. Les règles
              complètes sont omises sauf si vous exécutez
               iptables -L -v

       -F, --flush [chaîne]
              Vide la chaîne sélectionnée (ou toutes les chaînes de la table si
              aucune n'est précisée). Ceci équivaut à effacer toutes les règles
              une par une.

       -Z, --zero [chaîne]
              Met à zéro le compteur de paquets et d'octets dans toutes les
              chaînes.  Il est autorisé d'associer l'option -L, --list (liste),
              pour visualiser les compteurs juste avant qu'ils ne soient
              initialisés (voir ci-dessus).

       -N, --new-chain chaîne
              Crée une nouvelle chaîne définie par l'utilisateur avec le nom
              indiqué.  Il ne doit pas déjà exister de cible de même nom.

       -X, --delete-chain [chaîne]
              Efface la chaîne désignée définie par l'utilisateur. Il ne doit
              plus exister de référence à cette chaîne. S'il en reste, vous
              devez effacer ou remplacer les règles concernées avant de pouvoir
              effacer cette chaîne. Si aucun argument n'est fourni, une
              tentative aura lieu pour effacer dans la table toutes les chaînes
              non prédéfinies.

       -P, --policy chaîne cible
              Configure le comportement par défaut (la stratégie) de la chaîne
              avec la cible fournie. Voir la section CIBLES pour connaître les
              cibles autorisées. Seules les chaînes prédéfinies (donc non
              définies par l'utilisateur) peuvent avoir un comportement par
              défaut, et ni les chaînes prédéfinies ni les chaînes définies par
              l'utilisateur ne peuvent être des cibles stratégiques.

       -E, --rename-chain ancien-nom-de-chaîne nouveau-nom-de-chaîne
              Renomme la chaîne définie par l'utilisateur spécifiée avec le nom
              fourni. C'est un changement cosmétique qui n'a aucun effet sur la
              structure de la table.

       -h     Aide.  Donne une description (pour l'instant succincte) de la
              syntaxe d'une commande.

   PARAMÈTRES
       Les paramètres suivants composent une spécification de règle (quand ils
       sont utilisés dans les commandes add, delete, insert, replace et append).

       -p, --protocol [!] protocole
              Protocole de la règle ou du paquet à vérifier. Le protocole
              spécifié est l'un des suivants : tcp, udp, icmp ou all, ou bien
              sous forme d'une valeur numérique, représentant un de ces
              protocoles ou un protocole différent. Un nom de protocole issu du
              fichier /etc/protocols est aussi autorisé. Un «!» avant le
              protocole inverse le test. La valeur zéro est équivalente à all.
              Le protocole all correspond à tous les protocoles ; c'est aussi la
              valeur par défaut lorsque cette option est omise.

       -s, --source [!] adresse[/masque]
              Spécification de la source. L'adresse peut être un nom de réseau,
              un nom d'hôte (attention : spécifier un nom à résoudre avec une
              requête distante de type DNS est vraiment une mauvaise idée), une
              adresse de réseau IP (avec /masque) ou une simple adresse IP.  Le
              masque peut être un masque de réseau ou un nombre entier
              spécifiant le nombre de bits égaux à 1 dans la partie gauche du
              masque de réseau (bits de poids fort). Par conséquent, un masque
              de 24 est équivalent à 255.255.255.0.  Un «!» avant la
              spécification d'adresse inverse la sélection d'adresse.  L'option
              --src est un synonyme de --source.

       -d, --destination [!] adresse[/masque]
              Spécification de la destination. Voir la description du paramètre
              -s (source) pour une description détaillée de la syntaxe. L'option
              --dst est un synonyme de --destination.

       -j, --jump cible
              Ceci détermine la cible de la règle ; c'est-à-dire ce qu'il faut
              faire si le paquet correspond à la règle. La cible peut être une
              chaîne définie par l'utilisateur (autre que celle dans laquelle se
              situe cette règle), une des cibles prédéfinies qui décide
              immédiatement du sort du paquet, ou une extension (voir EXTENSIONS
              ci-dessous). Si cette option est omise dans une règle, la
              correspondance d'un paquet avec la règle n'aura aucun effet sur le
              sort du paquet, mais les compteurs seront incrémentés.

       -i, --in-interface [!] [nom]
              Nom de l'interface qui reçoit les paquets (seulement pour les
              paquets passant par les chaînes INPUT, FORWARD et PREROUTING).
              Lorsqu'un «!» est utilisé avant le nom d'interface, la sélection
              est inversée. Si le nom de l'interface se termine par un «+», il
              désigne toutes les interfaces commençant par ce nom. Si cette
              option est omise, toutes les interfaces réseau sont désignées.

       -o, --out-interface [!] [nom]
              Nom de l'interface qui envoie les paquets (seulement pour les
              paquets passant par les chaînes FORWARD, OUTPUT et POSTROUTING).
              Lorsqu'un «!» est utilisé avant le nom d'interface, la sélection
              est inversée. Si le nom de l'interface se termine par un «+», il
              désigne toutes les interfaces commençant par ce nom. Si cette
              option est omise, toutes les interface réseau sont désignées.

       [!]  -f, --fragment
              Avec cette option, la règle s'applique seulement aux paquets
              fragmentés, mais seulement à partir du deuxième fragment. Comme il
              est impossible d'en déterminer les ports source ou destination (ou
              le type ICMP), aucune règle ne pourra établir de correspondance
              sur ces critères.  Lorsqu'un «!» précède l'option «-f», la règle
              ne s'applique qu'aux fragments d'en-tête ou aux paquets non
              fragmentés.

       -c, --set-counters paquets octets
              Ceci autorise l'administrateur à initialiser les compteurs de
              paquets et d'octets d'une règle (lors des opérations INSERT,
              APPEND, REPLACE).

   AUTRES OPTIONS
       Les options supplémentaires suivantes peuvent être employées :

       -v, --verbose
              Sortie verbeuse. Cette option indique à la commande --list
              d'afficher le nom de l'interface, les options de la règle (s'il y
              en a) et les masques de TOS (type de service). Les compteurs de
              paquets et d'octets sont aussi affichés, avec les suffixes 'K',
              'M' ou 'G' qui multiplient respectivement par 1 000, 1 000 000 et
              1 000 000 000 (mais vous pouvez affiner ça avec l'option -x).
              Pour les ajouts, insertions, effacements et remplacements, sont
              fournies des informations détaillées sur la ou les règles à
              afficher.

       -n, --numeric
              Sortie numérique. Les adresses IP et les numéros de ports sont
              affichés au format numérique. Par défaut, le programme essaie de
              les afficher sous forme de noms d'hôtes, de noms réseaux ou de
              services (lorsque c'est applicable).

       -x, --exact
              Nombres étendus. Affiche la valeur exacte des compteurs de paquets
              et d'octets, au lieu d'afficher un nombre arrondi avec K (multiple
              de 1 000), M (multiple de 1 000K) ou G (multiple de 1 000M). Cette
              option n'est utile qu'avec la commande -L.

       --line-numbers
              Lorsque les règles sont listées, ceci ajoute un numéro de ligne au
              début de chaque règle, équivalant à la position de cette règle
              dans la chaîne.

       --modprobe=commande
              Lorsqu'on ajoute ou insère des règles dans une chaîne, utilisez la
              commande pour charger les modules nécessaires (cibles, extensions
              de correspondance, etc).

EXTENSIONS DE CORRESPONDANCE
       iptables peut utiliser des modules additionnels de correspondance de
       paquets. Ceux-ci peuvent être chargés de deux manières : implicitement,
       lorsque -p ou --protocol est employé, ou avec l'option -m ou --match,
       suivie du nom du module de correspondance ; après cela, des options
       supplémentaires en ligne de commande deviennent disponibles, en fonction
       du module. Vous pouvez spécifier plusieurs modules de correspondance sur
       une même ligne, et utiliser l'option -h ou --help après avoir spécifié le
       module, pour visualiser l'aide relative à ce module.

       Ce qui suit est inclus dans le paquetage de base et la plupart des
       options peuvent être précédées par un !  pour inverser la sélection.

   ah
       Ce module cherche une correspondance avec les indices SPI présents dans
       l'en-tête AH des paquets IPSec.

       --ahspi [!] spi[:spi]

   conntrack
       Ce module, lorsqu'il est combiné avec du traçage de connexion, permet
       d'accéder à davantage d'informations sur le traçage de connexion que la
       correspondance «state» (ce module n'est disponible que si iptables a été
       compilé avec un noyau acceptant cette particularité).

       --ctstate état-de-connexion
              Le paramètre est une liste d'états de connexion (séparés par des
              virgules) à vérifier. Les états possibles sont INVALID signifiant
              que le paquet n'est associé à aucune connexion connue, ESTABLISHED
              signifiant que le paquet est associé à une connexion qui a déjà vu
              passer des paquets dans les deux sens, NEW signifiant soit que le
              paquet a initié une nouvelle connexion, soit qu'il est associé à
              une connexion qui n'a pas vu passer de paquets dans les deux sens,
              et RELATED signifiant que le paquet initie une nouvelle connexion,
              mais qu'il est associé avec une connexion existante, comme un
              transfert de données FTP ou une erreur ICMP.  SNAT Un état
              virtuel, vérifié si l'adresse de source initiale diffère de
              l'adresse de destination de la réponse.  DNAT Un état virtuel,
              vérifié si l'adresse de destination initiale diffère de l'adresse
              de source de la réponse.

       --ctproto protocole
              Le protocole à vérifier (donné par le numéro ou le nom).

       --ctorigsrc [!] adresse[/masque]
              Correspondance avec l'adresse de source initiale.

       --ctorigdst [!] adresse[/masque]
              Correspondance avec l'adresse de destination initiale.

       --ctreplsrc [!] adresse[/masque]
              Correspondance avec l'adresse de source de la réponse.

       --ctrepldst [!] adresse[/masque]
              Correspondance avec l'adresse de destination de la réponse.

       --ctstatus [NONE|EXPECTED|SEEN_REPLY|ASSURED][,...]
              Correspondance avec les états internes du module conntrack.

       --ctexpire temps[:temps]
              Correspondance avec la durée de validité restante (en secondes)
              donnée sous forme d'une valeur fixe ou d'un intervalle (bornes
              incluses).

   dscp
       Ce module cherche une correspondance avec le champ DSCP de 6 bits dans le
       champ TOS de l'en-tête IP. DSCP a remplacé le TOS au sein de l'IETF.

       --dscp valeur
              Correspondance avec une valeur numérique [0-32] (sous forme
              décimale ou hexa).

       --dscp-class Classe DiffServ
              Correspondance avec la classe DiffServ. Cette donnée peut être une
              des classes BE, EF, AFxx ou CSx. Elle pourra aussi être convertie
              en sa valeur numérique équivalente.

   esp
       Ce module cherche une correspondance avec les indices SPI présents dans
       l'en-tête ESP des paquets IPSec.

       --espspi [!] spi[:spi]

   helper
       Ce module cherche une correspondance avec les paquets en relation avec un
       module spécifique d'aide au traçage de connexion (module conntrack-
       helper).

       --helper chaîne
              Correspondance avec les paquets en relation avec le module d'aide
              au traçage de connexion désigné.

              La chaîne peut être «ftp» pour les paquets liés à une session FTP
              sur le port par défaut. Pour d'autres ports, ajoutez -numérodeport
              à la chaîne, par exemple «ftp-2121».

              Les mêmes règles s'appliquent aux autres modules d'aide au traçage
              de connexion.

   icmp
       Cette extension est chargée si «--protocol icmp» est spécifié. Elle
       procure l'option suivante :

       --icmp-type [!] nom_du_type_icmp
              Ceci autorise la spécification d'un type ICMP, soit avec un type
              ICMP numérique, soit avec l'un des noms de type ICMP fourni par la
              commande
               iptables -p icmp -h

   length
       Ce module cherche une correspondance avec la longueur d'un paquet, donnée
       par une valeur fixe ou un intervalle.

       --length longueur[:longueur]

   limit
       Ce module établit une correspondance avec les paquets en respectant un
       débit limité, à l'aide d'un filtre à seau de jetons («token bucket
       filter»). Une règle utilisant cette extension établira une correspondance
       jusqu'à ce que cette limite soit atteinte (sauf si le «!» est employé).
       Il peut être utilisé conjointement avec la cible LOG, par exemple afin de
       limiter les messages de journalisation (log).

       --limit taux
              Taux de correspondance moyen maximum : déterminé par un nombre,
              avec un suffixe optionnel  «/second»,  «/minute»,  «/hour», ou
              «/day» ; la valeur par défaut est 3/hour.

       --limit-burst nombre
              Nombre initial maximum de paquets pouvant correspondre : ce nombre
              est rechargé de 1 chaque fois que la limite définie précédemment
              n'est pas atteinte, jusqu'à retrouver la valeur initiale ; la
              valeur par défaut est 5.

   mac
       --mac-source [!] adresse
              Établit une correspondance avec l'adresse MAC source. Elle doit
              être de la forme XX:XX:XX:XX:XX:XX. Notez que ceci n'a de sens que
              pour les paquets en provenance d'une interface Ethernet et passant
              par les chaînes PREROUTING, FORWARD ou INPUT.

   mark
       Ce module cherche une correspondance avec le champ de marquage de
       Netfilter associé à un paquet (celui-ci peut être positionné en utilisant
       la cible MARK décrite ci-dessous).

       --mark valeur[/masque]
              Établit une correspondance avec les paquets associés à la valeur
              de marquage non-signée fournie (si un masque est spécifié, on
              effectue un ET logique avec le masque avant la comparaison).

   multiport
       Ce module cherche les correspondances avec un ensemble de ports source ou
       destination. On peut spécifier jusqu'à 15 ports. Il ne peut être utilisé
       qu'en conjonction avec -p tcp ou -p udp.

       --source-ports port[,port[,port...]]
              Établit la correspondance si le port source est l'un des ports
              spécifiés. Et --sports est un synonyme commode pour cette option.

       --destination-ports port[,port[,port...]]
              Établit la correspondance si le port destination est l'un des
              ports spécifiés. Et --dports est un synonyme commode pour cette
              option.

       --ports port[,port[,port...]]
              Établit la correspondance si les ports source et destination sont
              identiques, et égaux à l'un des ports spécifiés.

   owner
       Ce module tente d'établir une correspondance avec différentes
       caractéristiques du créateur d'un paquet, pour les paquets générés
       localement. Il est valide uniquement dans la chaîne OUTPUT, et même si
       certains paquets sans propriétaire (comme les réponses ICMP d'un ping) ne
       correspondront jamais.

       --uid-owner id_utilisateur
              Établit une correspondance si le paquet a été créé par un
              processus avec l'identifiant d'utilisateur donné.

       --gid-owner id_de_groupe
              Établit une correspondance si le paquet a été créé par un
              processus avec l'identifiant de groupe donné.

       --pid-owner id_du_processus
              Établit une correspondance si le paquet a été créé par un
              processus avec le numéro de processus donné.

       --sid-owner id_de_session
              Établit une correspondance si le paquet a été créé par un
              processus dans le groupe de session donné.

       --cmd-owner nom_de_commande
              Établit une correspondance si le paquet a été créé par un
              processus avec le nom de commande donné (cette option n'est
              disponible que si iptables a été compilé avec un noyau acceptant
              cette particularité).

   physdev
       Ce module cherche une correspondance sur un port de pont avec les
       dispositifs d'entrée/sortie attachés à ce pont. Ce module fait partie de
       l'infrastructure qui permet d'avoir un pare-feu IP transparent sur un
       pont et n'est utile que pour les versions de noyaux supérieures à 2.5.44.

       --physdev-in nom_de_port
              Nom d'un port de pont par lequel un paquet est reçu (seulement
              pour les paquets entrant dans les chaînes INPUT, FORWARD et
              PREROUTING).  Si le nom de l'interface se termine par un «+», il
              désigne toutes les interfaces commençant par ce nom. Si le paquet
              ne provient pas d'un pont, ce paquet ne correspondra pas avec
              cette option, sauf si un «!» est employé.

       --physdev-out nom_de_port
              Nom d'un port de pont par lequel un paquet est prêt à être envoyé
              (seulement pour les paquets entrant dans les chaînes FORWARD,
              OUTPUT et POSTROUTING).  Si le nom de l'interface se termine par
              un «+», il désigne toutes les interfaces commençant par ce nom.
              Notez que dans les chaînes OUTPUT des tables nat et mangle, aucune
              règle ne peut correspondre sur un port de sortie de pont, mais que
              c'est possible dans la chaîne OUTPUT de la table filter.  Si un
              paquet ne sort pas par un pont ou si l'on ne sait pas encore quel
              est le dispositif de sortie, le paquet ne correspondra pas avec
              cette option, sauf si un «!» est employé.

       --physdev-is-in
              Établit une correspondance si le paquet est entré par une
              interface de pont.

       --physdev-is-out
              Établit une correspondance si le paquet sort par une interface de
              pont.

       --physdev-is-bridged
              Établit une correspondance si le paquet est prêt à traverser un
              pont et ne sera donc pas routé. Ce n'est utile que pour les
              chaînes FORWARD et POSTROUTING.

   pkttype
       Ce module cherche une correspondance avec le type du paquet de la couche
       liaison de données.

       --pkt-type [unicast|broadcast|multicast]

   state
       Ce module, lorsqu'il est associé avec du traçage de connexion, permet
       d'accéder à l'état du traçage de connexion pour ce paquet.

       --state état-de-connexion
              Le paramètre est une liste d'états de connexion (séparés par des
              virgules) avec lesquels on cherche une correspondance. Les états
              possibles sont INVALID signifiant que le paquet ne peut être
              identifié pour une raison quelconque comme une exécution avec
              mémoire insuffisante et des erreurs ICMP ne correspondant à aucune
              connexion connue, ESTABLISHED signifiant que le paquet est associé
              à une connexion qui a vu passer des paquets dans les deux sens,
              NEW signifiant que le paquet a initié une nouvelle connexion, ou
              bien qu'il est associé à une connexion qui n'a pas vu passer de
              paquets dans les deux sens, et RELATED signifiant que le paquet
              initie une nouvelle connexion, mais qu'il est associé à une
              connexion existante, comme un transfert de données FTP ou une
              erreur ICMP.

   tcp
       Ces extensions sont chargées si l'option «--protocol tcp» est spécifiée.
       Elle procure les options suivantes :

       --source-port [!] port[:port]
              Spécification d'un port source ou d'un intervalle de ports. Ce
              peut être le nom d'un service ou le numéro d'un port. Un
              intervalle (bornes incluses) peut aussi être défini en utilisant
              le format suivant port:port.  Si le premier port est omis, on
              considère que c'est «0» ; si le dernier port est omis, on
              considère que c'est «65535». Si le second port est plus petit que
              le premier, ils seront intervertis. Et --sport est un synonyme
              commode pour cette option.

       --destination-port [!] port[:port]
              Spécification d'un port destination ou d'un intervalle de ports.
              Et --dport est un synonyme commode pour cette option.

       --tcp-flags [!] masque comp
              Établit une correspondance lorsque les fanions TCP («TCP flags»)
              coïncident avec ceux spécifiés. Le premier argument identifie les
              fanions à examiner (sous la forme d'un liste de fanions séparés
              par des virgules) et le deuxième argument identifie les fanions
              devant être positionnés (toujours sous la forme d'une liste de
              fanions séparés par des virgules). Les fanions sont : SYN ACK FIN
              RST URG PSH ALL NONE.  Par conséquent, la commande
               iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST SYN
              ne sélectionnera que les paquets ayant le fanion SYN positionné
              mais également les fanions ACK, FIN et RST désactivés.

       [!] --syn
              Établit une correspondance seulement avec les paquets TCP dont le
              bit SYN est positionné et les bits ACK et RST sont désactivés. De
              tels paquets sont utilisés pour les requêtes d'établissement de
              connexion TCP ; par exemple, si l'on bloque ce type de paquets
              entrants sur une interface, on empêchera les connexions TCP
              entrantes, mais les connexions TCP sortantes ne seront pas
              affectées.  C'est équivalent à --tcp-flags SYN,RST,ACK SYN.  Si le
              signe «!» précède le «--syn», la sélection est inversée.

       --tcp-option [!] numéro
              Établit une correspondance si l'option TCP indiquée est
              positionnée.

       --mss valeur[:valeur]
              Établit une correspondance avec les paquets TCP de type SYN ou
              SYN/ACK caractérisés par la valeur ou l'intervalle MSS spécifié,
              contrôlant la taille maximale du paquet pour cette connexion.

   tos
       Ce module cherche une correspondance avec les 8 bits du champ Type de
       Service (TOS) dans l'en-tête IP (ceci inclut les bits de priorité).

       --tos type_de_service
              Cet argument à détecter est soit un nom standard (utiliser
               iptables -m tos -h
              pour afficher la liste), soit une valeur numérique.

   ttl
       Ce module cherche une correspondance avec le champ de durée de validité
       («Time To Live» ou TTL) de l'en-tête IP.

       --ttl valeur_ttl
              Établit une correspondance avec la valeur TTL donnée.

   udp
       Ces extensions sont chargées si «--protocol udp» est spécifié. Elles
       procurent les options suivantes :

       --source-port [!] port[:port]
              Spécification d'un port source ou d'un intervalle de ports.  Voir
              la description de l'option --source-port de l'extension TCP pour
              obtenir des précisions.

       --destination-port [!] port[:port]
              Spécification d'un port destination ou d'un intervalle de ports.
              Voir la description de l'option --destination-port de l'extension
              TCP pour obtenir des précisions.

   unclean
       Ce module n'a aucune option, mais il tente d'établir une correspondance
       avec les paquets qui semblent mal formés ou inhabituels. Cette option est
       considérée comme expérimentale.

EXTENSIONS DE CIBLE
       iptables peut utiliser des modules de cible additionnels : les suivants
       sont inclus dans la distribution standard.

   DNAT
       Cette cible est seulement valide dans la table nat, dans les chaînes
       PREROUTING et OUTPUT, et dans les chaînes définies par l'utilisateur
       appelées par celles-ci.  Elle spécifie que l'adresse de destination du
       paquet doit être modifiée (comme toutes celles des paquets à venir dans
       le cadre de cette connexion), et que les règles doivent cesser d'être
       examinées. Elle accepte une option :

       --to-destination adresse-ip[-adresse-ip][:port-port]
              qui peut définir une nouvelle et unique adresse IP de destination,
              un intervalle d'adresses IP (bornes incluses) et éventuellement un
              intervalle de ports (qui n'est valide que si la règle contient
              aussi -p tcp ou -p udp).  Si aucun intervalle n'est spécifié,
              alors le port destination ne sera jamais modifié.

              Vous pouvez ajouter plusieurs options --to-destination. Si vous
              définissez plus d'une adresse de destination, via un intervalle
              d'adresses ou via plusieurs options --to-destination, un simple
              équilibrage de charge de type «round-robin» (tour de rôle) sera
              effectué entre ces adresses.

   DSCP
       Cette cible permet de modifier la valeur des bits DSCP dans l'en-tête TOS
       d'un paquet IPv4. Comme ceci transforme le paquet, on ne peut l'utiliser
       que dans la table mangle.

       --set-dscp valeur
              Donne au champ DSCP une valeur numérique (décimale ou hexa).

       --set-dscp-class classe
              Donne au champ DSCP une classe DiffServ (services différenciés).

   ECN
       Cette cible permet de travailler de façon sélective sur les trous noirs
       ECN connus. On ne peut l'utiliser que dans la table mangle.

       --ecn-tcp-remove
              Supprime tous les bits ECN de l'en-tête TCP. Naturellement, ceci
              ne peut être utilisé qu'avec -p tcp.

   LOG
       Met en service la journalisation par le noyau pour les paquets qui
       correspondent. Lorsque cette option est définie dans une règle, le noyau
       Linux affichera des informations sur tous les paquets correspondant avec
       cette règle (comme la plupart des champs de l'en-tête IP) par
       l'intermédiaire des journaux du noyau (que l'on peut lire avec dmesg ou
       syslogd(8)).  Ceci est une cible «non déterminante», c.-à-d. que
       l'analyse de cette règle enchaîne nécessairement sur la règle suivante.
       Ainsi, si vous voulez journaliser des paquets à rejeter, utilisez deux
       règles distinctes avec le même critère de correspondance, en plaçant en
       premier la cible LOG et ensuite la cible DROP (ou REJECT).

       --log-level niveau
              Niveau de journalisation (sous forme numérique, ou voir
              syslog.conf(5)).

       --log-prefix préfixe
              Préfixe les messages de journalisation avec le préfixe indiqué ;
              jusqu'à 29 lettres de long, il est très utile pour différencier
              les différents messages dans les fichiers journaux.

       --log-tcp-sequence
              Journalise les numéros de séquence TCP. Ce peut être un risque
              pour la sécurité si les fichiers journaux sont lisibles par les
              utilisateurs ordinaires.

       --log-tcp-options
              Journalise les options de l'en-tête des paquets TCP.

       --log-ip-options
              Journalise les options de l'en-tête des paquets IP.

   MARK
       Ceci est utilisé pour activer la valeur de marquage de Netfilter associée
       au paquet. Ceci est valide uniquement avec la table mangle.  On peut
       l'utiliser par exemple conjointement avec iproute2.

       --set-mark marque

   MASQUERADE
       Cette cible est seulement valide dans la table nat, dans la chaîne
       POSTROUTING.  Elle ne doit être utilisée que dans le cas d'une connexion
       où l'adresse IP est assignée dynamiquement (liaison téléphonique) : si
       vous avez une adresse IP statique, vous devez utiliser la cible SNAT. Le
       camouflage («masquerading») revient à effectuer une association (et une
       substitution) de l'adresse de source avec l'adresse IP de l'interface par
       laquelle les paquets sortent, mais cela a pour conséquence d' oublier les
       connexions lorsque l'interface est déconnectée. C'est un comportement
       approprié, car au prochain établissement de la liaison, il y a peu de
       chance d'obtenir la même adresse d'interface (par conséquent les
       connexions déjà établies seront inévitablement perdues). Il existe une
       option

       --to-ports port[-port]
              qui définit un intervalle de ports source à utiliser, annule et
              remplace la sélection heuristique de ports source du SNAT (voir
              ci-dessus). Ceci n'est valide que si la règle contient aussi -p
              tcp ou -p udp.

   MIRROR
       Ceci est une cible de démonstration expérimentale qui inverse les champs
       source et destination dans l'en-tête IP et retransmet le paquet. Il est
       valide uniquement avec les chaînes INPUT, FORWARD et PREROUTING, et avec
       les chaînes définies par l'utilisateur appelées par celles-ci.  Notez que
       les paquets sortants NE sont PAS vus par les autres chaînes de filtrage
       de paquets, de traçage de connexions ou de traduction d'adresses (NAT),
       afin d'éviter les boucles infinies et d'autres problèmes.

   REDIRECT
       Cette cible est seulement valide dans la table nat, dans les chaînes
       PREROUTING et OUTPUT, et dans les chaînes définies par l'utilisateur
       appelées par celles-ci.  Elle modifie l'adresse IP de destination pour
       envoyer le paquet à la machine elle-même (les paquets générés localement
       sont convertis vers l'adresse 127.0.0.1). Il existe une option

       --to-ports port[-port]
              qui définit un port destination ou un intervalle de ports à
              utiliser : sans cela, le port destination ne sera jamais modifié.
              Ceci n'est valide que si la règle contient aussi -p tcp ou -p udp.

   REJECT
       Cette cible est utilisée pour répondre par un paquet d'erreur à un paquet
       qui correspond : à part cela, c'est équivalent à DROP, donc c'est une
       cible déterminante, concluant l'analyse d'une règle.  Cette cible est
       uniquement valide dans les chaînes INPUT, FORWARD et OUTPUT, et dans les
       chaînes définies par l'utilisateur appelées par celles-ci.  L'option
       suivante contrôle la nature du paquet d'erreur retourné :

       --reject-with type
              Le type donné peut être icmp-net-unreachable (réseau
              inaccessible), icmp-host-unreachable (machine inaccessible), icmp-
              port-unreachable (port inaccessible), icmp-proto-unreachable
              (protocole non utilisable), icmp-net-prohibited (réseau interdit),
              icmp-host-prohibited (machine interdite) ou icmp-admin-
              prohibited(*) (communication interdite par l'administrateur),
              chacun retournant le message d'erreur ICMP approprié (par défaut,
              port inaccessible).  L'option tcp-reset peut être utilisée dans
              les règles associées uniquement avec le protocole TCP : on envoie
              en retour un paquet TCP RST. On l'utilise principalement pour
              bloquer les sondes ident (113/tcp), ce qui arrive fréquemment
              lorsqu'on envoie des courriels à des hôtes de messagerie
              inaccessibles (qui d'ailleurs n'accepteront pas votre courrier).

       (*) L'utilisation du type icmp-admin-prohibited avec des noyaux qui
              ne l'acceptent pas entraîne l'application de la cible DROP au lieu
              de REJECT.

   SNAT
       Cette cible est seulement valide dans la table nat, dans la chaîne
       POSTROUTING.  Elle spécifie que l'adresse source du paquet doit être
       modifiée (ainsi que tous les futurs paquets de cette même connexion), et
       que les règles doivent cesser d'être examinées. Elle prend un seul type
       d'option :

       --to-source  adresse-ip[-adresse-ip][:port-port]
              qui peut définir une nouvelle et unique adresse IP de destination,
              un intervalle d'adresses IP (bornes incluses) et éventuellement un
              intervalle de ports (qui n'est valide que si la règle contient
              aussi -p tcp ou -p udp).  Si aucun intervalle de ports n'est
              spécifié, les ports source inférieurs à 512 seront convertis vers
              d'autres ports inférieurs à 512 : ceux compris entre 512 et 1023
              inclus seront convertis vers des ports inférieurs à 1024, et les
              autres seront convertis vers des ports supérieurs à 1024.  Lorsque
              c'est possible, aucune modification de ports n'est effectuée.

              Vous pouvez ajouter plusieurs options --to-source. Si vous
              définissez plus d'une adresse source, via un intervalle d'adresses
              ou via plusieurs options --to-source, une simple alternance de
              type «round-robin» (tour de rôle) sera effectuée entre ces
              adresses.

   TCPMSS
       Cette cible permet de modifier la valeur MSS des paquets TCP SYN, pour
       contrôler la taille maximale des segments pour cette connexion
       (habituellement, on la limite au MTU de l'interface de sortie moins 40).
       Naturellement, elle ne peut être utilisée qu'avec -p tcp.
       Cette cible est utilisée pour triompher des FAI à tendance criminelle ou
       des serveurs qui bloquent les paquets ICMP de type «Fragmentation Needed»
       (fragmentation nécessaire). Pour comprendre les symptômes d'un tel
       problème, tout semble bien fonctionner sur votre pare-feu/routeur Linux,
       mais les machines retranchées derrière ne peuvent échanger des paquets
       volumineux :
        1) Les navigateurs web se connectent, puis s'interrompent sans plus
           recevoir de données.
        2) Les petits messages fonctionnent bien, mais les plus gros s'arrêtent.
        3) ssh fonctionne bien, mais scp s'arrête après l'initialisation
           initiale en trois étapes («three-way handshake».
       Solution de rechange : activer cette option et ajouter une règle à votre
       configuration de pare-feu comme :
        iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN \
                    -j TCPMSS --clamp-mss-to-pmtu

       --set-mss valeur
              Fixe explicitement l'option MSS à la valeur spécifiée.

       --clamp-mss-to-pmtu
              Limite automatiquement le MSS à la valeur (MTU_de_la_liaison -
              40).

       Ces options sont mutuellement exclusives.

   TOS
       Ceci est utilisé pour définir le champ de Type de Service (TOS)
       représenté sur 8 bits dans l'en-tête IP. Ceci n'est valide que dans la
       table mangle.

       --set-tos type_de_service
              Pour le Type de Service, vous pouvez utiliser une valeur
              numérique, ou exécuter
               iptables -j TOS -h
              pour afficher la liste des noms de TOS valides.

   ULOG
       Cette cible permet de journaliser dans un espace utilisateur des paquets
       qui établissent une correspondance avec une règle. Lorsque cette cible
       est désignée dans une règle, le noyau de Linux va multi-diffuser le
       paquet par l'intermédiaire d'un connecteur («socket») netlink.  Un ou
       plusieurs processus de l'espace utilisateur peuvent alors souscrire à
       divers groupes de multi-diffusion et recevoir les paquets. Tout comme la
       cible LOG, c'est une règle non-déterminante, c'est-à-dire que l'analyse
       d'une règle enchaîne sur la règle suivante.

       --ulog-nlgroup groupe_netlink
              Définit le groupe netlink (1-32) vers lequel le paquet est envoyé.
              La valeur par défaut est 1.

       --ulog-prefix préfixe
              Préfixe les messages du journal avec le préfixe indiqué ; jusqu'à
              32 caractères de long, et très utile pour différencier les
              messages dans les journaux.

       --ulog-cprange taille
              Nombre d'octets à copier dans l'espace utilisateur. Une valeur de
              0 copie le paquet entier, sans tenir compte de sa taille. La
              valeur par défaut est 0.

       --ulog-qthreshold taille
              Nombre de paquets à mettre dans la file d'attente du noyau. Fixer
              cette valeur par exemple à 10, accumule 10 paquets dans le noyau
              et les transmet en un seul message «netlink» de multi-contenus
              (type «multipart») vers l'espace utilisateur. La valeur par défaut
              est 1 (pour la rétro-compatibilité, c'est-à-dire avec les
              implémentations précédentes).

DIAGNOSTICS
       Divers messages d'erreur sont envoyés vers la sortie d'erreur standard.
       Un code de sortie de 0 correspond à un fonctionnement normal. Une ligne
       de commande contenant des paramètres invalides ou abusifs génère un code
       de sortie égal à 2, et les autres erreurs renvoient un code de sortie
       égal à 1.

BOGUES
       Des bogues ?  Qu'est-ce que c'est ? ;-) Bon... les compteurs ne sont pas
       fiables sur l'architecture sparc64.

COMPATIBILITÉ AVEC IPCHAINS
       Cet iptables est très similaire à l'ipchains de Rusty Russell. La
       différence principale est que les chaînes INPUT et OUTPUT sont uniquement
       traversées, respectivement par les paquets entrant dans la machine locale
       et sortant de la machine locale. Par conséquent, tous les paquets passent
       uniquement par une seule des trois chaînes (sauf le trafic vers la boucle
       locale, qui implique à la fois les chaînes INPUT et OUTPUT) ; auparavant,
       un paquet redirigé serait passé par les trois chaînes.

       L'autre différence principale est que -i fait référence à l'interface
       d'entrée ; -o fait référence à l'interface de sortie, et toutes les deux
       sont disponibles pour les paquets entrant dans la chaîne FORWARD.

       iptables est un pur filtre à paquets lorsqu'il utilise la table par
       défaut «filter», avec d'éventuels modules d'extensions. Cela devrait
       éliminer la confusion qu'il pouvait y avoir avec la combinaison du
       camouflage d'adresses IP et du filtrage de paquets vu précédemment. Les
       options suivantes sont donc gérées différemment :
        -j MASQ
        -M -S
        -M -L
       Il y a quelques autres changements dans iptables.

VOIR AUSSI
       iptables-save(8), iptables-restore(8), ip6tables(8), ip6tables-save(8),
       ip6tables-restore(8)

       Le «Guide pratique du filtrage de paquets» (Packet-Filtering-HOWTO) qui
       détaille l'utilisation d'iptables pour les techniques de filtrage, le
       «Guide pratique de la traduction d'adresses réseau» (NAT-HOWTO) qui
       détaille la traduction d'adresse réseau, et le Netfilter-Hacking-HOWTO
       qui détaille le fonctionnement interne de Netfilter.
       Consulter http://www.netfilter.org/.

TRADUCTION
       Christophe Donnier (mars 2002), Guillaume Audirac (août 2004)

AUTEURS
       Rusty Russell a écrit iptables, avec la collaboration de Michael Neuling.

       Marc Boucher a suggéré à Rusty l'abandon d'ipnatctl en proposant une
       structure générique de sélection de paquets dans iptables, puis il
       écrivit la table mangle, la correspondance avec le propriétaire, des
       choses sur le marquage, puis s'en fut faire d'autres choses géniales un
       peu partout.

       James Morris a écrit la cible du Type de Service (TOS) et les
       correspondances de TOS.

       Jozsef Kadlecsik a écrit la cible REJECT.

       Harald Welte a écrit la cible ULOG, les correspondances et les cibles
       TTL, DSCP, ECN.

       L'équipe principale de Netfilter est composée de : Marc Boucher, Martin
       Josefsson, Jozsef Kadlecsik, James Morris, Harald Welte et Rusty Russell.

       La page de manuel a été écrite par Hervé Eychenne <rv@wallfire.org>.

AVERTISSEMENT SUR LA TRADUCTION
       Il est possible que cette traduction soit imparfaite ou périmée. En cas
       de doute, veuillez vous reporter au document original en langue anglaise
       fourni avec le programme.



                                   9 mars 2002                       IPTABLES(8)