Les tables

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 1. Tables

TableExplication
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.