Si, il y a déjà souci car la seule façon de faire est d’utiliser des ports différents pour chaque serveur, et notamment différents de 21, et ça, FTP n’aime pas. Plus exactement ce sont les pare-feu à état et routeurs NAT qui n’aiment pas, car ils ne gèrent correctement le protocole FTP que si on utilise le port standard 21. Et je ne parle pas des pare-feu qui bloquent carrément les ports non standard.
Le client établit une connexion “de commande” sur le port 21 (par défaut) du serveur. Il envoie des commandes et le serveur lui répond par cette connexion. Quand il faut lister un répertoire, envoyer ou recevoir un fichier, il y a deux modes possibles, actif et passif. C’est le client qui choisit en fonction de ce que le serveur supporte.
En mode passif, le serveur envoie au client l’adresse et le port où le client doit se connecter pour établir une connexion de données. En mode actif, c’est le client qui envoie au serveur l’adresse et le port où le serveur doit se connecter pour établir une connexion de données ; traditionnellement, le serveur établit la connexion à partir de son port source 20 mais ce n’est pas très important.
Les pare-feu et NAT qui gèrent automatiquement le FTP lisent le contenu de la connexion de commande sur le port 21 et connaissent les caractéristiques de la future connexion de données, ce qui leur permet de l’autoriser, rediriger et modifier à la volée l’adresse transmise par la connexion de commande lorsque celle-ci est derrière un routeur NAT.
Quand le pare-feu ou le routeur NAT ne gère pas le FTP ou que la connexion de commande utilise un port autre que 21, alors les connexions de données sont vues comme des connexions indépendantes de la connexion de commande FTP. Pire, dans le cas du NAT l’adresse transmise par la connexion de commande n’est pas modifiée, et la machine qui la reçoit essaie de se connecter à cette adresses injoignable (puisque masquée derrière un NAT).
Autant dire que le mode actif est à oublier dans cette situation si tu ne maîtrise pas la configuration du côté du client.
Ça dépend de son client FTP, s’il se comporte comme un gorer ou est économe en connexion. Au minimum, deux : une connexion de commande qui dure tout le temps de la session, et une connexion de données à la fois pour chaque opération de listage, envoi ou réception.
Au minimum, 1 port par téléchargement en plus du port de la connexion de commande. Mais il vaut mieux prévoir un peu large, car un ports ne redevient pas forcément disponible immédiatement quand la connexion associée est terminée.
Aucun. Un téléchargement = un port.
Attention aux “accélérateurs de téléchargement” : il font plusieurs téléchargements en parallèle pour récupérer chacun un morceau du fichier.
Bon courage, car il ne suffira pas de définir des plages de ports. Il faudra aussi définir l’adresse passive publique sur chaque serveur qui n’a pas le port 21.