Xtables permet à l'administrateur système de créer des tableaux, lesquels contiennent des « chaînes », elles-mêmes composées d'un ensemble de règles de traitement des paquets. Chaque tableau est associé à un type de traitement des paquets (cf. Netfilter). Les paquets suivent séquentiellement chaque règle des chaînes. Une règle dans une chaîne peut provoquer un saut à une autre chaîne (goto ou jump), et ce processus peut être renouvelé autant qu'il le faut, quel que soit le niveau d'imbrication atteint.
Chaque paquet réseau, entrant ou sortant, traverse donc au moins une chaîne.
L'origine du paquet détermine la première chaîne qu'il traverse. Il existe cinq chaînes prédéfinies (associées aux cinq hooks de Netfilter), cependant leur utilisation n'est pas obligatoire dans chaque tableau. Les chaînes prédéfinies ont une politique (par exemple DROP), qui est appliquée au paquet s'il arrive à la fin de la chaîne. L'administrateur système peut créer autant d'autres chaînes qu'il le souhaite. Ces chaînes n'ont pas de politique : si un paquet arrive à la fin de la chaîne, il est renvoyé à la chaîne qui a appelé. Une chaîne peut même être vide (n'avoir aucune règle).
Les cinq chaînes prédéfinies sont les suivantes :
ip route show table local
).Chaque règle d'une chaîne contient la spécification (en anglais : matches) des paquets qui lui correspondent. Elle peut également contenir une action (en anglais : target) (utilisée pour les extensions) ou un jugement (une de plusieurs décisions intégrées). Quand un paquet traverse une chaîne, chaque règle, à son tour, est examinée. Si une règle ne correspond pas au paquet, le paquet est passé à la règle suivante. Si une règle correspond au paquet, elle prend les mesures indiquées par l'action/le jugement, ce qui peut conduire à autoriser le paquet à continuer dans la chaîne ou, à l'inverse, à l'exclure. Les spécifications constituent la grande partie des règles, car elles contiennent les conditions selon lesquelles les paquets sont testés. Ces spécifications peuvent fournir pour toute couche du modèle OSI, comme par exemple les paramètres --mac-source et -p tcp --dport, et il y a aussi des specs indépendantes du protocole, par exemple -m time.
Le paquet continue à parcourir la chaîne jusqu'à ce que :