Le noyeau contient a 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:
_____ Entrée / \ Sortie -->[Décision]--->|FORWARD|-------> [de routage] \_____/ ^ | | v ____ ___ / \ / \ |OUTPUT| |INPUT| \____/ \___/ ^ | | ---->Processus local ----
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 a 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 DROP le paquet.