a clear and technical explanation with regards to the multiple concurrent FTP sessions issue when locking the data port to only one port is what I am most interested in knowing in depth. When can it work, when will it not work, why it may not be recommended, etc.
Este será um palpite, já que eu não testei, você deve tentar por si mesmo e ver se há outros problemas que eu possa ter perdido.
Suponho que você pode limitar o intervalo de portas passivas a uma única porta . Na verdade, você pode ver em esta questão que intervalos de porta pequenos são usados na prática . Teoricamente, para suportar múltiplas conexões simultâneas, você só precisa dos 4 valores: IP local, porta local, IP remoto, porta remota para ser único. É assim que você discerne entre diferentes conexões.
Se você bloquear a porta em seu servidor para 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 gratuitas escolher a partir de. A menos que esteja fazendo algum NAT pesado, você não precisa se preocupar com isso. Agora, esteja avisado que isso será puramente material teórico : se você usou várias portas em seu servidor, você poderia multiplicar o número de conexões simultâneas hipotéticas ativando number 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 qualquer implementação de um cliente FTP que suporte isso (porque não faz muito sentido). Além disso, se o cliente tiver que compartilhar seus portos efêmeros dessa maneira e não puder simplesmente abrir um novo, ele terá problemas muito mais sérios para lidar. Então, dessa perspectiva, você deve estar totalmente seguro usando uma única porta.
Vamos pensar por que uma única porta pode não ser suficiente .
Primeiro de tudo, eu poderia chegar a uma situação em que uma implementação de servidor FTP realmente buggy usa apenas o número da porta local, como forma de identificar a transferência de dados do cliente. Mais uma vez, eu não acho que qualquer FTPd decente faria isso.O problema real ( sim, você pode desconsiderar todos os acima como uma grande digressão ;-)) é que o intervalo de portas passivas está em um nível não privilegiado intervalo .
Isto significa que o seu número de porta selecionado não está reservado per se , e de fato qualquer processo do usuário (não precisa de privilégios root ) pode pegá-lo antes do seu servidor FTP. Se você tiver um pool abundante de portas para selecionar, basta pegar um aleatório livre. Se você for obrigado a usar o único e já estiver sendo usado, não será capaz de lidar com as transferências corretamente.
Desculpe, se a resposta parece um pouco especulativa demais. Para ser honesto, eu tentei arduamente encontrar uma razão por que você não deveria usar uma única porta e, além do último bit, eu não conseguia pensar em nenhuma evidência strong contra ela. No entanto, uma questão interessante e desafiadora você coloca.