DNS dinámico en Linux: Conectar dominio con IP dinámica
Si tienes un servidor en casa o en una oficina con una dirección IP pública dinámica (que cambia cada cierto tiempo), acceder a él desde fuera puede ser un problema. La solución es el DNS dinámico (DDNS), un servicio que asocia un nombre de dominio fijo a tu IP cambiante. En esta guía te explico cómo configurar DNS dinámico en Linux paso a paso.
¿Qué es DNS dinámico?
El sistema DNS tradicional traduce nombres de dominio (como google.com) en direcciones IP. Cuando tu IP es estática (no cambia), esto funciona sin problemas. Pero si tu proveedor de Internet te asigna una IP dinámica (que puede cambiar cada horas o días), tu dominio dejaría de apuntar a tu servidor cada vez que la IP cambie.
El DNS dinámico resuelve esto: un cliente en tu servidor detecta los cambios de IP y actualiza automáticamente el registro DNS de tu dominio.
Proveedores de DNS dinámico gratuitos
- DuckDNS (duckdns.org) — El más sencillo, gratuito, sin límites
- No-IP (noip.com) — Gratuito con confirmación mensual
- FreeDNS (freedns.afraid.org) — Múltiples dominios gratuitos
- Cloudflare — Si ya usas Cloudflare para tu dominio
- Afraid.org — Gran variedad de dominios gratuitos
Método 1: DuckDNS (recomendado para principiantes)
Paso 1: Crear una cuenta
- Ve a duckdns.org
- Inicia sesión con Google, GitHub o Reddit
- Crea un subdominio (por ejemplo,
miservidor) - Apunta el token que te asignan
Paso 2: Instalar el cliente
# Crear directorio
mkdir -p ~/duckdns
cd ~/duckdns
# Crear script de actualización
nano duck.sh
Añade:
#!/bin/bash
echo url="https://www.duckdns.org/update?domains=miservidor&token=TU_TOKEN&ip=" | curl -k -o ~/duckdns/duck.log -K -
Reemplaza miservidor con tu subdominio y TU_TOKEN con tu token.
# Hacer ejecutable
chmod +x duck.sh
# Probar
./duck.sh
cat duck.log
Deberías ver OK en el log.
Paso 3: Configurar cron para actualización automática
crontab -e
Añade esta línea para actualizar cada 5 minutos:
*/5 * * * * ~/duckdns/duck.sh >/dev/null 2>&1
Método 2: Cliente DDNS genérico
Para otros proveedores, puedes usar un cliente DDNS universal:
# Instalar ddclient
sudo apt install ddclient -y
# Configurar
sudo nano /etc/ddclient.conf
Ejemplo para No-IP:
protocol=dyndns2
use=web, web=myip.dnsomatic.com
server=dynupdate.no-ip.com
login=tu_usuario
password=tu_contraseña
tudominio.ddns.net
Método 3: Con Cloudflare
Si tu dominio usa Cloudflare, puedes usar su API para actualizar registros DNS:
#!/bin/bash
# Script DDNS para Cloudflare
API_KEY="tu_api_key"
EMAIL="tu@email.com"
ZONE_ID="tu_zone_id"
RECORD_ID="tu_record_id"
DOMAIN="tudominio.com"
IP=$(curl -s https://api.ipify.org)
curl -X PUT "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records/$RECORD_ID" -H "X-Auth-Email: $EMAIL" -H "X-Auth-Key: $API_KEY" -H "Content-Type: application/json" --data "{"type":"A","name":"$DOMAIN","content":"$IP","ttl":120}"
Verificar que funciona
# Comprobar tu IP pública
curl https://api.ipify.org
# Verificar que el DNS apunta correctamente
dig miservidor.duckdns.org +short
nslookup miservidor.duckdns.org
Conclusión
El DNS dinámico es la solución perfecta para acceder a tu servidor con IP dinámica desde cualquier lugar. Con herramientas como DuckDNS, la configuración toma menos de 10 minutos y es completamente gratuita. Una vez configurado, tu dominio siempre apuntará a tu servidor sin importar cuánto cambie tu IP.