Les pages MAN de iptables

NOM

iptables – administration du filtre de paquets IP

RÉSUMÉ

iptables -[ADC] chaîne règle [options]
iptables -[RI] chaîne numéro-de-règle règle [options]
iptables -D chaîne numéro-de-règle [options]
iptables -[LFZ] [chaîne] [options]
iptables -[NX] chaîne
iptables -P chaîne cible [options]
iptables -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. Plusieurs tables différentes peuvent être définies. Chaque table contient un nombre de 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 auxquelles peuvent correspondre un ensemble de paquets. Chaque règle spécifie ce qui doit être fait avec un paquet qui correspond. Cela s’appelle 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 les critères pour un paquets, et une cible. Si le paquet ne correspond pas, la règle suivante de la chaîne est examinée ; si il correspond, la règle suivante est spécifié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 laissé de coté. QUEUE signifie que le paquet est passé à l’espace utilisateur (si cette option est supportée par le noyau). RETURN signifie que l’on cesse de traiter cette chaîne et que l’on retourne à la règle suivante dans la chaîne que l’on traitait précédemment. Si la fin d’une chaîne pré-définie est atteinte, ou une règle dans une chaîne pré-définie dont la cible RETURN est atteinte, la cible spécifiée par la règle de la chaîne détermine le destin du paquet.

TABLES

Il y a actuellement trois tables indépendantes (quelles tables sont présentes à quel moment, cela dépend des options de configuration du noyau, et des modules qui sont chargés).

-t, —table
Cette option spécifie la table des paquets concordant 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é à cette table, si’l n’est pas déjà chargé.

Les tables sont les suivantes :
- filter
C’est la table par défaut. 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 en local).

- nat
Cette table est consultée lorsqu’un paquet qui crée une nouvelle connexion est détecté. Elle 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 qu’ils ne soient routés), et POSTROUTING (pour modifier les paquets lorsqu’il sont sur le point de sortir).

- mangle
Cette table est employée pour un traitement spécial des paquets. Elle a deux chaînes pré-définies : PREROUTING (pour modifier les paquets entrants avant qu’ils ne soient routés) et OUTPUT (pour modifier les paquets générés localement avant qu’ils ne soient routés).

OPTIONS

Les options reconnues par iptables peuvent être divisées en plusieurs groupes différents.

COMMANDES Ces options spécifient une action particulière à effectuer. Seule l’une d’elles peut être spécifiée sur la ligne de commande, sauf indication contraire spécifiée ci-après. Pour toutes les versions longues des commandes et des options, il suffit d’utiliser un nombre suffisant de lettres afin que iptables puisse différencier la commande tapée des autres commandes ou options.

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

-D, —delete
Efface une ou plusieurs règles de la chaîne sélectionnée. Il y a deux versions de cette commande : la règle peut être spécifiée comme un numéro dans la chaîne (commençant à 1 pour la première règle ) ou bien comme une règle de correspondance.

-R, —replace
Remplace une règle dans la chaîne sélectionnée. Si la source et/ou la destination résolvent des adresses multiple, la commande échouera. Les règles sont numérotées en partant de 1.

-I, —insert
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 le numéro de règle est 1 la ou les règle(s) sont insérées au début de la chaîne, c’est le comportement par défaut si aucun numéro de règle n’est spécifié.

-L, —list
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. Il est légal de spécifier l’option -Z(zéro), dans ce cas la ou les chaîne(s) seront automatiquement listées et mises à zéro. La sortie exacte dépend des autres arguments fournis.

-F, —flush
Nettoie la chaîne sélectionnée. Ceci équivaut à effacer toutes les règles une par une.

-Z, —zero
Met à zéro le compteur de paquets et d’octets dans toute les chaînes. Il est légal de spécifier l’option -L, —list (liste), pour voir la valeur des compteurs juste avant qu’ils ne soient remis à zéro. (Voir ci dessus.)

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

-X, —delete-chain
Efface la chaîne spécifiée définie par l’utilisateur. Il ne doit pas exister de références à cette chaîne. Si il y en a, vous devez effacer ou remplacer les règles qui lui font référence avant de pouvoir l’effacer. Si aucun argument n’est fourni, toute les chaînes qui ne sont pas pré-définies seront effacées dans la table.

