uma explicação clara e técnica sobre o problema de várias sessões simultâneas de FTP ao bloquear a porta de dados em apenas uma porta é o que mais me interessa conhecer em profundidade. Quando pode funcionar, quando não funciona, por que não é recomendado, etc.
Este será um palpite, já que eu não testei, você deve tentar por si mesmo e verificar se há outros problemas que talvez eu tenha esquecido.
Suponho que você possa limitar o intervalo de portas passivas a uma única porta . De fato, você pode ver nesta pergunta que pequenos intervalos de portas são usados na prática . Teoricamente, para oferecer suporte a várias conexões simultâneas, você só precisa dos 4 valores: IP local, porta local, IP remoto, porta remota para ser exclusivo. É assim que você discerne entre diferentes conexões.
Se você bloquear a porta do servidor em um único valor, a única variável restante será a porta usada pelo cliente. Isso não é um problema, desde que o cliente tenha um pool grande o suficiente de portas efêmeras livres para escolher. A menos que esteja fazendo um NAT pesado, você não precisa se preocupar com isso. Agora, esteja avisado de que isso será puramente teórico : se você usou várias portas no servidor, pode multiplicar o número de conexões simultâneas hipotéticas ativandonumber of ports in range
conexões por uma porta do lado do cliente. Mas isso não acontecerá na prática, pois duvido que exista alguma implementação de um cliente FTP que suporte isso (porque não faz muito sentido). Além disso, se o cliente tiver que compartilhar suas portas efêmeras dessa maneira e não puder simplesmente abrir uma nova, ele terá problemas muito mais graves. Portanto, dessa perspectiva, você deve estar totalmente seguro usando uma única porta.
Vamos pensar por que uma única porta pode não ser suficiente .
Antes de tudo, eu poderia me deparar com uma situação em que uma implementação de servidor FTP realmente incorreta usa apenas o número da porta local como uma maneira de identificar a transferência de dados do cliente. Mais uma vez, acho que nenhum FTPd decente faria isso.
O problema real ( sim, você pode desconsiderar tudo acima como uma digressão principal ;-)) é que o intervalo de portas passivas está em um intervalo não privilegiado .
Isso significa que o número da porta selecionada não é reservado em si e, de fato, qualquer processo do usuário (não precisa de privilégios de root ) pode obtê-lo antes do servidor FTP. Se você tem um conjunto abundante de portas para escolher, basta pegar uma gratuita e aleatória. Se você for obrigado a usar o único e ele já estiver sendo usado, não poderá lidar com as transferências corretamente.
Desculpe, se a resposta parece um pouco especulativa. Para ser sincero, tentei muito encontrar uma razão pela qual você não deveria usar uma única porta e, além da última parte, não consegui pensar em nenhuma evidência concreta contra ela. No entanto, uma pergunta interessante e desafiadora que você coloca.