Bonjour,

j'ai un petit problème de compréhension lors du transfert de port / masquerading au niveau d'un routeur,

lorsque qu'un paquet est a destination du routeur, celui ci va vérifier les règles iptables, en premier les régles de la chaine PREROUTING de la table nat, puis les regles de la chaine INPUT de la table filter.

Imaginons les deux régles suivantes :

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A PREROUTING -p tcp -i eth0 -d 147.207.12.7 --dport 55 -j DNAT --to 192.168.0.1:55
Ou 147.207.12.7 est l'adresse du routeur.

Imaginons que 192.168.0.1 a déja établit une connexion vers l'exterieur (vers 147.207.12.55) par exemple, donc la régle "POSTROUTING ... MASQUERADE", a crée une "association", il a fait du SNAT, il a transformé

192.168.0.1:10542 en
147.207.12.7:33333
et il a conservé cette association quelque part

de ce faite lorsque 147.207.12.7 répond, en envoyant un paquet à 147.207.12.7:33333, ceux sont d'abord les régles PREROUTING qui sont regardé par le routeur ? ou les associations crée par le MASQUERADING D'IP ?

ca change tout car si c'est c'est les associations faites par le masquerading d'ip, le paquet va etre supprimé si la régle n'existe pas (la elle existe dans notre exemple), alors que si c'est les régles PREROUTING qui sont analysés en premier, le paquet va etre accepté, en supposant que le port de destination est correcte.

Et donc autre question, lorsqu'un transfert de port est effectué, lorsque la régle POSTROUTING MASQUERADE transforme la source du paquet :
192.168.0.1:10542 en
147.207.12.7:*****

comment attribue t-il le port ? il n'en donne pas un qui est déja dans une association, mais est ce qu'il peut donner un port associé au -dport d'une régle PREROUTING DNAT ? si oui il y a aurait un gros problème de configuration, puisque 147.207.12.7:portattribuédansdeuxcas pourrait pointer vers deux machines différentes.

Bref comment marche tout ca ?
merci de votre aide