Si un paquet pénètre dans une chaîne comme la chaîne INPUT de la table Filter, vous pouvez spécifier une règle (saut) vers une chaîne différente dans la même table. La nouvelle chaîne doit être spécifique utilisateur, elle ne peut pas être générique comme les chaînes INPUT et FORWARD par exemple. Si nous considérons un pointeur vers une règle d'une chaîne à exécuter, ce pointeur passera de règle en règle, du sommet à la base, jusqu'à ce que la traversée de la chaîne soit close par une cible ou la même chaîne (i-e. FORWARD, INPUT, etc.). Une fois ceci fait, la stratégie par défaut de la chaîne générique sera appliquée.
Si une des ces chaînes pointe vers une autre chaîne spécifique utilisateur, le pointeur sautera cette chaîne et démarrera la traversée des chaînes depuis le sommet jusqu'à la base. Par exemple, voir comment la règle saute de l'étape 3 vers la chaîne 2 dans l'image ci-dessus. Le paquet sélectionne les correspondances contenues dans la règle 3, et cible/saute vers la chaîne 2.
Note | |
---|---|
Les chaînes spécifiques utilisateur ne peuvent pas avoir de stratégie par défaut. Seules les chaînes génériques le peuvent. Ceci peut être contourné en ajoutant une simple règle à la fin de la chaîne, ainsi elle aura une stratégie par défaut. Si aucune règle n'est sélectionnée dans une chaîne spécifique utilisateur, le comportement par défaut sera celui de la chaîne d'origine. Comme vu dans l'image ci-dessus, la règle saute de la chaîne 2 et retourne vers la chaîne 1 règle 4. |
Chaque règle dans une chaîne spécifique utilisateur est traversée jusqu'à ce que, soit une des règles corresponde -- alors la cible spécifie si la traversée se termine ou continue -- soit la fin de la chaîne est atteinte. Si la fin de la chaîne spécifique utilisateur est atteinte, le paquet est envoyé en retour vers la chaîne qui l'invoque. Cette chaîne peut être, soit une chaîne spécifique utilisateur soit une chaîne générique.