Question à propos d'iptables et du comportement des tables

Question à propos d'iptables et du comportement des tables - réseaux et sécurité - Linux et OS Alternatifs

Marsh Posté le 30-11-2008 à 11:44:36    

Bonjour à tous !
 
     Une question me turlupine: Etant un adepte du traffic shaping, je filtre et classe tous mes packets dans la table POSTROUTING:
 

Code :
  1. iptables -t mangle -A POSTROUTING -o $DEV -p tcp --dport 80 -j MARK --set-mark 21
  2. iptables -t mangle -A POSTROUTING -o $DEV -p tcp --dport 80 -j RETURN


 
Jusqu'ici tout va bien, les paquets sont traités correctement, par contre, je vérifie les paquets selon certains critères, ici le TOS:

Code :
  1. # Table TOSFIX
  2. iptables -t mangle -N tosfix
  3. iptables -t mangle -A tosfix -p tcp -m length --length 0:512 -j RETURN
  4. iptables -t mangle -A tosfix -m limit --limit 2/s --limit-burst 10 -j RETURN
  5. iptables -t mangle -A tosfix -j TOS --set-tos Maximize-Throughput
  6. iptables -t mangle -A tosfix -j RETURN
  7. ...
  8. iptables -t mangle -A POSTROUTING -o $DEV -p tcp -m tcp --tcp-flags SYN,RST,ACK ACK -j ack (première règle qui traite les paquets)


 
Ma question se trouve au niveau du -j RETURN, une fois qu'un paquet est matché par la première règle de la table TOSFIX par exemple (iptables -t mangle -A tosfix -p tcp -m length --length 0:512 -j RETURN), est-ce que le RETURN signifie que le paquet poursuit son bonhomme de chemin dans la table POSTROUTING (pour être traité par les règles éventuelles qui suivent de la table POSTROUTING, comme celle matchant les paquets à destinatin du port 80 dans mon premier exemple) ou alors le paquet sort immédiatement de la table TOSFIX et POSTROUTING pour sortir sur l'interface réseau?
 
Merci à tous !
RedVivi

Reply

Marsh Posté le 30-11-2008 à 11:44:36   

Reply

Marsh Posté le 30-11-2008 à 11:51:35    

Dans mes souvenirs d'iptables, ton paquet quitte la chaine courante à la première règle qui matches :o
Suivant comment il est rentré dans la chaine, soit il passe à la chaine suivante, soit si c'est la dernière chaine il est émis (si non filtré) sur la bonne interface en fonction du routage.
 
Je n'ai pas trop trifouillé avec mangle. Je ne sais donc plus quelle chaine suit :o


---------------
Relax. Take a deep breath !
Reply

Marsh Posté le 30-11-2008 à 12:01:51    

o'gure a écrit :

Dans mes souvenirs d'iptables, ton paquet quitte la chaine courante à la première règle qui matches :o
Suivant comment il est rentré dans la chaine, soit il passe à la chaine suivante, soit si c'est la dernière chaine il est émis (si non filtré) sur la bonne interface en fonction du routage.
 
Je n'ai pas trop trifouillé avec mangle. Je ne sais donc plus quelle chaine suit :o


 
Je suis d'accord avec ce que tu dis, mais est-ce le cas pour une "sous-chaine" de POSTROUTING créee dans mangle ? Ce que je fais (voir code ci-dessous), c'est que je récupère les paquets qui passent dans le POSTROUTING mangle pour l'envoyer vers la chaine TOSFIX ou ACK mangle. Une fois ces paquets traités par les tables TOSFIX et ACK, ils continuent dans le POSTROUTING mangle d'après toi ou sortent vers le POSTROUTING nat (qui suit le POSTROUTING mangle) ?
 

