domingo, 1 de abril de 2012

Redireccionamiento DNS dinámico en Debian GNU/Linux

Hola a todos,

Hoy quiero mostraros la forma en que usando nuestro sistema Debian GNU/Linux, podamos localizar y acceder a nuestro servidor u ordenador personal desde cualquier parte del mundo donde haya una conexión a internet, independientemente de la IP pública que se nos asigne.

Resulta que los que tenemos contratada una ADSL de lo más básica no disponemos de un servicio de IP fija, esto conlleva que la IP pública que nos asigna nuestro ISP está cambiando constantemente, por tanto se hace teóricamente imposible localizar nuestro servidor desde Internet.


Pero estamos de suerte, ya que en la práctica disponemos de un servicio llamado redireccionamiento DNS dinámico, que en palabras de la omnisapiente Wikipedia, es un sistema que permite la actualización en tiempo real de la información sobre nombres de dominio situada en un servidor de nombres. En otras palabras, es un sistema mediante el cual nuestra IP pública, que está cambiando constantemente, se asociará con un nombre que siempre permanecerá constante, por tanto podremos acceder a nuestro servidor sin la necesidad de acceder a través de la IP, lo que, evidentemente, sería imposible teniendo en cuenta que esta nunca permanece constante.

A todo esto podríamos preguntarnos el por qué de esa necesidad de acceder a nuestro servidor u ordenador de casa desde Internet. La principal respuesta, de entre todas las que hay, es fomentar la cultura do it yourself, esto es, hazlo tú mismo. Si tenemos la posibilidad de acceder a nuestro servidor u ordenador personal desde cualquier parte podremos evitar contratar un host de terceros, ahorrándonos el importe destinado a ello y evitando el "problema" de la privacidad.

Pero de entre todas las ventajas de poder localizar nuestro servidor en Internet destaca la de poder montarnos un auténtico prestador de servicios allá donde los haya, servicios tales como FTP, SSH, SFTP, VNC, Web, VPN, nube privada, etc. De esta forma, nuestro servidor permanecerá a nuestro servicio siempre que lo requiramos y en cualquier parte del mundo donde dispongamos de una conexión a la red. Esto, además de ser extremadamente cómodo, nos resuelve de un plumazo el problema de la privacidad, ya que, en caso de montarnos un servicio de alojamiento de datos, estos permanecerán siempre en un servidor controlado exclusivamente por nosotros.

Así pues, ¿cómo procederemos? Inicialmente nos daremos de alta en un servicio de redireccionamiento DNS dinámico, concretamente No-IP, y después instalaremos el cliente No-IP en nuestro sistema Debian GNU/Linux para que se encargue de actualizar periódicamente la información de nuestra cuenta de usuario, esto es, reasociando nuestro nombre de host con nuestra nueva IP, en caso de que esta haya cambiado.

Bien, para empezar debemos acceder con nuestro navegador a la dirección www.no-ip.com. Nos encontraremos con un web similar a esta:


Tendremos pues que acceder al enlace Create Account, situado en la parte superior derecha, justo debajo del formulario para loguearse. Una vez dentro, nos encontraremos con esto:


En esta nueva pantalla hacemos clic en el botón que dice Sign Up, situado en la sección Free DNS. A continuación nos encontraremos con un formulario como el que sigue:


Rellenaremos este formulario con los datos de nuestra futura cuenta. Como podéis ver no difiere mucho del formulario que tenemos que rellenar al hacernos una nueva cuenta de correo electrónico. Por supuesto la cuenta de correo que debemos introducir tiene que ser válida, puesto que tendremos que confirmar nuestra identidad por correo electrónico.

Una vez esté el formulario completado, nos encontraremos con una pantalla similar a la que sigue, en la que se nos pide que accedamos a la bandeja de entrada de nuestro correo y confirmemos nuestra nueva cuenta en No-IP.


Cuando hagamos clic en el enlace correspondiente en el correo que nos han mandado desde No-IP, se nos llevará a una pantalla de confirmación como la siguiente:


Así pues, ya podremos hacer clic en Login en la parte superior derecha de la pantalla, debiendo introducir los datos de nuestra nueva cuenta, para posteriormente encontrarnos con la pantalla principal de nuestra cuenta de usuario:


De entre todas las opciones posibles, nosotros haremos clic en Add a Host, para posteriormente encontrarnos con otro formulario como el que sigue:


