¿Cómo configurar tu servidor ftp detrás de un router NAT con IP dinámica?

Si has llegado aquí es porque te has encontrado con este gran dilema de como configurar tu servidor ftp detrás de un router NAT con Ip dinámica. Empecemos por explicar que ocurre acá:

FTP es un protocolo para trasferencia de archivos o como sus siglas en ingles lo dicen, File Transfer Protocol. Dicho protocolo es de gran utilidad principalmente cuando queremos enviar archivos a un servidor externo, como para implementar un aplicativo, una pagina web o  cuando queremos hacer bakups de nuestros servidores ya sea en nuestro computador  o en sistemas NAS(ya discutiremos estos sistemas en otro Post).

Ahora bien, el FTP utiliza el modelo cliente-servidor, se comunica nuestro computador o el de un usuario (de ahora en adelante cliente) con un servidor externo. En la imagen a continuación podrás ver como interactúa entre si el cliente con el servidor FTP. 

Aquí es donde empiezan los problemas, si el cliente se va a comunicar con tu servidor requiere una ip para localizarlo, sin embargo, el servidor al estar detrás de un router NAT se asigna una única ip publica para todos los computadores de la red local, entonces, ¿Cómo logramos que al contactar la ip publica lo dirija exclusivamente al equipo que tenemos como servidor FTP dentro de nuestra red local? Acá es donde entra el router NAT a hacer su labor, pero mas adelante lo configuraremos. Por lo pronto vamos a configurar primero nuestro servidor FTP usando Filezilla server.

esquema de red

Pasos

Instalacion de Filezilla Server

En nuestro computador vamos a configurar el servidor FTP, para esto utilizamos filezilla server. En la red encontrarás mas opciones como Titan FTP Server, Serv-U FTP Server, entre otros pero Filezilla es el que se ha tomado su lugar mas fuerte. 

Primero lo instalamos en la carpeta que definamos, dejamos las opciones por defecto e ingresamos una contraseña de administrador. Una vez instalado te encontraras con una pantalla como la siguiente:

Inicio programa

Para ingresar a nuestro nuevo servidor dejamos las opciones por defecto e ingresamos la contraseña creada al momento de instalar el programa:

localhost Para que se conecte a nuestro computador (127.0.0.1)

Port 14147 Para entrar al puerto de administrador

Al conectarnos, dependiendo del caso, nos aparecerán varias advertencias. Las mas comunes son “You appear to be behind a NAT router. Please configure the passive mode settings and forward a range of ports in your router.” y “FTP over TLS is not enabled, users cannot securely log in”  y  NAT router”. La primer advertencia es la que vamos a abordar en este articulo pues sin solucionarla el cliente no podrá comunicarse con nuestro computador. La segunda advertencia nos esta diciendo que la comunicación no se realiza a través de FTPS por lo tanto no es segura, lo abordaremos en otro Post.

Para entender la primera advertencia tenemos que conocer como funciona la comunicación de nuestro computador con la red.

Configuración de Grupos en Filezilla

Vamos a crear un grupo al que le vamos a dar acceso al nuestro servidor FTP. basta con dar click en el boton add, escribir el nombre y activar la casilla de Enable access for users inside group.

Creacion de grupos 1 1
Filezilla v0.8
Creacion de grupos filezila 1
Filezilla v1.1

Una vez creado debemos configurar a que carpeta le vamos a dar acceso a los usuarios que pertenezcan a este grupo, para ello nos vamos a la opcion shared folders del menú izquierdo, seleccionamos el grupo creado y hacemos click en el botón de add (debajo de directories), allí debemos seleccionar la carpeta que queremos compartir por ftp y seleccionar los permisos que le vamos a dar.

Creacion de grupos 2 1 1
Filezilla v0.8
Creacion de grupos 2 filezila 1
Filezilla v1.1

Por ultimo vamos a agregar una capa de seguridad extra para restringir el acceso a nuestro servidor. Solo permitiremos que acceda la ip de nuestro cliente. En nuestro caso estamos configurando un servidor FTP para hacer backups por lo cual tenemos las ips del cliente bastante bien definidas. Para bloquear todas las conexiones entrantes escribiremos un * y excluimos  en el siguiente recuadro las ip que queremos permitir en la conexión, finalizamos haciendo click en OK:

Creacion de grupos 3 1
Filezilla v0.8
Creacion de grupos 3 filezila 1
Filezilla v1.1

Creación de Usuarios en Filezilla

Una vez creado el grupo vamos a crear los usuarios. Nos vamos a la seccion de usuarios, hacemos click en Add, escribimos un nombre y seleccionamos el grupo al que pertenece, posteriormente habilitamos la cuenta y escribimos una password. para el caso de Filezilla v1.1 es importante notar que cambio un poco la gestion de las carpetar, es necesario seleccionar un virtual path, de lo contrario nos enviara un error “Virtual path must be absolute”, para solucionarlo basta con poner “/”.

Creacion de usuarios 1 1
Filezilla v0.8
Creacion de usuarios 1 Filezilla 1
Filezilla v1.1

Al estar dentro de un grupo ya configurado no requerimos hacer mas modificaciones, sin embargo FileZilla nos permite hacer configuraciones especificas por usuario si así se desea. 

Ya terminamos la configuracion de usuarios. Ahora vamos con nuestro equipo. Como lo mencione al inicio, tenemos un router NAT que nos genera ip dinámicas tanto a nuestra ip local como a la ip de red, esto además de tener una ip de red para todos nuestros equipos de nuestra red local, como podrás irte imaginando esto implica imposibilita a nuestro cliente a conectarse con nuestro servidor pues la ip a la que se conecta puede ser de varios equipos diferentes en la red local asignada a esa ip. Por lo cual debemos configurar el modo pasivo en FileZilla, esto hará que nuestro router al recibir una petición por FTP (puerto 21 por defecto) este devuelva una serie de puertos para que el cliente se conecte por alguno de estos aleatoriamente. Para configurar esto nos vamos a edit>settings y en el menú de la izquierda iremos a passive mode settings:

Passive mode settings

Una vez allí vamos a configurar los puertos por los cuales permitiremos que el cliente se conecte, los puertos deben ser mayores al 1024 pues estos están reservados para protocolos del sistema. Una vez seleccionados los puertos activamos la casilla Retrieve external IP address from, esta casilla nos permitirá utilizar la ip que tengamos, al ser una ip dinámica no será la misma siempre, por lo cual permitimos que FileZilla la obtenga por nosotros.

Una vez configurado FileZilla debemos configurar nuestro router para habilitar los puertos que hemos seleccionado en FileZilla. Por lo general nos conectamos a nuestro router mediante la Ip 192.168.0.1 en nuestro navegador. Las credenciales depende de cada router y configuracion del usuario. Si no te la sabes te recomiendo buscar en google por tu modelo de router. Una vez ingresamos nos vamos a la seccion de port Forward e indicamos los puertos que acabamos de seleccionar en Filezilla:

Configuracion router

Como podrás ver escribimos los puertos descritos anteriormente y los dirigimos a la ip local de nuestro computador, si no sabes cual es tu ip abre una línea de comandos (cmd) y escribe ipconfig, es la línea de ipv4.

cmd

Con esto solucionamos el problema de una única ip para toda nuestra red local. La conexión quedaría de la siguiente manera: 

Cliente se conecta a través de la ip de red. La recibe el router, mediante un port forward determina a que equipo en la red local debe enviar la comunicación con los puertos seleccionados en FileZilla.

Por ultimo debemos configurar la la ip estática (local) de nuestro servidor, con esto nos aseguramos que no vaya a cambiar la ip local y el port forward estaría enviando la comunicación a una ip que ya no esta siendo usada. Esto configuración debemos hacerla en nuestro router:

ip local estatica

Con esto hemos terminado. El paso que queda es conectarnos mediante el cliente. La ip sería nuestra ip de red, ¿Cómo saber mi ip de red?, usuario el que creamos en nuestro FileZilla server junto con su contraseña y el puerto 21 si tu cliente lo pide. Si todo ha salido correcto verás una pantalla como esta en tu FileZilla Server con el respectivo estatus de la conexión: 

Conexion OK

Si llegados a este punto te presenta error en la conexión, probablemente el firewall esta impidiendo la conexión con tu equipo, para solucionar esto te invito a ver este Articulo

Ya hemos probado con la ip que tenemos actualmente, pero que pasa cuando nuestra Ip cambie? para esto debemos utilizar un servicio de dynamic DNS (DDNS) si no conoces de este concepto te invito a ver este Articulo, en resumidas cuentas este servicio se encargara de actualizar la ip de nuestro router y se la asignara a un nombre de host, por lo cual nuestro cliente ya no se conectara a una ip especifica sino al nombre del host. 

Vamos a configurar nuestro DDNS para esto hay muchos servicios tanto de pago como gratuitos, te recomiendo revisar las opciones de tu router para evaluar si el servicio de DDNS esta soportado por tu router.

Una vez validado debemos  ingresar a nuestro servicio DDNS y crear el nombre de host y asignarle la ip actual. Posteriormente buscamos en la configuración de nuestro router la opcion de DDNS, seleccionamos nuestro servicio e ingresamos las credenciales. Con esto el router ya se puede conectar con nuestro servicio de DDNS y actualizar la ip al nombre del host.

DDNS

Con esto ya tendriamos configurado nuestro servidor ftp Local.

Subscribe to get 15% discount
×