bon je vais m'expliquer en essayant d'être le plus clair possible :
J'ai deux serveurs FTP sur ma machine, donc sur deux ports dont au moins un non standard.
Cette même machine est protégée par iptables. Donc pour autoriser les connexions passives, j'ai activé le module ip_conntrack_ftp avec l'options ports sur les différents ports concernés.
Mais pour aller sur internet j'ai un routeur (une freebox) qui NAT. Or elle s'attends pas à NATer du FTP sur un autre port que le 21... du coup dans la réponse de la commande PASV, elle ne modifie pas le paquet pour y mettre l'adresse publique.
Mon PC ne faisant pas de NAT directement, le module ip_nat_ftp n'a aucun effet.
Si je met l'option MasqueradeAddress de proftpd pour qu'il renseigne directement cette réponse avec l'adresse publique, c'est le module ip_conntrack_ftp qui ne relate plus les paquets de données par rapport à ceux de commandes.
Pour le moment, la seule parade que j'ai trouvé c'est (pour des IPs autorisées) de faire du prérouting du port 21 vers le port du serveur en entrée et l'inverse en sortie histoire que le NAT de la freebox puisse modifier le paquet et faire réellement son rôle de NAT. Ce qui me dérange c'est de devoir autoriser les IP et surtout de devoir les rajouter une à une dans mon script. Le serveur FTP n'étant pas anonyme, ça fait double authentification (je trouve cela inutile).
J'ai donc pensé que si je pouvais remplacer le NAT de la freebox aprés le routage directement sur mon serveur pour cette réponse exclusivement, ca résoudrait tous mes problèmes...
J'espère être assez clair et précis pour montrer qu'il ne s'agit pas de piratage mais réellement d'un pb de configuration réseau. Que j'ai une solution pour le moment non satisfaisante et que j'aimerais l'améliorer.
Je me trompe peut être pour tc, il doit peut être y avoir un autre moyen.
Je suis ouvert à toutes suggestions...
Merci d'avance,