En este formulario solo tendremos que rellenar el Hostname, del resto no debemos preocuparnos. En el Hostname, pondremos el nombre que queremos que tenga nuestro Host, seguido del sufijo que nos interesa. En mi lugar yo he escogido el sufijo sytes.net.

Así pues, supongamos que escogemos el nombre de host debianisfreedom ;-)  De esta forma, el nombre completo de nuestro host será debianisfreedom.sytes.net. Con este nombre podremos acceder a nuestro servidor desde cualquier parte del mundo, eso sí, cuando hayamos configurado adecuadamente el cliente en nuestro servidor.

Una vez hayamos confirmado la elección de nuestro nombre de host, nos encontraremos con la siguiente pantalla, donde se nos confirma que nuestro Host ha sido creado con éxito:


Bien, pues el trabajo con nuestra cuenta de usuario en No-IP ha concluido. Es el momento de descargar el cliente desde la propia página en la que nos encontramos. Para ello hacemos clic en el enlace Download Client situado en la parte superior izquierda de la pantalla.

Una vez descargado, descomprimimos el fichero y nos situamos mediante la terminal en el directorio de extracción. A continuación, y sobre ese mismo directorio, ejecutamos:

$ make

Después de unos segundos la compilación terminará, así pues procedemos a su instalación:

$ sudo make install

En este proceso es donde se nos harán las preguntas relativas a nuestra cuenta de usuario en No-IP. Con estos datos, este sencillo programa actualizará periódicamente en nuestra cuenta de usuario la actual dirección IP que tengamos.

Las preguntas que se nos harán son las siguientes:
  • Please enter the login/email string for no-ip.com: Aquí escribiremos la dirección de correo o el nombre de usuario de nuestra cuenta en No-IP.
  • Please enter the password for user debianisfreedom: Aquí escribiremos la contraseña de nuestra cuenta de usuario en No-IP.
  • Only one host [host registrado] is registered to this account. It will be used. Please enter an update interval: [30]: Aquí se nos pregunta la frecuencia con la que se actualizará nuestra cuenta de usuario con la nueva IP que tengamos en ese momento. A mi parecer 30 minutos es perfecto. Por tanto solo bastará con que pulsemos Intro.
  • Do you with to run something at successful update?[N] (y/N): para nuestro cometido bastará con que pulsemos Intro para responder negativamente.

Bien, con esto ya tendremos el cliente No-IP instalado en nuestro sistema Debian GNU/Linux. El problema es que si no lanzamos manualmente el cliente, este no se ejecutará nunca. Así pues, vamos a configurarlo de manera que arranque automáticamente con el inicio del sistema, de forma que ya nunca más tengamos que preocuparnos por arrancarlo de forma manual.

Para ello vamos a utilizar un script creado a tal efecto. Este script se encargará de lanzar el cliente No-IP cuando se le invoque. Para facilitaros la tarea, he colgado este script en Internet para que podáis descargarlo cómodamente sin necesidad de hacer copy & paste. Aquí podéis descargarlo.

Una vez descargado, el script tendrá este aspecto:


Pese a que lo he colgado con permiso de ejecución, no estaría de más que se lo añadieseis vosotros mismos por si acaso:

$ chmod +x noip.sh

A continuación vamos a copiar este script al directorio donde se alojan los scripts de arranque de un sistema Debian GNU/Linux:

$ sudo cp noip.sh /etc/init.d/

Seguidamente nos situamos en dicho directorio:

$ cd /etc/init.d/

Y procedemos a añadir el script a la lista de scripts que se ejecutarán en el arranque del sistema, todo ello con una prioridad 18:

$ sudo update-rc.d noip.sh defaults 18

Una vez completado este paso, ya tendremos configurado nuestro sistema para que arranque el cliente No-IP al inicio del sistema. Sin embargo, si queremos arrancar el cliente ya mismo y sin necesidad de reiniciar, podemos hacerlo así:

$ sudo /etc/init.d/noip.sh start


Bien, con esto ya habremos finalizado la instalación del cliente, y por tanto ya tendremos acceso a nuestro servidor desde Internet, configurado adecuadamente para que el cliente arranque en el inicio del sistema.

Lo que queda ahora es probar que realmente funciona. Para mí, una de las formas más fáciles y sencillas de probar que funciona es instalar el servidor web Apache e intentar acceder a nuestro servidor desde Internet. Para ello procedemos así:

$ sudo aptitude install apache2

Una vez instalado apache y ejecutándose, el siguiente paso es redirigir en nuestro router el puerto 80 a nuestro servidor, o lo que es lo mismo, abrir el puerto 80 sin más xD

Como ya sabéis, cada router es un mundo y se administra de forma diferente. Así que en caso de que no sepáis cómo hacerlo, lo más sencillo es buscar en Internet un tutorial para abrir puertos en ese modelo en concreto. Probablemente en ADSL Ayuda encontréis el tutorial adecuado.

Y en caso de que hagáis uso en vuestro sistema de un cortafuegos como Iptables, o de algún front-end para el mismo, como ufw o gufw, tendréis que redirigir también el tráfico del puerto 80 a vuestro servidor.

Una vez hayáis redirigido el puerto 80 correctamente, pasaremos a acceder vía HTTP a nuestro servidor. Pero para ello es estrictamente necesario que lo hagamos desde un terminal que no esté en nuestra red local, puesto que desde dentro de nuestra red no habrá acceso a nuestro servidor a través del nombre de host.

La forma más sencilla bajo mi punto de vista es acceder desde un smartphone o tablet con 3G, ya que el acceso a internet mediante la red 3G es independiente de nuestra red local, aunque debe quedar claro que no funcionará si estamos conectados por wifi a nuestra red inalámbrica en lugar de al 3G. O sin ir más lejos, podemos acceder a nuestro servidor desde la red inalámbrica de un vecino amable (xD) o sencillamente desde un ordenador que no esté en nuestra red.

Por tanto, una vez hayamos elegido el método de acceso y estemos conectados a una red distinta a la nuestra, accederemos mediante nuestro navegador favorito a la dirección de nuestro host. En el caso de este tutorial sería así:

http://debianisfreedom.sytes.net

Y si todo funciona correctamente, esto es lo que veremos:


Esta es la pantalla de bienvenida del servidor web Apache en caso de no haber hecho modificaciones en el mismo. Si vemos esta pantalla significará que tenemos acceso a nuestro servidor desde Internet. Por tanto, hemos tenido éxito en nuestra empresa.

Ahora que ya tenemos nuestro servidor localizable y accesible desde cualquier parte del mundo, es el momento de empezar a instalar y configurar los servicios que necesitemos. Así que me reservo el derecho de crear más tutos para instalar y configurar dichos servicios. Sin ir más lejos, algunos servicios como una nube personal o un servidor SFTP no tienen desperdicio. Ya veremos cómo ;-)

Un saludo a todos.

11 comentarios:

  1. Excelente, como sempre ;-)

    Menudo curro de tutto :P

    ResponderEliminar
  2. Muchas gracias compa, y en cuanto a lo del curro, este es un juego de niños en comparación con los tutos de XBMC ;-)

    ResponderEliminar
  3. Muchas gracias por comentar Daniel, y me alegro de que funcione :-)

    ResponderEliminar
  4. Muchas gracias por el tutoria,la verdad es que esta muy bien explicado,aunque el script ya no esta subido

    ResponderEliminar
  5. Hola!!! ¿Porque cuando escribo la direccion de mi pagina, solo muestra la pantalla para entrar a la configuracion del modem? y no muestra mi pagina. Gracias

    ResponderEliminar
    Respuestas
    1. Eso pasa porque estás entrando desde la misma red.

      Para poder ver tu página estando dentro de la misma red, tenés que usar http://localhost o http://127.0.0.1 si estás fuera de la red local, entonces ya podés usar la dirección proporcionada por No-IP.

      Saludos.

      Eliminar
  6. Estimado, he seguido tu tutorial para instalar un sftp y voy en la instalación del fichero noip-2.1.9-1
    el tema es que viene el comando MAKE, soy nuevo en esto, me dirijo al directorio pero me al dar $make me dice no se encontró la orden, me puedes ayudar por favor.

    ResponderEliminar
    Respuestas
    1. Hola Emilio, si eres nuevo quizá no sepas que la orden es solo "make" (sin las comillas) el signo $ de dólar, se usa para indicar que ese es el prompt tal y como aparece en la consola.

      Cuando aparece el signo $ es porque el usuario no tiene privilegios. Con el signo # es porque el usuario es administrador.

      Saludos.

      Eliminar