L'option -t
précise la table à utiliser. Par défaut, il s'agit de la table
filter. On peut spécifier une des
tables suivantes avec l'option -t. Remarquez que c'est une
présentation extrêmement rapide du contenu du chapitre Traversée
des tables et des chaînes.
Tableau 9.1. Tables
Table
Explication
nat
La table nat sert principalement
à faire de la traduction d'adresse
réseau. Les paquets soumis au NAT voient leur adresse
modifiée, en accord avec les règles concernées. Les paquets d'un
flux ne traversent cette table qu'une seule fois. En effet, le sort
du premier paquet d'un flux conditionne celui des autres. Si le
premier paquet est accepté, les autres paquets du flux sont soumis
automatiquement au NAT (ou au
camouflage, etc.), donc subissent les mêmes actions que le premier
paquet. Par conséquent, ils ne passeront pas par cette table, mais
seront néanmoins traités de la même façon que le premier paquet du
flux. C'est pour cette raison qu'on déconseille le filtrage dans
cette table. La chaîne PREROUTING
permet de modifier les paquets dès qu'ils entrent dans le pare-feu.
La chaîne OUTPUT permet de modifier
les paquets générés localement (c-à-d. dans le pare-feu) avant
qu'ils n'accèdent à la décision de routage. En dernier lieu, la
chaîne POSTROUTING offre la
possibilité de modifier les paquets juste avant qu'ils ne quittent
le pare-feu.
mangle
Cette table sert à transformer les paquets. Entre autres, on
peut modifier le contenu de differents paquets et celui de leurs
en-têtes. Par exemple, on peut changer les champs TTL, TOS ou MARK. Notez que le champ
MARK n'est pas à
proprement parlé un changement sur le paquet, mais une valeur de
marquage définie dans l'espace du noyau. D'autres règles ou
programmes peuvent s'appuyer sur ce marquage à l'intérieur du
pare-feu pour filtrer ou opérer un routage évolué, tc en est un
exemple. Cette table est constituée de cinq chaînes pré-définies,
qui sont nommées PREROUTING,
POSTROUTING, OUTPUT, INPUT
et FORWARD. La chaîne PREROUTING permet de modifier les paquets juste
quand ils entrent dans le pare-feu mais avant qu'ils n'atteignent
la décision de routage. La chaîne POSTROUTING permet de modifier les paquets
juste après toutes les décisions de routage. La chaîne OUTPUT s'utilise pour transformer les paquets
générés localement avant qu'ils ne sollicitent la décision de
routage. La chaîne INPUT permet de
modifier les paquets une fois qu'ils ont été routés vers la machine
locale, mais avant que l'application de l'espace utilisateur n'ait
réceptionné les données. La chaîne FORWARD permet de modifier les paquets après la
première décision de routage mais avant la dernière. Notez que la
table mangle ne peut en aucun cas servir à une forme de
traduction d'adresse réseau ou de
camouflage, la table nat a été
conçue pour ce genre d'opérations.
filter
La table filter devrait être
exclusivement consacrée à filtrer les paquets. Par exemple, elle
permet de détruire (DROP), journaliser (LOG), accepter (ACCEPT) ou rejeter (REJECT) des paquets sans aucun
problème, de la même manière que dans les autres tables. Cette
table est constituée de trois chaînes pré-définies. La première se
nomme FORWARD et s'applique à tous
les paquets qui ne sont ni générés localement, ni destinés à l'hôte
local (c-à-d. le pare-feu). La chaîne INPUT s'applique à tous les paquets destinés à
l'hôte local (le pare-feu), et au final, OUTPUT s'applique à tous les paquets générés
localement.
raw
La table raw et ses chaînes sont utilisées avant tout autre
table dans Netfilter. Elle fût introduite pour utiliser la cible
NOTRACK. Cette table est plutôt récente et seulement disponible, si
compilée, avec les derniers noyaux 2.6. La table raw contient deux
chaînes. Les chaînes PREROUTING et OUTPUT, qui modifient les
paquets avant qu'ils atteignent les autres sous-systèmes de
Netfilter. La chaîne PREROUTING peut être utilisée pour tous les
paquets entrants sur la machine, ou qui sont transférés (forward),
tandis que la chaîne OUTPUT peut être utilisée pour modifier les
paquets générés localement avant qu'ils atteignent les autres
sous-systèmes de Netfilter.
Les explications précédentes devraient avoir fourni des notions
fondamentales concernant les trois tables disponibles. Celles-ci
s'emploient dans des situations complètement différentes, et vous
devez maîtriser l'utilisation des différentes chaînes qui composent
ces tables. Si vous ne comprenez pas leur utilisation, vous
pourriez créer une faille dans votre pare-feu, dans laquelle
quelqu'un peut s'engouffrer et vous nuire s'il la découvre. Les
tables et chaînes indispensables ont déjà été présentées en détails
dans le chapitre Traversée
des tables et des chaînes. Si vous ne l'avez pas parfaitement
assimilé, je vous conseille de vous y replonger.