pas mieux que Merlin concernant le probleme, par contre je pense que ça ne ferait pas de mal d’aller un peu plus loin dans les explications, avec un petit résumé du fonctionnement du protocole ftp et de la différence entre les modes passifs et actifs.
dans les deux cas, le protocole ftp utilise deux connections: la première est la connection de commandes, qui sert à la communication entre le client et le serveur, et la seconde est la communication de données, qui sert au transfert de fichier en lui même, ainsi qu’à quelques autres petits trucs (comme le transfert de la liste des fichiers d’un dossier)
dans les deux modes (actif et passif), la connection de données est initiée de la même façon: le serveur écoute sur un port (21 ou autre), et le client vient se connecter sur ce port.
la différence est dans la manière de faire la connection de données.
commençons par le mode actif, qui est le mode de fonctionnement “normal” du ftp.
une fois la connection de commandes effectuée, le client va ouvrir un port au hasard (plus ou moins) sur lequel il va écouter, et envoyer le numéro de ce port au serveur.
le serveur va alors aller se connecter au client sur ce port, en utilisant le port sortant 20.
c’est là que souvent il y a confuse, et un certain nombre de gens pensent que c’est le client qui vient se connecter sur le port 20 du serveur, alors que pas du tout.
il ne sert donc à rien d’autoriser le port 20 en entrée dans son routeur/firewall, ça ne marchera pas mieux.
le mode actif est inutilisable lorsque le client est derrière un firewall/routeur: en effet, si le port qu’il a déterminé au hasard n’est pas ouvert/redirigé, le serveur ne va pas réussir à s’y connecter et tout transfert de fichier sera impossible.
le mode passif est fait pour remédier à cela: au lieu que le client soit obligé d’ouvrir un port, c’est le serveur qui en ouvre un second, déterminé au hasard également (dans une certaine fourchette dépendant des serveurs, qui est parfois configurable: en l’occurence 5000 à 5100 dans l’exemple de Merlin).
il envoit le numero de ce port au client, qui vient s’y connecter.
le probleme est alors évident: si le serveur est derrière un firewall/routeur qui ne redirige pas le port en question, la connection ne peut pas s’effectuer.
et si le client et le serveur sont tous deux dans ce cas, on se retrouve coincé: ni le mode passif ni le mode actif ne fonctionne.
d’ou l’interet de déterminer soi-même une fourchette de ports que le serveur utilisera lorsque le client demandera le mode passif: on peut ainsi rediriger toute cette fourchette vers la machine sur laquelle se trouve le serveur, et ainsi faire fonctionner le mode passif.
si le logiciel-serveur ne permet pas de configurer ça, on se retrouve obligé de redirigé un nombre astronomique de ports, ce qui n’est pas super malin.
en passant, si quelqu’un connait un bon serveur ftp gratuit (voir libre?) sous windows qui permet de configurer cette fourchette, ça me serait bien utile…