Table des matières
Netfilter est le module qui fournit sous Linux depuis la version 2.4 les fonctions de pare-feu, de traduction d'adresse (NAT) et d'historisation du trafic réseau. Netfilter fonctionne en mode noyau car il intercepte et manipule les paquets IP avant et après le routage. Iptables est la commande Linux qui permet à un administrateur de configurer Netfilter en mode Utilisateur.
Netfilter est un filtre IP. Un filtre IP opère principalement au niveau de la couche 2 de la Pile de référence TCP/IP. Cependant netfilter peut aussi travailler au niveau de la couche 3. Comme il ne se réduit pas qu'au filtrage en couche 2, il est capable de filtrer les paquets basés sur leurs en-têtes IP (adresses source et destination, TTL, protocole, etc.), mais aussi sur d'autres en-têtes se trouvant dans le paquet (TCP, UDP, etc.), et l'adresse MAC.
Netfilter garde la trace des paquets et regarde s'ils font partie du même flux de données (via numéros d'interclassement, numéros de port, etc.) à peu près comme la vraie pile TCP/IP. On appelle cela traçage de connexion, et grâce à cela il est possible d'effectuer de la traduction d'adresse source et destination (généralement appelé SNAT et DNAT), aussi bien que de la vérification d'état sur les paquets.
Netfilter permet à un administrateur de définir des règles pour préciser comment gérer les paquets réseau. Les règles sont groupées dans des chaînes, qui sont des listes ordonnées de règles. Les chaînes sont elles-même regroupées dans des tables.
Lorsqu'un paquet passe par l'une des chaînes, Netfilter va chercher la première règle. Si la règle correspond au paquet, la recherche s'arrête et la règle décide du sort du paquet. Sinon, on passe à la règle suivante. Si aucune règle ne correspond au paquet, c'est la politique par défaut de la chaîne qui décide du sort du paquet.