Los servicios DNS son los encargados de traducir los nombres que se usan en internet por la IP correspondiente del servidor dónde está alojada la página. Las IP de los servidores son estáticas, esto es, que no cambian con el tiempo. En cambio, la IP que tenemos asignado a nuestra conexión de Internet es dinámica (a no ser que tengamos contratado el servicio de IP fija) de tal manera que puede cambiar a lo largo del tiempo (normalmente cuando desconectamos el router y lo volvemos a conectar). Por ello, no podríamos asociar un nombre a nuestra IP en un DNS pues cada vez que cambiara dicha IP tendríamos que modificar la entrada correspondiente en el DNS.
Para esto se utilizan los DNS Dinámicos, que actualizan la IP asociada al nombre cuando cambia la misma. ¿Tienes un dominio con Dreamhost o con alguna otra compañía que te permita gestionar las entradas DNS mediante una API? Si es así, veamos como montar un servicio de DNS Dinámico casero…
Dar de alta subdominio
Lo primero que debemos de hacer es dar de alta el subdominio que usaremos para el DNS dinámico, en algún dominio que tengamos contratado. Por ejemplo, para esta prueba creamos un subdominio llamado home.remolinomental.com. Esto lo hacemos desde el Panel de Dreamhost, menú de la izquierda «Manage Domain->DNS». A continuación añadimos un nuevo registro tipo A, indicando la IP que en principio tenemos en nuestro equipo.
Ten en cuenta que las DNS tardan un tiempo en replicarse por todos los servidores, así que es posible que pruebes y todavía no redireccione a tu PC.
Generar API Key
Para poder actualizar la IP asociada a nuestro subdominio «home.remolinomental.com» vamos a hacer uso de la API que nos proporciona Dreamhost, de tal manera que después podamos automatizarlo y así no tengamos que preocuparnos de actualizar el DNS cuando cambie la IP.
Accedemos a «Home->Web Panel API» y desde ahí generamos una Key nueva seleccionando todas las funciones relativas a la gestión del DNS.
Cuando pulsemos el botón «Generate a new API Key now!» se nos dará de alta la nueva clave y aparecerá en la tabla superior. Copiamos esa clave, junto con el nombre de la misma (en el ejemplo DYNDNS) ya que nos hará falta a continuación para acceder a la API.
Actualizar DNS mediante script PHP
Mediante la API que nos proporciona Dreamhost podemos actualizar las entradas DNS. Hay un script en PHP hecho por Scott Moser que realiza las correspondientes llamadas simplemente pasando los parámetros por la URL del dominio a actualizar y la IP. Lo podéis descargar desde aquí: http://smoser.brickies.net/git/?p=dreamhost-tools.git;a=blob;f=dh-dyndns.php. Para que funcione el script debéis abrirlo con vuestro editor favorito, editar las constantes pertinentes para hacer referencia a vuestra instalación (API Key, API Name y Password) y subirlo a alguna parte de vuestro servidor de Dreamhost.
Si ahora realizamos una llamada al script desde un navegador Web pasándole los parámetros oportunos, veréis como se actualiza la IP asociada a la entrada DNS.
Ejemplo: http://www.remolinomental.com/scripts/dyndns.php?host=home.remolinomental.com&passwd=mipassword
Automatizando todo
Ahora sólo nos queda automatizar de alguna manera las llamadas a este script para que cualquier cambio de IP quede reflejado en la entrada DNS correspondiente. Hay muchas maneras de hacerlo, yo he optado por instalar una tarea (cron) en un NAS que tengo, que funciona con una distribución de Linux (Debian) y está siempre encendido. Lo primero es editar la programación de las tareas mediante el comando «crontab -e». En el editor que nos sale, simplemente añadimos la línea correspondiente para que se ejecute (en este caso) cada hora:
00 * * * * wget «https://www.remolinomental.com/scripts/dyndns.php?host=home.remolinomental.com&passwd=mipassword» –no-check-certificate -O /shares/Public/doDYNDNSRefresh.log -o /shares/Public/doDYNDNSRefresh1.log
Algunos post atrás (post de los Safepoints en el WD) puedes encontrar la explicación detallada del funcionamiento de Crontab.
¡Ah! Una última cosa. Actualmente los servidores de Dreamhost tienen 4 horas de caducidad de las DNS, así que tras el cambio de IP, tendremos que esperar ese tiempo para que el cambio sea efectivo. Una mala noticia si… siempre tenemos la alternativa de contratar un servicio de DNS dinámico de pago 😉
¡Chao!