DNS dinámica con DynDns


En este artículo se explica cómo tener vuestra máquina siempre accesible independientemente de que vuestro proveedor os cambie la dirección IP cada vez que os conectais.
Actualización: Información de cómo hacerlo funcionar con DHCP-client y PPP.

Existen en internet varios proveedores de dominios gratuitos que, además, nos facilitan la administración del registro DNS asociado a ese dominio. El proveedor que he elegido para este artículo es DynDns. Este proveedor nos permite elegir un dominio del tipo midominio.dyndns.org y administrarlo nosotros mismos mediante una interfaz web. Todo ello de manera gratuita. Sólo hay que darse de alta en el servicio.

Una vez que os hayais dado de alta y conseguido un dominio de esos habrá que instalar en vuestra máquina un cliente que os permita acceder a los servicios de administración de DynDns sin tener que usar el navegador. Este cliente se llama ddclient y si sois usuarios de Debian podreis instalarlo de manera apt-trivial:

# apt-get install ddclient
Este pequeño programilla es muy útil ya que, además de permitir el refresco de la IP, tiene una opción para guardar en un fichero-cache los parámetros de la última actualización. Con esto podremos evitar, por ejemplo, actualizar repetidamente nuestro registro en DynDns con la misma IP. Esto además de ser inutil, puede provocar que nos suspendan temporalmente el servicio por abuso. Que los señores de DynDns son muy quisquillosos con estas cosas (lo que no me extraña en absoluto tratándose de un servicio gratuito).

Usar el ddclient es muy sencillo. Yo lo uso de la siguiente manera:

ddclient -ip nuevaip -host midominio.dyndns.org -refresh -cache /var/cache/ddclient/ddclient.cache

Así nos aseguramos de no refrescar el registro dos veces seguidas con la misma IP ya que usamos un fichero de cache para almacenar la IP que está actualmente en el registro de DynDns.

Ahora ya sólo queda ejecutar de manera automática el ddclient cada vez que se efectua un cambio en nuestra IP. Esto se realiza de forma diferente segun la manera que tenga nuestro proveedor de asignarnos la IP. Yo como uso ONO tengo que conseguir la IP vía DHCP y uso el programa pump, que es un cliente de DHCP. Este cliente (y creo que muchos otros) permite ejecutar un script cada vez que nos cambian la IP. Para hacer esto basta con agregar esta línea en el fichero /etc/pump.conf:

script /path/a/nuestro/script

Y si acaso el fichero /etc/pump.conf no está creado pues lo creais vosotros mismos y poneis la línea esa dentro.

De esta manera, el pump llamará al script /path/a/nuestro/script cada vez que ocurra algo con la IP y le pasará una serie de parámetros según la acción que se haya realizado con la IP. Si miramos el man pone:

Condition arg1 arg2 arg3
lease up eth0 1.2.3.4
renewal renewal eth0 2.3.4.5
release down eth0

When events occur in negotiation with the server, calls the given executable or
script. Scripts are called when a lease is granted, when a renewal is negotiated,
and when the interface is brought down and the address released. The scripts are
called with two or three arguments, depending on the condition, as documented in the
table above.

En resumen, se le pasan 3 parámetros al script. El primero es la acción que se ha realizado sobre la IP. El segundo informa del dispositivo sobre el que se ha actuado. Y el tercero informa de la nueva IP en el caso de que se haya renovado o pedido por primera vez.

Vosotros mismos podeis haceros vuestro script, pero aquí os pongo uno de ejemplo que es el que uso yo. Es muy sencillo, y lo único que hace es mirar el primer argumento, si es up o renewal entonces llama al ddclient pasándole el tercer argumento como la nueva IP que queremos que se ponga en el registro de DynDns:

#!/bin/sh

if [ “$1” = “up” -o “$1” = “renewal” ]; then
ddclient -ip $3 -host celaeno.dyndns.org -refresh -cache /var/cache/ddclient/ddclient.cache
fi

Una vez hecho todo esto ya sólo os queda forzar una nueva petición DHCP y ya tendreis vuestro dominio ligado a vuestra IP.

Con ppp también se puede!
Como bien dijo Ricardo en la Bulmailing, en la documentación del ddclient vienen ejemplos de cómo hacerlo funcionar con ppp.

Y con el dhcp-client…
Esta ya es contribución de MAC. Para hacerlo funcionar con el ddclient basta con crear el archivo /etc/dhclient-exit-hooks, que viene a ser la equivalencia al script que ejecutamos con el pump. Pero ahora los parámetros se le pasan como variables de entorno:

#!/bin/sh

if [ “$reason” = “BOUND” -o “$reason” = “RENEW” ]; then
ddclient -ip $new_ip_address -refresh -cache /var/cache/ddclient/ddclient.cache
fi

Este post ha sido traido de forma automatica desde https://web.archive.org/web/20140625063149/http:/bulma.net/body.phtml?nIdNoticia=834 por un robot nigromante, si crees que puede mejorarse, por favor, contactanos.


Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.