Provided by: manpages-fr_4.27.0-1_all 

NOM
iptables/ip6tables — Outil d'administration pour le filtrage et le NAT des paquets IPv4/IPv6
SYNOPSIS
iptables [-t table] {-A|-C|-D|-V} chaine spécification_de_règle
ip6tables [-t table] {-A|-C|-D|-V} chaine spécification_de_règle
iptables [-t table] -I chaine [numéro_de_règle] spécification_de_règle
iptables [-t table] -R chaine numéro_de_règle spécification_de_règle
iptables [-t table] -D chaine numéro_de_règle
iptables [-t table] -S [chaine [numéro_de_règle]]
iptables [-t table] {-F|-L|-Z} [chaine [numéro_de_règle]] [options...]
iptables [-t table] -N chaine
iptables [-t table] -X [chaine]
iptables [-t table] -P action chaine
iptables [-t table] -E ancienne_chaine nouvelle_chaine
spécification_de_règle = [correspondances...] [cible]
correspondance = -m nom_correspondance [options_par_correspondance]
cible = -j nom_cible [options_par_cible]
DESCRIPTION
Iptables et ip6tables permettent de définir, entretenir et inspecter les tables de règles de filtrage des
paquets IPv4 et IPv6 dans le noyau Linux. Plusieurs tables peuvent être définies. Chaque table contient
des chaines prédéfinies, mais peut aussi contenir des chaines définies par l'utilisateur.
Chaque chaine est une liste de règles qui peuvent s'appliquer à un ensemble de paquets. Chaque règle
spécifie quoi faire d'un paquet qui correspond. Cette action que l'on nomme « cible » peut être un saut
vers une chaine définie par l'utilisateur dans la même table.
CIBLES
Une règle de pare-feu spécifie des critères pour un paquet et une cible. Si un paquet ne correspond pas,
la règle suivante dans la chaine est examinée ; s'il correspond, la règle suivante est spécifiée par la
valeur de la cible qui peut être le nom d'une chaine définie par l'utilisateur, une des cibles décrites
dans iptables-extensions(8) ou une des valeurs spéciales ACCEPT, DROP ou RETURN.
ACCEPT signifie que le paquet peut passer. DROP signifie que le paquet doit être rejeté. RETURN signifie
que l'on doit arrêter de parcourir cette chaine et reprendre à la règle suivante de la chaine précédente
(appelante). Si la fin d'une chaine prédéfinie est atteinte ou si une règle d'une chaine prédéfinie ayant
pour cible RETURN s'applique, la cible par défaut de la chaine déterminera le sort du paquet.
TABLES
Il existe actuellement cinq tables indépendantes (la liste des tables présentes à tout moment dépend des
options de configuration du noyau et de la liste des modules présents).
-t, --table table
Cette option spécifie la table de correspondance des paquets sur laquelle la commande doit opérer.
Si le noyau est configuré pour charger les modules automatiquement, il tentera de charger le
module approprié à cette table, s'il ne l'est pas déjà.
Les tables sont les suivantes :
filter :
Il s'agit de la table par défaut (dans le cas où aucune option -t n'est spécifiée). Elle
contient les chaines prédéfinies INPUT (pour les paquets destinés aux sockets locaux), FORWARD
(pour les paquets routés par la machine) et OUTPUT (pour les paquets générés localement).
nat :
Cette table est consultée quand arrive un paquet qui crée une nouvelle connexion. Elle
comporte quatre chaines prédéfinies : PREROUTING (pour modifier les paquets dès leur entrée),
INPUT (pour modifier les paquets destinés aux sockets locaux), OUTPUT (pour modifier les
paquets générés localement avant leur routage) et POSTROUTING (pour modifier les paquets
lorsqu'ils sont sur le point de sortir). Le NAT IPv6 est pris en charge depuis la version 3.7
du noyau.
mangle :
Cette table est utilisée pour une modification spécialisée des paquets. Jusqu'à la
version 2.4.17 du noyau, elle comportait deux chaines prédéfinies : PREROUTING (pour la
modification des paquets entrants avant leur routage) et OUTPUT (pour la modification des
paquets générés localement avant leur routage). Depuis la version 2.4.18, trois autres chaines
prédéfinies sont prises en charge : INPUT (pour les paquets entrant dans la machine
elle-même), FORWARD (pour la modification des paquets routés à travers la machine) et
POSTROUTING (pour modifier les paquets lorsqu'ils sont sur le point de sortir).
raw :
Cette table est principalement utilisée pour configurer les exemptions de suivi de connexion
en combinaison avec la cible NOTRACK. Elle s'enregistre aux accroches netfilter avec une
priorité supérieure et est ainsi appelée avant ip_conntrack ou toute autre table IP. Elle
comporte les chaines prédéfinies suivantes : PREROUTING (pour les paquets arrivant par toute
interface réseau) et OUTPUT (pour les paquets générés par des processus locaux).
security :
Cette table est utilisée pour les règles Mandatory Access Control (MAC), comme celles qui sont
activées par les cibles SECMARK et CONNSECMARK. Mandatory Access Control est implémenté par
les modules de sécurité Linux comme SELinux. La table security est appelée après la table
filter, ce qui permet à toute règle Discretionary Access Control (DAC) de la table filter de
prendre effet avant les règles MAC. Elle comporte les chaines prédéfinies suivantes : INPUT
(pour les paquets entrant dans la machine elle-même), OUTPUT (pour la modification des paquets
générés localement avant leur routage) et FORWARD (pour la modification des paquets routés à
travers la machine).
OPTIONS
Les options reconnues par iptables et ip6tables peuvent être réparties en plusieurs groupes.
COMMANDES
Ces options spécifient l'action à exécuter. Sauf indications contraires précisées plus loin, la ligne de
commande ne peut comporter qu'une seule de ces options. Pour les versions longues des noms de commande et
d'option, il vous suffit de préciser suffisamment de lettres pour être sûr qu'iptables puisse les
différencier des autres commandes et options.
-A, --append chaine spécification_de_règle
Ajouter une ou plusieurs règles à la fin de la chaine indiquée. Lorsque les noms de source et/ou
destination se résolvent en plusieurs adresses, une règle sera ajoutée pour chaque combinaison
d'adresses possible.
-C, --check chaine spécification_de_règle
Vérifier si une règle correspondant à la spécification existe dans la chaine indiquée. Cette
commande utilise la même logique que -D pour trouver une entrée qui correspond, mais ne modifie
pas la configuration d'iptables existante et utilise son code de retour pour indiquer un succès ou
un échec.
-D, --delete chaine spécification_de_règle
-D, --delete chaine numéro_de_règle
Supprimer une ou plusieurs règles de la chaine indiquée. Il existe deux versions de cette
commande : la règle peut être référencée par son numéro dans la chaine (en commençant par 1 pour
la première règle) ou par une correspondance avec une certaine règle.
-I, --insert chaine [numéro_de_règle] spécification_de_règle
Insérer une ou plusieurs règles dans la chaine indiquée avec le numéro de règle donné. Ainsi, si
le numéro donné est 1, la(les) règle(s) sont insérées en tête de chaine. Il s'agit d'ailleurs du
comportement par défaut si aucun numéro de règle n'est donné.
-R, --replace chaine numéro_de_règle spécification_de_règle
Remplacer une règle dans la chaine indiquée. Si les noms de source et/ou de destination se
résolvent en plusieurs adresses, la commande échouera. Les règles sont numérotées à partir de 1.
-L, --list [chaine]
Lister toutes les règles de la chaine indiquée. Si aucune chaine n'est indiquée, toutes les
chaines sont listées. Cette commande, comme toutes les autres commandes d'iptables, s'applique à
la table indiquée (la table par défaut est filter) ; ainsi, les règles de NAT peuvent être listées
par
iptables -t nat -n -L
Veuillez noter que cette option est souvent utilisée en combinaison avec l'option -n afin d'éviter
de longues recherches DNS inverses. On peut aussi spécifier l'option -Z (zéro), auquel cas la(les)
chaine(s) seront automatiquement listées puis mises à zéro. La sortie exacte dépend des autres
options spécifiées. Les règles exactes sont supprimées à moins que vous n'utilisiez
iptables -L -v
ou iptables-save(8).
-S, --list-rules [chaine]
Afficher toutes les règles de la chaine indiquée. Si aucune chaine n'est indiquée, toutes les
chaines sont affichées comme avec iptables-save. Cette commande, comme toutes les autres commandes
d'iptables, s'applique à la table indiquée (la table par défaut est filter).
-F, --flush [chaine]
Vider la chaine indiquée (ou toutes les chaines de la table si aucune chaine n'est indiquée).
Cette option produit le même effet qu'un effacement de toutes les règles une par une.
-Z, --zero [chaine [numéro_de_règle]]
Remettre à zéro les compteurs de paquets et d'octets de toutes les chaines, ou seulement de la
chaine indiquée, ou seulement de la règle indiquée dans une chaine donnée. On peut aussi ajouter
l'option -L, --list (list) pour voir les compteurs juste avant leur réinitialisation (voir plus
haut).
-N, --new-chain chaine
Créer une nouvelle chaine définie par l'utilisateur avec le nom donné. Il ne doit pas exister de
cible avec le même nom.
-X, --delete-chain [chaine]
Supprimer la chaine indiquée. Il ne doit pas exister de références à cette chaine. S'il en existe,
vous devez supprimer ou remplacer les règles contenant ces références pour que la chaine puisse
être supprimée. La chaine doit être vide, autrement dit ne contenir aucune règle. Si aucune chaine
n'est indiquée, cette option va supprimer toutes les chaines vides de la table. Les chaines
prédéfinies vides ne peuvent être supprimées qu'à l'aide de iptables-nft.
-P, --policy chaine cible
Définir l'action par défaut de la chaine prédéfinie (non définie par l'utilisateur) avec la cible
donnée. La cible de l'action par défaut est soit ACCEPT, soit DROP.
-E, --rename-chain ancienne_chaine nouvelle_chaine
Renommer la chaine spécifiée avec le nouveau nom donné. Cette action est cosmétique et n'a aucun
effet sur la structure de la table.
-h Afficher l'aide. Donner une description (actuellement très brève) de la syntaxe de la commande.
PARAMÈTRES
Les paramètres suivants complètent l'énoncé d'une règle (lorsqu'ils sont utilisés dans une des commandes
add, delete, insert, replace et append).
-4, --ipv4
Ce paramètre n'a aucun effet avec iptables et iptables-restore. Si une règle utilisant le
paramètre -4 est insérée à l'aide de (et seulement de) ip6tables-restore, elle sera ignorée
silencieusement. Toutes les autres utilisations provoqueront une erreur. Ce paramètre permet
d'inscrire des règles IPv4 et IPv6 dans un seul fichier de règles à utiliser avec iptables-restore
et ip6tables-restore.
-6, --ipv6
Si une règle utilisant le paramètre -6 est insérée à l'aide de (et seulement de) iptables-restore,
elle sera ignorée silencieusement. Toutes les autres utilisations provoqueront une erreur. Ce
paramètre permet d'inscrire des règles IPv4 et IPv6 dans un seul fichier de règles à utiliser avec
iptables-restore et ip6tables-restore. Ce paramètre n'a aucun effet avec ip6tables et
ip6tables-restore.
[!] -p, --protocol protocole
Le protocole de la règle ou du paquet à vérifier. Le protocole spécifié peut être tcp, udp,
udplite, icmp, icmpv6, esp, ah, sctp, mh, ou le mot-clé spécial « all », ou une valeur numérique
représentant un des protocoles précités ou un protocole différent. Un nom de protocole issu de
/etc/protocols est aussi autorisé. Un argument « ! » avant le protocole inverse le test. Le nombre
zéro est équivalent à all. « all » correspond à tous les protocoles et c'est la valeur du
paramètre par défaut si ce dernier est omis. Notez que dans ip6tables, à l'exception de esp, les
en-têtes d'extensions IPv6 ne sont pas autorisés. esp et ipv6-nonext peuvent être utilisés à
partir de la version 2.6.11 du noyau. Le nombre zéro est équivalent à all, ce qui implique que
vous ne pouvez pas tester le champ protocole pour la valeur 0 directement. Pour rechercher une
correspondance avec un en-tête HBH, même s'il s'agissait du dernier, vous ne pouvez pas utiliser
-p 0 ; vous devrez toujours utiliser -m hbh.
[!] -s, --source adresse[/masque][,...]
Spécifier la source. Address peut être un nom de réseau, un nom d'hôte, une adresse réseau IP
(avec /mask) ou une adresse IP complète. Les noms d'hôtes ne seront résolus qu'une seule fois
avant que la règle ne soit soumise au noyau. Notez que spécifier un nom devant être résolu à
distance, par exemple par DNS, est vraiment une mauvaise idée. mask peut être soit un masque
réseau ipv4 (pour iptables), soit un nombre indiquant le nombre de bits à 1 en partant de la
gauche du masque réseau. Ainsi, un masque iptables de 24 est équivalent à 255.255.255.0. Un
argument « ! » avant la spécification de l'adresse inverse les critères de sélection de cette
adresse. --src est un alias pour ce paramètre. On peut spécifier plusieurs adresses, mais cela
entraînera la création de plusieurs règles (lors d'un ajout avec -A) ou la suppression de
plusieurs règles (avec -D).
[!] -d, --destination adresse[/masque][,...]
Spécifier la destination. Voir la description du paramètre -s (source) pour une description
détaillée de la syntaxe. --dst est un alias pour ce paramètre.
-m, --match correspondance
Spécifier une correspondance à utiliser, c'est-à-dire un module d'extension qui vérifie une
propriété spécifique. L'ensemble de correspondances constitue la condition à laquelle une cible
sera invoquée. Les correspondances sont évaluées de la première à la dernière selon leurs
spécifications dans la ligne de commande et travaillent en mode court-circuit ; c'est-à-dire que
si l'une d'entre elles a pour résultat « faux », l'évaluation s'arrête.
-j, --jump cible
Spécifier la cible de la règle ; c'est-à-dire quoi faire si le paquet correspond aux critères de
sélection. La cible peut être une chaine définie par l'utilisateur (différente de celle dans
laquelle se trouve la règle), une des cibles prédéfinies spéciales qui décident du sort du paquet
immédiatement ou une extension (voir plus loin EXTENSIONS DE CORRESPONDANCE ET DE CIBLE). Si ce
paramètre est omis pour une règle (et si -g n'est pas utilisé), la recherche de correspondance de
la règle au paquet n'aura aucun effet sur le sort de ce dernier, mais les compteurs de la règle
seront incrémentés.
-g, --goto chaine
Spécifier que le traitement doit continuer dans la chaine donnée. Contrairement à l'utilisation de
l'option --jump, RETURN ne poursuivra pas le traitement dans cette chaine, mais plutôt dans la
chaine qui nous a appelé à l'aide de --jump.
[!] -i, --in-interface nom
Le nom de l'interface sur laquelle le paquet a été reçu (seulement pour les paquets qui entrent
dans les chaines INPUT, FORWARD ou PREROUTING). Si l'argument « ! » précède le nom de l'interface,
le critère de sélection sera inversé. Si le nom de l'interface se termine par un « + », toute
interface qui commence par ce nom correspondra. Si ce paramètre est omis, toute interface
correspondra.
[!] -o, --out-interface nom
Le nom de l'interface par laquelle le paquet est sur le point d'être envoyé (seulement pour les
paquets entrant dans les chaines FORWARD, OUTPUT ou POSTROUTING). Si l'argument « ! » précède le
nom de l'interface, le critère de sélection sera inversé. Si le nom de l'interface se termine par
un « + », toute interface qui commence par ce nom correspondra. Si ce paramètre est omis, toute
interface correspondra.
[!] -f, --fragment
Spécifier ce paramètre signifie que la règle ne fait référence qu'au second fragment IPv4 et les
suivants des paquets fragmentés. Comme il n'y a aucun moyen de déterminer les ports source ou
destination d'un tel paquet (ou le type ICMP), ce paquet ne correspondra à aucune règle qui
spécifie des ports. Si l'argument « ! » précède le symbole « -f », la règle ne recherchera de
correspondance qu'avec les fragments d'en-tête ou les paquets non fragmentés. Ce paramètre est
spécifique à IPv4 et n'est pas disponible dans ip6tables.
-c, --set-counters paquets octets
Ce paramètre permet à l'administrateur d'initialiser les compteurs de paquets et d'octets d'une
règle (au cours des opérations INSERT, APPEND et REPLACE).
AUTRES OPTIONS
Les options supplémentaires suivantes peuvent être spécifiées :
-v, --verbose
Affichage détaillé. Avec cette option, la commande list affiche le nom de l'interface, les options
des règles (s'il y en a) et les masques TOS (Type Of Service). Les compteurs de paquets et
d'octets sont aussi affichés avec le suffixe « K », « M » ou « G » pour les multiplicateurs 1 000,
1 000 000 et 1 000 000 000, respectivement (voir cependant le drapeau -x pour modifier cela). Dans
le cas d'un ajout, d'une insertion, d'une suppression ou d'un remplacement, cette option provoque
l'affichage d'informations détaillées à propos de la ou les règle(s). -v peut aussi être spécifiée
plusieurs fois pour éventuellement afficher des instructions de débogage plus détaillées : si elle
est spécifiée deux fois, iptables-legacy affichera les informations et les entrées de la table
dans le style libiptc, et iptables-nft affichera les règles dans le style netlink (code VM) ; si
elle est spécifiée trois fois, iptables-nft affichera aussi tout message netlink envoyé au noyau.
-V, --version
Afficher la version du programme et l'API du noyau utilisée.
-w, --wait [secondes]
Attendre le verrouillage de xtables. Pour prévenir l'exécution simultanée de plusieurs instances
du programme, ce dernier va tenter d'obtenir un verrouillage exclusif à son lancement. Par défaut,
le programme s'arrêtera s'il ne peut pas obtenir le verrouillage. Avec cette option, le programme
attendra (indéfiniment ou pendant une durée définie par l'argument facultatif secondes) jusqu'à ce
qu'il obtienne le verrouillage exclusif.
-n, --numeric
Afficher les informations sous forme numérique. Les adresses IP et les numéros de port seront
affichés au format numérique. Par défaut, le programme tente de les afficher sous la forme de nom
d'hôte, de nom de réseau ou de service (lorsque c'est possible).
-x, --exact
Afficher les nombres sous forme étendue. Afficher la valeur exacte des compteurs de paquets et
d'octets au lieu de leur valeur arrondie au Ko (multiple de 1000), au Mo (multiple de 1000K) ou au
Go (multiple de 1000M). Cette option n'est pertinente que pour la commande -L.
--line-numbers
Lors de l'affichage des règles, ajouter, au début de chacune d'entre elles, les numéros de ligne
qui correspondent à la position de la règle dans la chaine.
--modprobe=commande
Lors de l'ajout ou de l'insertion de règles dans une chaine, utiliser commande pour charger tout
module nécessaire (cibles, extensions de correspondance, etc.).
FICHIER VERROU
iptables utilise le fichier /run/xtables.lock pour obtenir un verrouillage exclusif à son lancement.
On peut utiliser la variable d'environnement XTABLES_LOCKFILE pour modifier le comportement par défaut.
EXTENSIONS DE CORRESPONDANCE ET DE CIBLE
iptables peut utiliser des versions étendues des recherches de correspondance de paquets et des modules
de cibles. Une liste de ces extensions est disponible dans la page de manuel iptables-extensions(8).
DIAGNOSTICS
Différents messages d'erreur peuvent s'afficher sur la sortie d'erreur standard. Le code de retour de 0
indique un fonctionnement correct. Les erreurs qui semblent être causées par des paramètres de la ligne
de commande non valables ou non pertinents génèrent un code de retour de 2. Les erreurs qui indiquent une
incompatibilité entre le noyau et l'espace utilisateur génèrent un code de retour de 3. Les erreurs qui
indiquent un problème de ressource, comme un verrou occupé, un échec d'allocation de mémoire ou des
messages d'erreur du noyau génèrent un code de retour de 4. Enfin, les autres erreurs génèrent un code de
retour de 1.
BOGUES
Des bogues ? Qu'est-ce que c'est ? ;-) Ok, vous devriez jeter un coup d'œil à
https://bugzilla.netfilter.org/. iptables s'arrêtera avec un code d'erreur de 111 s'il voit qu'il a été
appelé en tant que programme setuid-to-root. iptables ne peut pas être utilisé en toute sécurité de cette
manière, car il fait confiance aux bibliothèques partagées (correspondances, cibles) chargées à
l'exécution ; le chemin de recherche peut être défini en utilisant des variables d'environnement.
COMPATIBILITÉ AVEC IPCHAINS
iptables est très similaire à ipchains de Rusty Russell. La principale différence réside dans le fait que
les chaines INPUT et OUTPUT ne sont parcourues que par les paquets entrant dans l'hôte local et générés
par l'hôte local, respectivement. Ainsi, tout paquet ne parcourt qu'une des trois chaines (sauf pour le
trafic loopback qui implique les deux chaines INPUT et OUTPUT) ; auparavant, un paquet transféré passait
par les trois chaines.
Une autre différence importante réside dans le fait que -i fait référence à l'interface d'entrée, que -o
fait référence à l'interface de sortie et que les deux sont valables pour les paquets qui entrent dans la
chaine FORWARD.
Les différentes formes de NAT ont été séparées ; iptables est un pur filtre de paquets lorsqu'il utilise
la table par défaut « filter » avec des modules d'extension optionnels. Cela devrait éviter l'essentiel
de la confusion sur la combinaison du camouflage d'IP (masquerading) et du filtrage de paquets vue
auparavant. Les options suivantes sont donc maintenant gérées différemment :
-j MASQ
-M -S
-M -L
Il y a plusieurs autres changements dans iptables.
VOIR AUSSI
iptables-apply(8), iptables-save(8), iptables-restore(8), iptables-extensions(8),
Le packet-filtering-HOWTO détaille l'utilisation d'iptables pour le filtrage de paquets, le NAT-HOWTO
détaille le NAT, le netfilter-extensions-HOWTO détaille les extensions qui ne font pas partie de la
distribution standard et le netfilter-hacking-HOWTO détaille le fonctionnement interne de netfilter.
Voir https://www.netfilter.org/.
AUTEURS
Rusty Russell est à l'origine de l'écriture d'iptables en consultation préalable avec Michael Neuling.
Marc Boucher a poussé Rusty à abandonner ipnatctl en mettant en avant un cadriciel de sélection de
paquets générique dans iptables ; puis il a écrit la table mangle, la correspondance basée sur le
propriétaire, le dispositif de marquage et s'est investi çà et là en développant des trucs sympas dans
tous les domaines.
James Morris a écrit la cible TOS et la correspondance basée sur tos.
Jozsef Kadlecsik a écrit la cible REJECT.
Harald Welte a écrit les cibles ULOG et NFQUEUE, la nouvelle bibliothèque libiptc, ainsi que les
correspondances et cibles TTL, DSCP et ECN.
L'Équipe Centrale Netfilter se compose de : Jozsef Kadlecsik, Pablo Neira Ayuso, Eric Leblond, Florian
Westphal et Arturo Borrero Gonzalez. Les membres émérites de l'Équipe Centrale sont : Marc Boucher,
Martin Josefsson, Yasuyuki Kozakai, James Morris, Harald Welte et Rusty Russell.
Page de manuel initialement écrite par Herve Eychenne <rv@wallfire.org>.
VERSION
Cette page de manuel s'applique à iptables/ip6tables 1.8.11.
TRADUCTION
La traduction française de cette page de manuel a été créée par Christophe Donnier, Guillaume Audirac et
Lucien Gentis <lucien.gentis@waika9.com>
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(8)