Iptables cibles et sauts

Target/jump indique à la règle que faire avec un paquet qui est sélectionné avec la section correspondance de la règle. Il existe deux cibles de base, les cibles ACCEPT et DROP, que nous verrons en premier. Cependant, avant, jetons un bref regard sur la façon dont un saut est construit.

La spécification saut est faite exactement de la même façon que la définition cible, sauf qu'elle nécessite une chaîne dans la même table. Pour faire un saut vers une chaîne spécifique, il faut bien sûr que la chaîne existe. Comme nous l'avons déjà expliqué, une chaîne définie par l'utilisateur est créée avec la commande -N. Par exemple, nous créons une chaîne dans la table filter appelée tcp_packets, comme ceci :

iptables -N tcp_packets
    

Nous pouvons alors lui ajouter une cible saut comme :

iptables -A INPUT -p tcp -j tcp_packets
    

Nous pourrons alors faire un saut depuis la chaîne INPUT vers la chaîne tcp_packets et commencer à traverser la chaîne. Quand nous atteignons la fin de cette chaîne, nous retournons vers la chaîne INPUT et le paquet démarre sa traversée de la règle une étape après qu'il ait fait le saut vers l'autre chaîne (tcp_packets dans ce cas). Si le paquet est ACCEPT dans une des sous-chaînes, elle sera ACCEPT dans la chaîne de sur-ensemble également et ne traversera plus aucune des chaînes de sur-ensemble. Cependant, notez que le paquet traversera toutes les autres chaînes des autres tables. Pour plus d'information sur la traversée des tables et des chaînes, voir le chapitre Traversée des tables et des chaînes.

D'un autre côté, les cibles spécifient une action a effectuer sur le paquet en question. Nous pouvons, par exemple, DROP ou ACCEPT selon ce que nous voulons faire. Il existe aussi plusieurs autres actions que nous pouvons effectuer, nous les décrirons plus tard dans cette section. Certaines cibles stopperont le paquet dans sa traversée des chaînes, comme décrit au-dessus. De bons exemples de ces règles sont DROP et ACCEPT. Les règles qui sont stoppées, ne passeront plus à travers aucune règle suivante sur la chaîne ou sur une chaîne supérieure. D'autres cibles, peuvent avoir une action sur le paquet, lequel ensuite continuera à traverser les règles suivantes. De bons exemples de ceci peuvent être les cibles LOG, ULOG et TOS. Ces cibles peuvent journaliser les paquets, les analyser et les passer à d'autres règles dans le même ensemble de chaînes. Nous pouvons, par exemple, vouloir analyser les valeurs TTL et TOS d'un paquet/flux spécifique. Certaines cibles accepterons des options supplémentaires (quelle valeur TOS utiliser, etc.), tandis que d'autres n'en ont pas nécessairement besoin - mais peuvent en inclure si nous le souhaitons (journaliser les préfixes, masquer les ports, etc.). Nous essaierons de couvrir tous ces sujets quand nous verrons la description des cibles. Voyons de quelles sortes de cibles il s'agit.

Cible ACCEPT

Cette cible ne nécessite pas d'autre option. Aussitôt que la spécification de correspondance pour un paquet a été pleinement satisfaite, et que nous spécifions ACCEPT comme cible, la règle est acceptée et ne traversera pas la chaîne ou aucune autre chaîne dans la même table. Notez cependant, qu'un paquet qui a été accepté dans une chaîne peut toujours circuler à travers les chaînes dans d'autres tables, et peut toujours être supprimé à cet endroit là. Il n'y a rien de spécial concernant cette cible, et il n'est pas nécessaire d'y ajouter des options. Pour utiliser cette cible, spécifiez simplement -j ACCEPT.

Note

Fonctionne avec les noyaux Linux 2.3, 2.4, 2.5 et 2.6.