-P, —policy
Met en place le comportement par défaut (policy ) pour la chaîne de la cible fournie. Voir la section TARGETSpour connaître les cibles autorisées. Seule les chaînes pré-définies peuvent avoir des comportement par défaut, et ni les chaînes pré-définies ni les chaînes utilisateur peuvent être des cibles (policy targets ).

-E, —rename-chain
Renomme la chaîne utilisateur spécifiée par le nom fourni. Ceci à juste un effet cosmétique et ne modifie en rien la structure de la table.

-h
Aide. Donne une description (pour l’instant très succincte) de la syntaxe de la commande.

PARAMÈTRES

Les paramètres suivants forment une spécification de règle (comme utilisé dans les commandes add, delete, insert, replace et append).

-p, —protocol [!] protocole _ Le 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 cela peut être une valeur numérique représentant l’un de ces protocoles ou un protocole différent. Un nom de protocole du fichier /etc/protocols est aussi autorisé. Un  » ! » avant le protocole inverse le test. Le nombre zéro est équivalent à all. Le protocole all correspond à tous les protocoles et c’est la valeur par défaut lorsque cette option est omise.

-s, —source [!] addresse[/masque]
Spécification de la source. Adresse peut être un nom d’hôte, un nom de réseau ou une adresse IP. Le masque peut être un masque de réseau ou un nombre entier spécifiant le nombre de bits à 1 à gauche du masque de réseau. Par conséquent, un masque de 24 est équivalent à 255.255.255.0. Un  » ! » avant la spécification d’adresse inverse la signification de l’adresse. L’option —src est un alias commode pour cette option.

-d, —destination [!] addresse[/masque]
Spécifie la destination. Voir la description du paramètre -s (source) pour une description détaillée de la syntaxe. L’option —dst est un alias de cette option.

-j, —jump cible
Ceci spécifie 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 est cette règle), une des cibles pré-définies qui décide du destin du paquet immédiatement, ou une extension (voir EXTENSIONSci-dessous). Si cette option est omise dans une règle, la correspondance du paquet avec la règle n’aura aucun effet sur le destin du paquet, mis à part le fait que les compteurs de la règle seront incrémentés.

-i, —in-interface [!] [nom]
Nom optionnel de l’interface qui reçoit les paquets (pour les paquets passant par les chaînes INPUT, FORWARD et PREROUTING). Lorsque l’argument  » ! » est utilisé avant le nom de l’interface, la signification est inversée. Si le nom de l’interface se termine par un « + », toutes les interfaces commençant par ce nom seront concernées. Si cette option est omise, le signe « + » est supposé, ce qui signifie que tous les noms d’interface réseau seront concernés.

-o, —out-interface [!] [nom]
Nom optionnel de l’interface qui envoie les paquets (pour les paquets passant par les chaînes FORWARD, OUTPUT et POSTROUTING). Lorsque l’argument  » ! » est utilisé avant le nom de l’interface, la signification est inversée. Si le nom de l’interface se termine par un « + », toutes les interfaces commençant par ce nom seront concernées. Si cette option est omise, le signe « + » est supposé, ce qui signifie que tous les noms d’interface réseau seront concernés.

[!] -f, —fragment
Cela signifie que la règle s’applique à partir du deuxième fragment d’un paquet fragmenté. Comme il n’y a aucune possibilité de déterminer le port source ou destination de ces paquets (ou le type ICMP), de tels paquets ne seront pas pris en compte par aucune règle les spécifiant. Lorsque l’argument  » ! » précède l’option « -f », la règle ne s’appliquera qu’aux fragments de l’en-tête, ou aux paquets non fragmentés.

-c, —set-counters PAQUETS OCTETS
Ceci autorise l’administrateur à initialiser le compteur de paquets et d’octets d’une règle (lors des opérations INSERT, APPEND, REPLACE )

AUTRES OPTIONS

Les options additionnelles suivantes peuvent être spécifiées :

-v, —verbose
Sortie verbeuse. Cette option indique à la commande list d’afficher l’adresse de l’interface, les options de la règle (si’l y en a), et les masques de TOS (type de service). Les compteurs d’octets et de paquets sont aussi affichés avec les suffixes ‘K’, ‘M’ ou ‘G’ qui multiplient par 1 000, 1 000 000 et 1 000 000 000 respectivement (mais vous pouvez changer cela avec l’option -x). Pour les ajouts, insertions, effacements et remplacements, cela fournit des informations détaillées sur la ou les règle(s) à 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 va essayer de les afficher sous forme de noms d’hôtes, noms de réseaux, ou de services (lorsque cela est applicable).

-x, —exact
Nombres étendus. Affiche la valeur exacte du compteur de paquets et d’octets, au lieu de n’afficher qu’un nombre arrondi avec K (multiples de 1 000), M (multiples de 1 000K) ou G (multiples de 1 000M). Cette option n’est valable 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, correspondant à la position de cette règle dans la chaîne.

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

EXTENSIONS DE CORRESPONDANCES iptables peut utiliser des modules de correspondances de paquets étendus. Ceux ci peuvent être chargés de deux manières : implicitement, lorsque -p ou —protocol est spécifié, ou avec les options -m ou —match, suivie par le nom du module de correspondances ; après cela, diverses options de la ligne de commande supplémentaires deviennent disponibles, suivant le module dont il est question. Vous pouvez spécifier plusieurs modules de correspondance sur une ligne, et vous pouvez utiliser les options -h ou —help après que le module ait été spécifié, pour recevoir de l’aide relative à ce module.

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

tcp

Ces extensions sont chargées si `—protocol tcp’ est spécifié. Elles fournissent les options suivantes :

—source-port [!] [port[:port]]
Spécification d’un port source ou d’un intervalle de port. Cela peut être le nom d’un service ou le numéro de port. Un intervalle inclusif utilisant le format suivant peut aussi être spécifié port:port. Si le premier port est omis, « 0 » est supposé ; si le dernier est omis, « 65535 » est supposé. Si le second port est plus petit que le premier, il seront intervertis. L’option —sport est un alias de cette option.

—destination-port [!] [port[:port]]
Spécification d’un port de destination ou d’un intervalle de port. L’option —dport est un alias de cette option.

—tcp-flags [!] masque comp
Correspond lorsque les drapeaux TCP (TCP flags) sont comme ceux spécifiés. Le premier argument est le drapeau qui doit être examiné, écrit comme un liste de drapeaux séparés par des virgules, et le deuxième argument est la liste des drapeaux qui doivent être positionnés, les drapeaux étant séparés par des virgules. Les drapeaux 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 avec le drapeau SYN positionné, et les drapeaux ACK, FIN et RST non positionnés.

[!] —syn
Ne sélectionne que les paquets TCP dont le bit SYN est positionné et dont les bits ACK et FIN ne sont pas positionnés. De tels paquets sont utilisés pour les requêtes d’initiation de connexion TCP ; par exemple si l’on bloque ce type de paquets entrants sur une interface, cela bloquera les connexions TCP entrantes, mais les connexions TCP sortantes ne seront pas affectées. Cela est équivalent à —tcp-flags SYN,RST,ACK SYN. Si le signe  » ! » précède le « —syn », le sens de l’option est inversé.

—tcp-option [!] numéro
Correspond si l’option TCP indiquée est positionnée.

udp

Ces extensions sont chargées si `—protocol udp’ est spécifié. Les options suivantes sont disponibles :

—source-port [!] [port[:port]]
Spécification d’un port source ou d’un intervalle de port. Voir la description de l’option —source-port de l’extension TCP pour plus de détails.

—destination-port [!] [port[:port]]
Spécification d’un port de destination ou d’un intervalle de port. Voir la description de l’option —destination-port de l’extension TCP pour plus de détails.

icmp

Cette extension est chargée si `—protocol icmp’ est spécifié. Les options suivantes sont disponibles :

—icmp-type [!] nom_du_type_icmp
Cela autorise la spécification d’un type ICMP, qui peut être un type ICMP numérique, ou l’un des noms de type ICMP fourni par la commande

iptables -p icmp -h

mac

—mac-source [!] addresse
Correspondance avec l’adresse MAC. Cela doit être de la forme XX:XX:XX:XX:XX:XX. Notez que cela a un sens seulement pour les paquets utilisant les chaînes PREROUTING, FORWARD ou INPUT et en provenance de cartes réseau Ethernet.

limit

Ce module laisse passer les paquets correspondants à un débit limité, en utilisant un filtre à jetons (token bucket filter) : il peut être utilisé conjointement avec la cible LOG afin de limiter la taille des logs. Une règle utilisant cette extension laissera passer les paquets correspondants jusqu’à ce que cette limite soit atteinte (à moins que le drapeau ` !’ soit utilisé ).

