[Linux-31] IPTABLES pb de suivis de pakets dans les tables nat

Pascal Hambourg pascal at plouf.fr.eu.org
Lun 22 Fév 19:53:47 CET 2016


Bonsoir,

imcp.ba a écrit :
> pb de suivis de pakets dans la table  nat
> 
>   - en prerout je vais aventuelement un DNAT ( nat de destination )
>   - en postrouting je vais aventuelement un SNAT (nat de source ) (ou un masq)
(...)
>   cependant en postrouting NAT
>   j'aimerai avoir une informatiuon de ce qu'il a pu se produire
>   du cote DNAT prerout
>   (pour facilite la decission postrouting : SNAT ou pas (routage simple ... disymetriuque))

Qu'entends-tu par "routage simple dissymétrique" ?
Note que le "stateful" NAT peut ne pas marcher sur les communications
bidirectionnelles en cas de routage asymétrique, quand les paquets de
réponse ne passent pas par le routeur qui a fait le NAT.

>    je cherche donc une methode pour "marker" logiciellemenet le paquet en prerout
>    et utiliser la marque en postrouting

Plusieurs moyens sont disponibles, parmi lesquels :
- La cible MARK pour marquer les paquets (dans la table mangle, donc
avant la table nat) et la correspondance mark pour tester la marque.

iptables -t mangle -A PREROUTING ... -j MARK --set-mark <marque>
iptables -t nat -A POSTROUTING ... -m mark --mark <marque> ...

- La cible CONNMARK pour marquer la connexion (dans n'importe quelle
table) et la correspondance connmark pour tester les paquets appartenant
à la connexion marquée.

iptables -t nat -A PREROUTING ... -j CONNMARK --set-mark <marque>
iptables -t nat -A POSTROUTING ... -m connmark --mark <marque> ...

- La correspondance conntrack a des options pour tester si une connexion
a subi un DNAT ou SNAT, les adresses et ports source et destination
originels et de réponse.

iptables -t nat -A POSTROUTING ... -m conntrack --ctstate DNAT \
 --ctreplsrc <adresse> ...

(--ctreplsrc teste l'adresse source des paquets de réponse, c'est-à-dire
l'adresse de destination des paquets originels après DNAT)

>     pour instant le automate contrack n'est pas utilise dans le routeur

Si ton routeur fait du "stateful" NAT, le conntrack est forcément actif.



Plus d'informations sur la liste de diffusion Linux-31