Una explicación clara y técnica con respecto al problema de múltiples sesiones concurrentes de FTP cuando se bloquea el puerto de datos a un solo puerto es lo que más me interesa saber en profundidad. Cuándo puede funcionar, cuándo no funcionará, por qué puede no recomendarse, etc.
Será una suposición descabellada, ya que no lo he probado, deberías probarlo por ti mismo y ver si hay otros problemas que podría haber pasado por alto.
Supongo que podría limitar el rango de puertos pasivos a un solo puerto . De hecho, puede ver en esta pregunta que en la práctica se utilizan pequeños rangos de puertos . Teóricamente, para admitir múltiples conexiones concurrentes, solo necesita los 4 valores: IP local, puerto local, IP remota, puerto remoto para ser único. Así es como se discierne entre diferentes conexiones.
Si bloquea el puerto de su servidor a un solo valor, la única variable que queda es el puerto utilizado por el cliente. Esto no es un problema, siempre y cuando el cliente tenga un grupo suficientemente grande de puertos efímeros libres para elegir. A menos que esté haciendo algo de NAT pesado, no tiene que preocuparse por esto. Ahora, tenga en cuenta que esto será puramente teórico : si utilizó múltiples puertos en su servidor, podría multiplicar la cantidad de conexiones hipotéticas concurrentes habilitandonumber of ports in range
conexiones por un puerto del lado del cliente. Pero no sucederá en la práctica, ya que dudo que haya una implementación de un cliente FTP que lo admita (porque no tiene mucho sentido). Además, si el cliente tiene que compartir sus puertos efímeros de esta manera y no puede simplemente abrir uno nuevo, entonces tiene que lidiar con problemas mucho más graves. Entonces, desde esta perspectiva, debe estar totalmente seguro usando un solo puerto.
Pensemos por qué un solo puerto puede no ser suficiente .
En primer lugar, podría llegar a una situación en la que una implementación de servidor FTP realmente defectuosa utiliza únicamente el número de puerto local como una forma de identificar la transferencia de datos del cliente. Una vez más, no creo que ningún FTPd decente haga eso.
El verdadero problema ( sí, puede ignorar todo lo anterior como una digresión importante ;-)) es que el rango de puertos pasivos está en un rango no privilegiado .
Esto significa que su número de puerto seleccionado no está reservado per se , y de hecho cualquier proceso de usuario (no necesita privilegios de root ) puede obtenerlo antes de que su servidor FTP lo haga. Si tiene un grupo abundante de puertos para elegir, simplemente tome uno libre al azar. Si está obligado a usar el único y ya está usado, no podrá manejar las transferencias correctamente.
Lo siento, si la respuesta parece un poco especulativa. Para ser honesto, intenté encontrar una razón por la que no debería usar un solo puerto y, aparte de la última parte, no pude pensar en ninguna evidencia contundente en su contra. Sin embargo, una pregunta interesante y desafiante que plantea.