—limit taux
Taux maximum de correspondance : spécifié par un nombre, avec un suffixe optionnel `/second’, `/minute’, `/hour’, ou `/day’ ; la valeur par défaut est 3/hour.

—limit-burst nombre
Le nombre initial maximum de paquets correspondants : ce nombre est incrémenté de 1 chaque fois que la limite spécifié ci dessus n’est pas atteinte, jusqu’à ce que ce nombre soit atteint ; la valeur par défaut est 5.

multiport

Ce module regarde les correspondances d’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-port [port[,port]]
Établi la correspondance si le port source est l’un des ports spécifiés.

—destination-port [port[,port]]
Établi la correspondance si le port destination est l’un des ports spécifiés.

—port [port[,port]]
Établi la correspondance si les port source et destination sont les mêmes et sont égaux à l’un des ports spécifiés.

mark

Ce module établi la correspondance du champ des marquages netfilter associé à un paquet (celui ci peut être positionné en utilisant la cible MARK décrite ci dessous).

—mark valeur[/masque]
Établit la correspondance avec la valeur de marquage de type non-signé fournie (si un masque est spécifié, un ET logique est effectué avec le masque avant la comparaison).

owner

Ce module tente d’établir une correspondance avec diverses caractéristiques du créateur du paquet, pour les paquets générés en local. Ceci est valide uniquement dans la chaîne OUTPUT , et même si certains paquets (comme les réponses ICMP d’un ping ) peuvent n’appartenir à personne, et par conséquent ne jamais correspondre.

—uid-owner id_utilisateur
Établit la correspondance si le paquet à été créé par un processus avec l’id-utilisateur spécifié.

—gid-owner id_de_groupe
Établit la correspondance si le paquet à été créé par un processus avec l’id-de-groupe spécifié.

—pid-owner id_du_processus
Établit la correspondance si le paquet à été créé par un processus avec le numéro de processus spécifié.

—sid-owner id_de_session
Établit la correspondance si le paquet à été créé par un processus dans le groupe de session spécifié.

state

Ce module, lorsqu’il est combiné avec « connection tracking », autorise l’accès à l’état du traçage de connexions pour ce paquet.

—state état
Ici état est une liste séparée par des virgules des états de connexions que l’on veut détecter. Les états possibles sont INVALID signifiant que le paquet n’est associé avec aucune connexion connue, ESTABLISHED signifiant que le paquet est associé avec une connexion qui a vu passer des paquets dans les deux sens, NEWsignifiant que le paquet a initié une nouvelle connexion, ou sinon qu’il est associé avec une connexion qui n’a pas vu passer de paquets dans les deux sens, et RELATEDsignifiant 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.

unclean

Ce module n’a pas d’options, mais tente de détecter les paquets qui semblent mal formés ou inhabituels. Cette option est considérée comme expérimentale.

tos Cette option traite les 8 bits du champ « type de service » dans l’en-tête IP (ceci inclut les bits de priorité).

—tos type_de_service
Cet argument est soit un nom standard, (faire

iptables -m tos -h pour voir la liste), ou une valeur numérique à détecter.

EXTENSIONS DE CIBLES

iptables peut utiliser les modules cible : les suivant sont inclus dans la distribution standard.

LOG

Met en service la journalisation du noyau (kernel logging ) pour les paquets correspondants. Lorsque cette option est positionnée pour une règle, le noyau Linux affichera certaines informations sur tous les paquets correspondants à 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)).

—log-level niveau
Niveau de journalisation (c’est un nombre ou alors voir syslog.conf(5)).

—log-prefix préfixe
Préfixe les messages de journalisation avec le préfixe spécifié ; jusqu’à 29 lettres de long, c’est très utile pour distinguer les différents messages d’un fichier de log.

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

—log-tcp-options
Option de journalisation de l’en-tête de paquets TCP.

—log-ip-options
Option de journalisation de l’en-tête de paquets IP.

MARK

Ceci est utilisé pour activer la valeur de marquage netfilter associée au paquet. Cela est valide uniquement avec la table mangle : —set-mark mark

REJECT

Ceci est utilisé pour renvoyer un paquet erroné en réponse au paquet qui correspond : sinon cela est équivalent à DROP. Cette cible est uniquement valable avec les chaînes INPUT, FORWARD et OUTPUT, et avec les chaînes définies par l’utilisateur qui sont appelées par ces chaînes. Plusieurs options contrôlent la nature du paquet erroné retourné :

—reject-with type
Le type donné peut être réseau_inaccessible (icmp-net-unreachable), machine_inaccessible (icmp-host-unreachable), port_inaccessible (icmp-port-unreachable), protocole_inaccessible (icmp-proto-unreachable), réseau_interdit (icmp-net-prohibited) ou machine_interdite (icmp-host-prohibited), chacun retournant le message d’erreur ICMP approprié (par défaut port_inaccessible). L’option echo-replyest aussi autorisée ; elle peut seulement être utilisée pour les règles qui spécifient un paquet ping ICMP et génèrent une réponse ping. Enfin, l’option tcp-resetpeut être utilisée avec les règles de correspondance relatives au protocole TCP : ceci engendre le renvoi d’un paquet TCP RST. Cela est principalement utilisé pour bloquer les sondes ident qui sont fréquentes lorsqu’on envoie des mails à des hôtes inaccessibles (qui sinon n’accepteront pas vos mail).

TOS

Ceci est utilisé pour positionner le champ sur 8 bits du Type de Service dans l’en-tête IP. C’est valable uniquement lorsque vous utilisez la table mangle

—set-tos type_de_service
Vous pouvez utiliser les valeurs numériques des Types de Services, ou utiliser iptables -j TOS -h pour connaître la liste des Types de Services valides.

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 les chaînes utilisateur appelées par ces chaînes. Remarquez que les paquets sortants NE SONT PASvu par les autres chaînes de filtrage de paquet, traçage de connexions ou translation d’adresses, afin d’éviter les boucles infinies et autres problèmes.

SNAT

Cette cible n’est valable que dans la table nat , dans la chaîne POSTROUTING

—to-source [-][:port-port]
qui peut spécifier une seule nouvelle adresse IP source, une série inclusive d’adresses IP, et optionnellement, une série de ports (qui est valide seulement si la règle spécifie aussi -p tcp ou -p udp). Si aucune plage de ports n’est spécifiée, les ports sources inférieurs à 512 seront translatés vers des ports inférieurs à 512 : ceux entre 512 et 1023 inclus seront translatés vers des ports inférieurs à 1024, et les autres seront translatés vers des ports supérieurs ou égaux à 1024. Lorsque cela est possible, aucune translation de ports n’est effectuée.

DNAT

Cette cible n’est valable 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 par celles ci. Elle spécifie que l’adresse de destination du paquet doit être modifiée (ainsi que tous les paquets à venir dans le cadre de cette connexion ), et que les règles doivent cesser d’être examinées. Elle reçoit une option :

—to-destination [-][:port-port]
qui peut spécifier une seule adresse IP de destination, une série d’adresse IP inclusive , et optionnellement, une plage de ports (qui n’est valide que si la règle spécifie aussi -p tcp ou -p udp). Si aucune plage de port n’est spécifiée, le port de destination ne sera jamais modifié.

MASQUERADE

Cette cible n’est valable qu’avec la table nat , dans la chaîne POSTROUTING

assignées dynamiquement (dialup) : si vous avez une adresse IP statique, vous devez utiliser la cible SNAT. Le masquerading revient à spécifier une translation (mapping) vers l’adresse IP de l’interface par laquelle le paquet va sortir, mais implique aussi que les connexions sont perdues lorsque l’interface tombe. C’est le comportement correct, lors du prochain établissement de liaison (dialup) il y a peu de chance d’obtenir la même adresse pour l’interface (et par conséquent les connexions déjà établie seront perdues quand même). Il y a une option :

—to-ports [-]
qui spécifie une série de ports source à utiliser, qui prend le pas sur la sélection heuristique de port source SNAT (voir ci dessus). Ceci n’est valide que si la règle spécifie aussi -p tcp ou -p udp.

REDIRECT

