FTP mode passif

Fermé
Haldir de lorienne - 21 avril 2011 à 17:14
 Haldir de lorienne - 25 avril 2011 à 14:01
Je souhaite expliquer la difference entre le mode actif et passif en FTP mais je n'arrive pas à assimuler une notion.

Il est dit que le premier avantage du mode passif (client qui initialise le canal de données) est lorsque que le poste client se trouve derrière un routeur qui fait du NAT...

Le hic, c'est que j'ai du mal à comprendre pourquoi le fait que le client initialise la canal de données (difference entre les 2 modes) permet de gérer le NAT entre les 2.
En mode actif, ca parait évident que le serveur ne connaisse que l'@IP du routeur passerelle pour répondre, explicant que le mode actif ne fonctionne pas avec un routeur NAt au niveau du client.

Mais pour le mode passif....

Merci si quelqu'un peut m'éclairer sur la question.
A voir également:

2 réponses

brupala Messages postés 109454 Date d'inscription lundi 16 juillet 2001 Statut Membre Dernière intervention 26 avril 2024 13 623
21 avril 2011 à 17:42
Salut,
Essayons:
en mode passif, la connexion de données s'établit du client vers le serveur au contraire du mode actif classique où c'est le serveur qui établit la connexion de données vers le client.
Le problème vient du fait qu'avec un nat dynamique, il faut que le routeur nat soit configuré pour forwarder le port qui va bien vers l'adresse ip (locale) qui va bien.
le problème avec le ftp actif, du moins quand le client fournit au serveur via la commande port le port de données et l'adresse ip sur lesquels il attend la connexion.
si le client ne donne pas la commande port, le port par défaut est utilisé par le serveur soit port de commandes -1 donc 20 par défaut, mais ceci ne permet qu'une seule connexion données à la fois et ça limite grandement la capacité, les clients ftp modernes utilisent donc toujours la commande port (rarement configurable).
Avec la commande port, qui est le pendant côté client de la réponse à PASV côté serveur, le client indique donc son port d'écoute (à partir de 1025 par défaut) au serveur, mais ce numéro change à chaque transfert et à moins de forwarder toute une plage (disons une vingtaine de ports dans le routeur nat, il faut que celui ci soit capable de lire la commande port et de forwarder tout seul (autoconfiguration) le port indiqué vers l'adresse ip du client.
De plus le client indique alors sa propre adresse privée au serveur, celui ci ne pourra pas l'atteindre directement probablement: il faut donc soit configurer le client pour qu'il transmette son adresse publique (qu'il ne connait pas à la base) soit que le nat bidouille la commande pour remplacer l'adresse privée par l'adresse publique, c'est le rôle d'un proxy mais pas d'un routeur qui n'a pas à intervenir sur les couches supérieures à sa fonction.
tandis qu'en mode passif côté client, le nat se configure tout seul vu que la connexion est sortante, par contre le problème se posera de la même façon côté serveur si celui ci est derrière un routeur nat aussi.
Du fait que ftp mélange allègrement les informations des couches 3 et 4 (ip et port tcp) dans la couche applicative (la 7) il est très difficile à faire fonctionner derrière un nat ou un firewall qui doivent interpréter les commandes PORT (côté client) ou réponse à PASV (côté serveur) pour débloquer le port cité.
Tâche encore plus difficile quand il s'agit de ftps et le les commandes sont cryptées donc le routeur ne sait pas les lire, la seule solution est alors de forwarder en dur une plage entière de port (et configurer client ou serveur pour n'utiliser que ceux là), au détriment de la sécurité, bien entendu.
0
Haldir de lorienne
21 avril 2011 à 19:44
oki, je te remercie grandement pour tes explications...

donc en réalité, il faut dire que le mode passif est bien POUR une configuration faisant intervenir un routeur NAT au niveau du client
?

moi je me posais la question car je me disais qu'en mode passif, même si c'est des connexions sortantes depuis le client vers le serveur, d'où on s'en fiche s'il y a du nat coté client, faut bien que le serveur réponde à ces requetes et qu'il envoi les paquets en retour...et là le problème se repose, le serveur va connaitre que l'@ Ip publique du routeur nat...non ?

merci
0
brupala Messages postés 109454 Date d'inscription lundi 16 juillet 2001 Statut Membre Dernière intervention 26 avril 2024 13 623
Modifié par brupala le 21/04/2011 à 21:00
c'est vrai mais à ce moment là le routeur nat connait déjà la connexion et a établi une relation dans sa table entre adresse externe et adresse interne pour ce flux.
tandis que dans l'autre sens (si le premier paquet vient de l'extérieur), il ne sait pas à quelle adresse locale envoyer la connexion.
sauf si c'est un nat statique ( ou un port forwarding) et que la relation interne externe est déjà dans sa configuration.
0
Haldir de lorienne
25 avril 2011 à 14:01
merci bcp !!!
0