Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

nat et ftp

6 réponses
Avatar
Laurent
Bonjour,

Sur un linux, je fait de la translation d'adresse source 1-1 de la
manière suivante :

ip rule add from 192.168.254.0/24 to 10.150.0.0/16 nat 10.157.42.0
ip route add nat 10.157.42.0/24 via 192.168.254.0

Le problème, c'est qu'il faut que je puisse faire du ftp en mode actif.
* est-ce possible ?
* si oui, comment faire (sachant que les ip_conntrack_ftp et ip_nat_ftp
sont chargés, et que ça ne donne rien)

merci pour vos pistes.. :)

6 réponses

Avatar
Pascal Hambourg
Salut,


Sur un linux, je fait de la translation d'adresse source 1-1 de la
manière suivante :

ip rule add from 192.168.254.0/24 to 10.150.0.0/16 nat 10.157.42.0
ip route add nat 10.157.42.0/24 via 192.168.254.0


Tu dois avoir un noyau sacrément vieux, parce que cette fonction n'est
plus disponible depuis la version 2.6.9 du noyau Linux, car considérée
comme gravement cassée. A noter que la prochaine version du noyau à
paraître sous peu, la 2.6.24, introduira une nouvelle forme de NAT sans
état (par opposition au NAT "stateful" de Netfilter/iptables). Je ne
sais pas encore quel programme utilisateur permettra de gérer cette
nouvelle fonctionnalité.

Le problème, c'est qu'il faut que je puisse faire du ftp en mode actif.
* est-ce possible ?


C'est possible, sous certaines conditions.

* si oui, comment faire (sachant que les ip_conntrack_ftp et ip_nat_ftp
sont chargés, et que ça ne donne rien)


Les modules de suivi de connexion et de NAT pour FTP de Netfilter sont
sans effet parce qu'ils ne s'appliquent qu'au NAT "stateful" géré par
Netfilter/iptables, et non au NAT sans état géré par le routage.

Pour faire du FTP en mode actif avec un client "masqué", il faut
configurer le logiciel client pour qu'il annonce l'adresse "apparente"
(celle que voit le serveur comme étant le source de la connexion) au
serveur dans la commande PORT.

Inversement pour faire du FTP en mode passif sur un serveur "masqué", il
faut configurer le logiciel serveur pour qu'il annonce l'adresse
"apparente" (celle sur laquelle le client s'est connecté) dans la
réponse à la commande commande PASV. Alternativement, si le serveur le
supporte on peut utiliser le mode passif étendu (EPSV) qui n'annonce pas
l'adresse du serveur puisque celle-ci est redondante, mais c'est à
l'initiative du client d'utiliser ce mode.

Avatar
Laurent
Tu dois avoir un noyau sacrément vieux, parce que cette fonction n'est
plus disponible depuis la version 2.6.9 du noyau Linux, car considérée
comme gravement cassée.


J'avoue : le noyau est antérieur (2.4.22 !) :)
Mais la machine fonctionne en prod et n'est pas "hypersensible" dans la
mesure où elle n'est pas reliée à internet, alors comme elle fonctionne
bien comme ça, elle reste avec une vieillerie..
Maintenant, c'est peut être l'occasion, justement :)

* si oui, comment faire (sachant que les ip_conntrack_ftp et
ip_nat_ftp sont chargés, et que ça ne donne rien)


Les modules de suivi de connexion et de NAT pour FTP de Netfilter sont
sans effet parce qu'ils ne s'appliquent qu'au NAT "stateful" géré par
Netfilter/iptables, et non au NAT sans état géré par le routage.
Ah... il faudrait donc que j'utilise iptables plutôt que le routage tel

que je le fait actuellement ?
Dans ce cas, les modules de suivi de connexion résoudraient mon problème ?

Je ne dois toucher qu'à cette partie là, les clients, comme les serveurs
ftp étant immuables, et ne fonctionnent qu'en mode actif :)


Avatar
Pascal Hambourg

Les modules de suivi de connexion et de NAT pour FTP de Netfilter sont
sans effet parce qu'ils ne s'appliquent qu'au NAT "stateful" géré par
Netfilter/iptables, et non au NAT sans état géré par le routage.


Ah... il faudrait donc que j'utilise iptables plutôt que le routage tel
que je le fait actuellement ?
Dans ce cas, les modules de suivi de connexion résoudraient mon problème ?

Je ne dois toucher qu'à cette partie là, les clients, comme les serveurs
ftp étant immuables, et ne fonctionnent qu'en mode actif :)


Dans ce cas le NAT d'iptables peut être une solution, à condition que
les connexions de commande FTP ne soient pas chiffrées (FTP sur TLS/SSL
ou FTPS).

Si la correspondance 1:1 entre les adresses des deux blocs
192.168.254.0/24 et 10.157.42.0/24 est indispensable, j'aurais bien
suggéré la cible NETMAP, mais celle-ci n'est disponible en standard que
dans les noyaux de la série 2.6. Pour l'ajouter à un noyau de la série
2.4, il faut patcher les sources avec le patch-o-matic-ng de
www.netfilter.org et recompiler. Mais il faut une version ou un
instantané du patch-o-matic suffisamment ancien(ne) car le patch NETMAP
a été supprimé le 12 juin 2006, étant donné qu'il était inclus dans le
noyau 2.6 depuis longtemps.

Dernière chose, il faut aussi une version d'iptables 1.2.9 minimum pour
la prise en charge de NETMAP.


Avatar
Laurent
Dans ce cas le NAT d'iptables peut être une solution, à condition que
les connexions de commande FTP ne soient pas chiffrées (FTP sur TLS/SSL
ou FTPS).
C'est le cas.. pas de chiffrage.


Bon, je vais creuser tout ça...

merci beaucoup :)

Avatar
Pascal Hambourg

Dans ce cas le NAT d'iptables peut être une solution, à condition que
les connexions de commande FTP ne soient pas chiffrées (FTP sur
TLS/SSL ou FTPS).


C'est le cas.. pas de chiffrage.


Je suppose que tu veux dire "chiffrement". ;-)


Avatar
Laurent
Je suppose que tu veux dire "chiffrement". ;-)
Non, en fait je voulais dire "cryptage" :P