Problemas con «passive mode»
Uno de los términos que se suelen oír cuando se habla de problemas con el ftp es el de passive mode. Aquí vamos a ver de que se trata, y por que es la solución a muchos problemas de conectividad
Como sabemos en toda transferencia ftp interviene un programa servidor y un programa cliente. El programa servidor se ejecuta donde están almacenados los ficheros que se quieren bajar (o donde se almacenarán los que deseamos subir) y el programa cliente es el programa ftp que usamos desde la maquina local, para subir o bajar los ficheros.
En este proceso de comunicación entre cliente y servidor, el cliente puede actuar en modo activo o en modo pasivo.
Una conexión ftp usa dos puertos, abre dos canales: Uno será el puerto de comandos, command port o control port (normalmente puerto 21) por donde se transfieren las órdenes. El otro es el puerto de datos (data port) que es por donde circulan los datos que integran los ficheros (normalmente el puerto 20, pero puede ser cualquiera por debajo del 1024)
modo activo
Cuando usamos ftp en modo activo, tambien considerado modo normal, se establecen dos conexiones distintas. El primer lugar se establece una conexión para la transmisión de comandos (desde cualquier puerto de nuestro ordenador inferior a 1024 hacia el puerto 21 del server) y por esa misma conexión, mediante un comando PORT se indica al server cual es el puerto (distinto) de nuestro ordenador que está a la escucha de los datos.
Entonces, si bajamos algún archivo, es el servidor el que inicia la transmisión de datos, desde su puerto 20 al puerto que le hemos indicado. Se llama modo activo porque la transmisión de datos es iniciada como proceso distinto desde el servidor, hacia el puerto que le hemos indicado.
modo pasivo
En modo pasivo es siempre el programa cliente el que inicia la conexión con el servidor. Al abrir una conexión ftp se abre primero una conexión de control (desde un puerto superior a 1024 de la maquina local al puerto 21 del server). Al pasar a modo pasivo (comando PASV), el cliente pide un puerto abierto al servidor (será otro puerto superior al 1024 del server) y recibida la contestación, será el cliente el que establezca la conexión de datos al server a través de ese puerto.
A modo de resumen podemos decir que en modo pasivo las conexiones son siempre abiertas por el pc cliente, mientras que en modo activo se abren por el que envía los datos (el server si se trata de bajar archivos al pc local, el cliente si se trata de subir archivos al server).
¿por qué supone un problema el modo activo ?
Como hemos visto, en el modo activo se abre una conexión para datos desde el server a la maquina cliente, esto es, una conexión de fuera a dentro.
Entonces, si la maquina cliente está protegida por un firewall, este filtra o bloquea la conexión entrante, al serle un proceso desconocido.
En modo pasivo es el cliente el que inicia ambas conexiones, de control y de datos, con lo cual el firewall no tiene ninguna conexión entrante que filtrar
Passive mode y la linea de comandos
Lamentablemente la utilidad de ftp que viene por defecto con windows 95/98 y que puedes usar en línea de comandos, no dispone de modo pasivo.
Por ello si tienes problemas de conexión y sospechas que es por un firewall, deberás buscar un programa cliente ftp que disponga de esta posibilidad (la inmensa mayoría).
Para terminar con el modo pasivo, parte de un log de conexión:
FTP > PASV FTP < 227 Entering Passive Mode (222,222,222,22,196,39). FTP > LIST
Como ves el server reacciona al comando PASV entrando en modo pasivo e indicando una serie de números (entre paréntesis la segunda linea). Los cuatro primeros bloques de números se corresponden con la IP del servidor. Los dos números restantes son el puerto que el server abre a la escucha para el canal de datos
El puerto esta indicado mediante dos números de 8 bits; traducido a número de 16 bits obtenemos el numero «real».
Esperando haber aclarado algo, animo a compartir y a darle like 😉