Le noyeau contient à la base trois listes de règles dans la
table `filter'; ces listes sont appelées chaines de firewall
ou juste chaines. Les trois chaines sont appelées
INPUT, OUTPUT et FORWARD.
C'est vraiment différent de comment les noyeaux 2.0 et 2.2
fonctionnaient!
Pour les fans de l'art ASCII, les chaines sont arrangées comme
suit:
Les trois cercles représentent les trois chaines mentionnées
ci-dessus. Quand un paquet arrives au cercle dans le diagramme,
cette chaine est examinée pour decider du sort du paquet. Si la
chaine dit de DROP le paquet il est tué ici, mais si la chaine dit
ACCEPT le paquet, il continue sa traversée du diagramme.
Une chaine est un checklist de règles. Chaque règle dit
`si l'en-tète du paquet est comme ca, voila quoi faire avec le
paquet'. Si la règle ne convient pas au paquet, alors la règle
suivante est examinée. Finallement si il ne reste plus de chaines à
examiner, le noyau regarde la règle par défaut de la chaine
pour décider quoi faire. Dans un système conscienscieux de la
sécurité, cette règle par défaut dit de DROPer le paquet.
Quand un paquet arrives (on va dire par la carte Ethernet) le
noyau regarde en premier la destination de ce paquet : c'est appelé
le `routage'.
Si c'est destiné à cette machine, le paquet passe vers le bas
dans le diagramme, vers la chaine INPUT. Si il la passe, les
processus qui attendent le paquet le recevront.
Autrement, si le noyau n'a pas le forwarding autorisé, ou qu'il
ne sait pas comment forwarder le paquet, le paquet est tué. Si le
forwarding est autorisé, et que le paquet est destiné à une autre
interface réseau (si tu en as une autre), le paquet va directement
à la chaine FORWARD dans le diagramme. Si il est ACCEPTé, il sera
envoyé.
Finallement, un programme qui tourne sur la machine peut
envoyer des paquets. Ces paquets passeront par la chaine OUTPUT
immédiatement : si elle dit ACCEPT, alors le paquet continue vers
l'interface à laquelle il est destiné.