Code :
  1. iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
  2. ...
  3. # Table TOSFIX
  4. iptables -t mangle -N tosfix
  5. iptables -t mangle -A tosfix -p tcp -m length --length 0:512 -j RETURN
  6. iptables -t mangle -A tosfix -m limit --limit 2/s --limit-burst 10 -j RETURN
  7. iptables -t mangle -A tosfix -j TOS --set-tos Maximize-Throughput
  8. iptables -t mangle -A tosfix -j RETURN
  9. # Table ACK
  10. iptables -t mangle -N ack
  11. iptables -t mangle -A ack -m tos ! --tos Normal-Service -j RETURN
  12. iptables -t mangle -A ack -p tcp -m length --length 0:128 -j TOS --set-tos Minimize-Delay
  13. iptables -t mangle -A ack -p tcp -m length --length 128: -j TOS --set-tos Maximize-Throughput
  14. iptables -t mangle -A ack -j RETURN
  15. #Selecting HTTP Traffic
  16. iptables -t mangle -A POSTROUTING -o $DEV -p tcp --dport 80 -j MARK --set-mark 21
  17. iptables -t mangle -A POSTROUTING -o $DEV -p tcp --dport 80 -j RETURN
  18. iptables -t mangle -A POSTROUTING -o $DEV -p tcp --dport 443 -j MARK --set-mark 21
  19. iptables -t mangle -A POSTROUTING -o $DEV -p tcp --dport 443 -j RETURN
  20. # Is our TOS broken? Fix it for TCP ACK and OpenSSH.
  21. iptables -t mangle -A POSTROUTING -o $DEV -p tcp -m tcp --tcp-flags SYN,RST,ACK ACK -j ack
  22. iptables -t mangle -A POSTROUTING -o $DEV -p tcp -m tos --tos Minimize-Delay -j tosfix
  23. # Here we deal with ACK, SYN, and RST packets
  24. # Match SYN and RST packets
  25. iptables -t mangle -A POSTROUTING -o $DEV -p tcp -m tcp --tcp-flags ! SYN,RST,ACK ACK -j MARK --set-mark 20
  26. iptables -t mangle -A POSTROUTING -o $DEV -p tcp -m tcp --tcp-flags ! SYN,RST,ACK ACK -j RETURN
  27. # Match ACK packets
  28. iptables -t mangle -A POSTROUTING -o $DEV -p tcp -m tcp --tcp-flags SYN,RST,ACK ACK -m length --length :128 -m tos --tos Minimize-Delay -j MARK --set-mark 20
  29. iptables -t mangle -A POSTROUTING -o $DEV -p tcp -m tcp --tcp-flags SYN,RST,ACK ACK -m length --length :128 -m tos --tos Minimize-Delay -j RETURN
  30. # Match packets with TOS Minimize-Delay
  31. iptables -t mangle -A POSTROUTING -o $DEV -p tcp -m tos --tos Minimize-Delay -j MARK --set-mark 20
  32. iptables -t mangle -A POSTROUTING -o $DEV -p tcp -m tos --tos Minimize-Delay -j RETURN


Reply

Marsh Posté le 30-11-2008 à 12:08:56    

Ah j'avais loupé ta sous-chaine.
Si ton paquet traverse la sous-chaine sans rencontré de règle qui la matche, il retourne dans la chaine "appelante".
S'il rencontre une regle qui la matche je ne me souviens plus :D


---------------
Relax. Take a deep breath !
Reply

Marsh Posté le 30-11-2008 à 12:14:10    

Après relecture du man ca vient du -j return :

Citation :

RETURN means stop traversing this chain and resume at the next rule in the previous (calling) chain. If the end of a built-in chain is reached or a rule in a built-in chain with target RETURN is matched, the target specified by the chain policy determines the fate of the packet.


Donc tu retournes à la chaine appelante, à la règle suivant directement ton -j TOSFIX :o


Message édité par o'gure le 30-11-2008 à 12:15:17

---------------
Relax. Take a deep breath !
Reply

Marsh Posté le 30-11-2008 à 16:53:02    

Ok super !! Merci pour ces précisions !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed