Une explication claire et technique concernant le problème des multiples sessions FTP simultanées lors du verrouillage du port de données sur un seul port est ce que je souhaite le plus connaître en profondeur. Quand cela peut-il fonctionner, quand ne fonctionnera-t-il pas, pourquoi cela peut ne pas être recommandé, etc.
Comme ce n’est pas le cas, vous devriez l’essayer vous-même et voir s’il ya d’autres problèmes que j'ai peut-être manqués.
Je suppose que vous pouvez limiter la plage de ports passifs à un seul port . En fait, vous pouvez voir dans cette question que de petites plages de ports sont utilisées dans la pratique . Théoriquement, pour prendre en charge plusieurs connexions simultanées, vous n'avez besoin que des 4 valeurs suivantes: IP local, port local, IP distant, port distant. soient uniques. C’est ainsi que vous discernez entre différentes connexions.
Si vous verrouillez le port de votre serveur sur une valeur unique, la seule variable restante est le port utilisé par le client. Ce n'est pas un problème, tant que le client dispose d'un assez grand nombre de ports éphémères libres . À moins que vous ne fassiez du NAT lourd, vous n'avez pas à vous en préoccuper. Maintenant, soyez averti que ce sera purement théorique : si vous utilisiez plusieurs ports sur votre serveur, vous pourriez multiplier le nombre de connexions simultanées hypothétiques en activantnumber of ports in range
connexions pour un port côté client. Mais cela ne se produira pas dans la pratique, car je doute qu'il existe une implémentation d'un client FTP qui le supporte (car cela n'a pas beaucoup de sens). De plus, si le client doit partager ses ports éphémères de cette manière et ne peut pas en ouvrir un nouveau, il a des problèmes beaucoup plus graves à traiter. Donc, de ce point de vue, vous devriez être totalement sûr d’utiliser un seul port.
Pensons pourquoi un seul port peut ne pas suffire .
Tout d’abord, je pourrais arriver à une situation dans laquelle une implémentation de serveur FTP très problématique emploie uniquement le numéro de port local comme moyen d’identifier le transfert de données du client. Encore une fois, je ne pense pas qu'un FTPd décent ferait cela.
Le vrai problème ( oui, vous pouvez ignorer tout ce qui précède comme une digression majeure ;-)) est que la plage de ports passifs se situe dans une plage non privilégiée .
Cela signifie que le numéro de port que vous avez sélectionné n'est pas réservé en tant que tel . En fait, tout processus utilisateur (ne nécessite pas de privilèges root ) peut le récupérer avant votre serveur FTP. Si vous avez un grand nombre de ports à sélectionner, vous devez en choisir un libre. Si vous êtes obligé d'utiliser le seul et qu'il est déjà utilisé, vous ne pourrez pas gérer les transferts correctement.
Désolé, si la réponse semble un peu trop spéculative. Pour être honnête, j'ai tout fait pour trouver la raison pour laquelle vous ne devriez pas utiliser un seul port et, mis à part le dernier point, je ne pouvais penser à aucune preuve tangible à ce sujet. Néanmoins, vous posez une question intéressante et stimulante.