iptables et cible RETURN


16

Je ne comprends pas ce que fait la RETURNcible dans une commande iptables.

Le doute vient de ce guide où il dit:

Une chaîne est un ensemble de règles par rapport auxquelles un paquet est vérifié séquentiellement. Lorsque le paquet correspond à l'une des règles, il exécute l'action associée et n'est pas comparé aux autres règles de la chaîne.

Donc, si un paquet correspond à une règle et qu'il arrête de vérifier d'autres règles, pourquoi ai-je besoin d'un RETURN?

Par exemple, j'ai trouvé cela sur Internet:

iptables -A PREROUTING -t mangle -i wlan0 -s 192.168.1.10 -j MARK --set-mark 30;
iptables -A PREROUTING -t mangle -i wlan0 -s 192.168.1.10 -j RETURN;

Pourquoi ai-je besoin RETURN? Si un paquet correspond à la première règle, il arrête automatiquement l'exécution d'autres règles.

Réponses:


33

Traversent une chaîne Packets jusqu'à ce qu'ils atteignent ACCEPT, DROP, REJECTou RETURN. Ils ne s'arrêtent pas sur une correspondance, sauf si cette correspondance contient une action de fin. Dans votre exemple, un paquet correspondant à la première règle sera marqué, mais sera ensuite examiné (et éventuellement traité) par la deuxième règle.

À titre purement indicatif, voici les sections pertinentes de la page de manuel :

Une règle de pare-feu spécifie les critères d'un paquet et d'une cible. Si le paquet ne correspond pas, la règle suivante de la chaîne est examinée; si elle correspond, la règle suivante est spécifiée par la valeur de la cible, qui peut être le nom d'une chaîne définie par l'utilisateur ou l'une des valeurs spéciales ACCEPT, DROP[, REJECT] QUEUEou RETURN.

  • ACCEPT signifie laisser passer le paquet.
  • DROP moyen de laisser tomber le paquet par terre, c'est-à-dire de le jeter et de ne pas envoyer de réponse
  • [ REJECTest utilisé pour renvoyer un paquet d'erreur en réponse au paquet apparié: sinon il est équivalent à DROPdonc c'est un TARGET de terminaison, terminant la traversée de la règle.]
  • QUEUE signifie passer le paquet à l'espace utilisateur.
  • RETURNsignifie arrêter de parcourir cette chaîne et reprendre à la règle suivante de la chaîne précédente (appelante). Si la fin d'une chaîne intégrée est atteinte ou si une règle d'une chaîne intégrée avec cible RETURNest mise en correspondance, la cible spécifiée par la stratégie de chaîne détermine le sort du paquet.

En réponse à votre préoccupation spécifique, je dirais que votre guide est trompeur. À moins que "l'action associée" ne soit l'une des cinq actions terminales, les paquets continueront à circuler à travers la chaîne jusqu'à ce qu'ils atteignent un implicite RETURNà la fin.


Je voterais cette réponse plus d'une fois si je le pouvais.
JakeRobb

Il convient de noter que l'action par défaut pour les chaînes définies par l'utilisateur est RETOUR.
Stark

@stark n'est-ce pas ce que dit la dernière phrase?
roaima

1
Ah, maintenant je comprends mieux DROP. Cela explique pourquoi je n'ai pas non plus d'espace pour les jambes sous ce bureau.
Jonathan Neufeld
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.