Duck DNS

¿Alguna vez se te ha planteado el problema de querer acceder a algún dispositivo (por ejemplo un servidor) de tu red local desde el exterior, pero tu proveedor de Internet te ha asignado una IP dinámica? Para este caso existe Duck DNS el servidor DDNS para IP dinámica. Esta solución gratuita te va a ahorrar tener que pagarle a tu ISP (proveedor de servicios de Internet) por una dirección IP pública fija.

Seguimos con nuestros Colaboraciones en artículos que beneficien al teletrabajador. En esta ocasión y visto el éxito que ha tenido el artículo Configurar una VPN con Wireguard en la misma línea os traemos otra guía útil, sencilla de comprender para acceder a un servicio de tu red local desde el exterior. Así mismo no queremos dejar pasar la oportunidad de recordaros que en Programas gratis que no pueden faltar en tu PC contaís con aplicaciones útiles que pueden interesaros.

Duck DNS el servidor DDNS para IP dinámica.

Duck DNS es un servicio gratuito que se encarga de dirigir direcciones IP a subdominios del tipo duckdns.org. La intención es disponer de nombres fácilmente recordables y tener un servicio DDNS con conexión externa. Esto garantiza que en el caso de disponer de una IP pública de tipo dinámica (la que ofrecen la mayoría de ISP hoy en día) podamos seguir apuntando a nuestro dispositivo y acceder a él como si de una dirección fija se tratase.

¿Cómo Funciona Duck DNS?

Hoy en día las conexiones a internet son a través de una dirección IP externa dinámica. Ésta cambia con bastante frecuencia, ya sea de forma semanal o incluso diaria. Esto es un problema a la hora de conectarse a nuestros dispositivos locales desde el exterior, porque cambia constantemente. Para evitar esto, Duck DNS facilita direcciones con subdominios en lugar de tratar de recordar una dirección IP. Este subdominio se mantiene actualizado periódicamente aproximadamente cada 5 minutos. A través de una publicación HTTPS, el cliente envía la información a los servicios de Duck DNS y actualiza el registro con la última IP externa conocida. Gracias a esto si tenemos configurado servicios como por ejemplo SSH, podemos acceder de forma externa a un servidor, una Raspberry Pi o un NAS entre otros ejemplos.

Crear una cuenta y utilizar Duck DNS.

Para crear una cuenta necesitaremos disponer de perfil en Twitter, Reddit, Github o Gmail. Con cualquiera de ellos nos podremos autenticar y obtener nuestro Token. Es importante que ese número de token lo apuntemos. Como vemos en la imagen, se pueden registrar hasta 5 dominios. Permite asociar incluso direcciones IPV6. Los dominios los registraremos a nuestro parecer de la forma http://ejemplo.duckdns.org. Si la url que queremos estuviese ocupada, nos lo indicará para asignarle otra.

Duck DNS

El círculo de arriba muestra donde tenemos que poner nuestro dominio y el de abajo donde debemos poner nuestra IP Pública.

Configurar Duck DNS en Raspberry Pi.

Como ejemplo práctico y por su amplio uso, hemos elegido para el artículo configurar un ejemplo práctico en una Raspberry Pi. Ya estamos autenticados y disponemos de nuestro token, además hemos configurado nuestra url del tipo http://ejemplo.duckdns.org donde «ejemplo» es el nombre que queráis siempre que no esté ocupado.

Ahora vamos a utilizar alguno de los script que tenemos en la web de Duck DNS y que se encuentran en esta ruta.

Linux Cron.

Cron es un administrador de procesos en segundo plano en sistemas operativos UNIX, lo que viene siendo un demonio. En Duck DNS tenemos la posibilidad de utilizar un pequeño script en Bash, con unas órdenes simples en la consola:

mkdir duckdns


cd duckdns


nano duck.sh

Al abrir nano (o tu editor habitual) copiamos el siguiente script:

echo url="https://www.duckdns.org/update?domains=exampledomain&token=a7c4d0ad-114e-40ef-ba1d-d217904a50f2&ip=" | curl -k -o ~/duckdns/duck.log -K -

exampledomain es tu dominio, de la forma que si mi dominio fuera ejemplo y mi token a7c4d0ad-114e-40ef-ba1d-d217904a50f2 quedaría así:

echo url=»https://www.duckdns.org/update?domains=ejemplo&token=a7c4d0ad-114e-40ef-ba1d-d217904a50f2&ip=» | curl -k -o ~/duckdns/duck.log -K –

Guardamos el archivo con Ctrl+O y salimos con Ctrl+X si estás usando Nano. Seguidamente vamos a cambiar los permisos de ejecución escribiendo en la consola

chmod 700 duck.sh

Ejecutaremos el siguiente comando para que el proceso de cron ejecute este script cada 5 min.

crontab -e

Pegamos el siguiente texto en la parte inferior del crontab:

*/5 * * * * ~/duckdns/duck.sh >/dev/null 2>&1

Duck DNS

Al teclear contab -e nos vamos a la última línea y copiamos el texto como aparece en la imagen.


Lanzamos el script.

./duck.sh

Con el siguiente comando veremos el log, y podemos asegurarnos de que el script esté trabajando correctamente:

cat duck.log

Si nos devolvió un «OK» todo está correcto, si nos devulve un «KO» toca revisar los pasos debido a que hemos puesto algo mal.

Por último levantamos el servicio:

sudo service cron start

 

Conclusiones.

Duck Dns es la mejor opción DDNS gratis que tenemos ahora mismo. Existen otras opciones como No-IP que si bien ofrecen un servicio gratis y en el pasado eran muy utilizadas, han perdido esa funcionalidad en favor de algunas de sus modalidades de pago.

Conviene recordaros que por seguridad, una vez tengáis vuestra url Duck DNS configurada cambiéis los puertos, usuarios y contraseñas que vienen por defecto. De esta forma os podéis ahorrar tener alguna intrusión por no cambiar credenciales.

Próximamente traeremos más proyectos donde veremos el potenciar de Duck DNS.

Como siempre si tenéis alguna duda podéis dejarla en los comentarios.