Inicio Dynamic DNS
Entrada
Cancelar

Dynamic DNS

Hoy voy a documentar cómo tener nuestro propio servidor Dynamic DNS para poder acceder a cualquiera de nuestras redes aunque tengan una ip dinámica. ¿Y esto qué leches es con tanto palabrejo raro? Muy simple: Todos los routers de casa necesitan una dirección (ip) para poder comunicarse dentro de internet. Esta ip es como la dirección postal de tu casa pero con numeritos. El DNS se encarga de guardar un registro de esas direcciones ip asociadas a su nombre para humanos. Por ejemplo: si escribes en el navegador el nombre de tu web (Otra vez por ejemplo: mipeasoweb.com), este se conecta a un servidor DNS que le dice que mipeasoweb.com está enla ip 12.345.77.890, así que el navegador ahora sí sabe dónde encontrar mipeasoweb. El problema surge cuando tu proveedor de internet te cambia la dirección cada vez que le parece bien, y esto lo hacen todos por norma. Para solucionarlo tenemos los servidores DDNS, que lo que hacen es recibir cada poco tiempo la dirección ip del router y comunicárselo a los servidores DNS (más o menos) para que así tú puedas acceder a tu red desde donde quieras con el nombre que le hayas puesto. Con esto, ya puedo levantar servicios en algún equipo de casa y utilizarlos sin el problema de la ip cambiante.

Hay que decir que esto entraña peligros, sin duda, con lo cual hay que procurar tener bien configurados firewalls y cualquier herramienta que nos de una capa extra de seguridad.

Para hacer esto, he usado el docker de bbaerthlein que nos muestra una interfaz web muy limpia para poder administrar nuestros dominios.

Como siempre, creo una carpeta dentro de ~/docker con el nombre dyndns, que es la que va a albergar el docker-compose.yml y los volúmenes necesarios para que esto funcione.

1
2
mkdir ~/docker/dyndns
touch ~/docker/dyndns/docker-compose.yml

Ahora tenemos que crear una contraseña hash con htpasswd para añadirlo a la configuración. Para esto hay que tener instalado el paquete apache2-utils que está en los repositorios, y se usa de la siguiente manera:

1
echo $(htpasswd -nb usuario miclavealfanumérica) | sed -e s/\\$/\\$\\$/g

En realidad no haría falta parte del comando anterior si no fuese porque para añadir el usuario administrador y la clave como una variable de entorno no hiciese falta doblar los signos $ (eso es lo que hace el comando sed). Una vez tenemos nuestro hash con el usuario y la contraseña, lo copiamos para agregarlo al docker-compose.yml. Recordad que la clave tiene que ser ALFANUMÉRICA, o sea, sin signos de puntuación ni cosas raras para que htpasswd no nos de fallos.

Completamos el docker-compose.yml.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
version: '3'
services:
  ddns:
    image: bbaerthlein/docker-ddns-server:latest
    restart: always
    environment:
      DDNS_ADMIN_LOGIN: 'usuario:$$apr1$$sgsdfhwv$$0jffffJJUB(h)Ho8G0'
      DDNS_DOMAINS: 'dyndns.tudominio.es'
      DDNS_PARENT_NS: 'ns.tudominio.es'
      DDNS_DEFAULT_TTL: '3600'
    ports:
      - "53:53"
      - "53:53/udp"
      - "8080:8080"
    volumes:
       - ./bind-data:/var/cache/bind
       - ./database:/root/database

Antes de levantar el docker, (por lo menos si estás en debian) hay que hacer que el servicio systemd-resolved no ocupe el puerto 53. Esto se hace modificando el archivo /etc/systemd/resolved.conf y cambiando la opción DNSStubListener a no (DNSStubListener=no). Ahora reiniciamos el servicio con sudo systemctl restart systemd-resolved.service y ya podemos continuar.

Lanzamos el docker-compose con sudo docker-compose up -d y no debería darnos problemas.

Ahora toca configurar los registros DNS con nuestro proveedor para que cada cosa apunte donde debe. Para esto entramos en ls web de nuestro proveedor, creamos dos subdominios: ‘dyndns’ y ‘ns’ y adaptamos la configuración DNS de ambos para que quede de la siguiente manera:

dyndns                   IN NS      ns
ns                       IN A       <pon aquí la ipv4 del servidor dns>
ns                       IN AAAA    <opcional, pon aquí la ipv6 del servidor dns>

Ahora sólo falta abrir los puertos del firewall de nuestro proveedor (esto tienes que buscarlo enla web de quien tengas contratado, ya que cada una es de su padre y de su madre). Estos son: 8080/TCP, 53/TCP y 53/UDP.

Ya con esto se supone que debemos de tener acceso al panel de administración web de dyndns-server entrando en dyndns.tudominio.es:8080.

Lo que falta es configurar el router para que se comunique con el servidor ddns, cosa que no voy a hacer porque es diferente en cada router (¡Haced vosotros algo también, atajo de vagos!) y crear el dominio, el usuario y la contraseña que vamos a utilizar después.

Panel de control Dyndns

Pues ya está. Con esto ampliamos el radio de acción de nuestros servicios.

Esta entrada está licenciada bajo CC BY 4.0 por el autor.