Cette cible n’est valide qu’avec la table nat , dans les chaînes PREROUTING et OUTPUT , et les chaînes définies par l’utilisateur qui sont appelées par celles ci. Elle modifie l’adresse IP de destination pour envoyer le paquet vers la machine elle même (les paquets générés localement sont translatés vers l’adresse 127.0.0.1). Il y a une option :

—to-ports [-]
qui spécifie un port de destination ou une plage de ports à utiliser : sans cette option le port de destination n’est jamais modifié. Ceci n’est valide que si la règle spécifie aussi -p tcp ou -p udp.

EXTENSIONS SUPPLÉMENTAIRES

Les extensions suivantes ne sont pas incluses par défaut dans la distribution standard.

ttl Ce module détecte les correspondances dans le champ temps restant (time to live ou TTL) de l’en-tête IP.

—ttl ttl
Recherche la valeur TTL donnée.

TTL

Cette cible est utilisée pour modifier le champ TTL de l’en-tête IP. Elle n’est valide que dans la table mangle

—ttl-set ttl
Positionne le champ TTL à la valeur indiquée. —ttl-dec ttl
Décrémente la valeur du champ TTL de la valeur indiquée. —ttl-inc ttl
Incrémente la valeur du champ TTL de la valeur indiquée.

ULOG

Cette cible fournit un espace utilisateur pour la journalisation des paquets qui on vérifié des cibles. Lorsque cette cible est positionnée pour une règle, le noyau Linux va faire un multicast du paquet par l’intermédiaire d’un socket netlink

—ulog-nlgroup
Cela spécifie le groupe netlink (1-32) vers lequel le paquet est envoyé. La valeur par défaut est 1.

—ulog-prefix
Préfixe les messages du journal avec le préfixe spécifié ; jusqu’à 32 caractères, très utile pour différencier les messages dans les journaux.

—ulog-cprange
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
Nombre de paquets dans la file d’attente du noyau. Mettre cette valeur à 10, par exemple, accumule 10 paquets dans le noyau, et les transmet en un seul message netlink multipart vers l’espace utilisateur. La valeur par défaut est 1 (pour la compatibilité avec les implémentations précédentes).

DIAGNOSTICS

Divers messages d’erreur sont envoyés vers le dispositif d’erreur standard. Le code de sortie est 0 pour un fonctionnement normal. Les erreurs causées par des paramètres de commande invalides ou abusifs génèrent un code de sortie égal à 2, et les autre erreur un code de sortie égal à 1. BUGS La vérification n’est pas (encore) implémentée.

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 OUTPUTsont uniquement traversées, respectivement par les paquets venant dans la machine locale et en provenance de la machine locale. Par conséquent tous les paquets passent uniquement par l’une des trois chaînes ; 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 toute les deux sont disponibles pour les paquets entrants dans la chaîne FORWARD

iptables est un pur filtre de paquets, lorsqu’il utilise la table par défaut `filter’, avec des modules d’extensions optionnels. Cela devrait éclaircir la confusion qu’il pouvait y avoir entre la combinaison de la translation d’adresses IP et le filtrage de paquets vue précédemment. Les options suivantes sont donc manipulées différemment :

-j MASQ

-M -S

-M -L Il y a quelques autres changements dans iptables.

VOIR AUSSI

Le HOWTO du filtrage de paquets (packet-filtering-HOWTO), qui détaille l’utilisation de iptables pour le filtrage de paquets, le HOWTO sur la translation d’adresses (NAT-HOWTO), qui détaille la translation d’adresses, et le netfilter-hacking-HOWTO qui détaille le fonctionnement interne.

TRADUCTION

Christophe Donnier (Mars 2002)

AUTEURS

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

Marc Boucher a suggéré à Rusty l’abandon de ipnatctl en proposant une structure générique de sélection de paquets dans iptable, puis il écrivit la table mangle, la correspondance avec le propriétaire, les trucs sur la marque, et s’en fut faire d’autre choses un peu partout.

James Morris à écrit la cible du type de service (TOS target), et les correspondances avec tos.

Jozsef Kadlecsik à écrit la cible REJECT.

Harald Welte à écrit la cible ULOG, la cible et la correpondance TTL, et libipulog.

L’équipe principale de Netfilter est composée de : Marc Boucher, James Morris, Harald Welte et Rusty Russell.