- DynIP es un servicio de DNS dinámico para homelabs, routers de borde y equipos de infraestructura, con actualizaciones cada 60 segundos y un plan gratuito
- Compatible con actualizaciones por RFC 2136 TSIG, API REST y UDP/53, e integrado con FortiGate, OPNsense, OpenWRT y MikroTik
- Soporta IPv6 junto con IPv4 para actualizar registros A y AAAA en paralelo, tanto en entornos dual-stack como en zonas solo IPv6
- DNSSEC automatiza la generación de claves de firma, la publicación en la zona padre y la firma de registros, y es necesario para emitir certificados de Let’s Encrypt
- Con BYOD puedes conectar un dominio propio y crear subdominios dinámicos, pero requiere delegar en ns1.dynip.dev y ns2.dynip.dev
Resumen de DynIP
- DynIP es un servicio de DNS dinámico para homelabs, routers de borde y equipos de infraestructura, que destaca por sus actualizaciones cada 60 segundos, plan gratuito, RFC 2136 TSIG, uso de dominio propio y DNSSEC
- Está diseñado para que, cuando el router envía una actualización, el nombre de host se resuelva correctamente en todo el mundo en unos 60 segundos
- Ofrece TTL de 60 segundos, propagación basada en NOTIFY y servidores de nombres multirregión
- Ofrece registro gratuito y documentación
Estándares DNS e integración con routers
- Soporta RFC 2136 TSIG, por lo que puede usarse con FortiGate, OPNsense, OpenWRT y routers con soporte para DNS UPDATE
- Los usuarios de MikroTik pueden usar una integración nativa con HTTP API
- Los métodos compatibles incluyen RFC 2136 TSIG, API REST y actualizaciones nativas por UDP/53
- En la pantalla de snippets de configuración puedes generar y copiar un bloque de configuración según el tipo de dispositivo, la IP de destino, el dominio y la clave TSIG
- Mientras una zona nueva se propaga a los servidores de nombres, las actualizaciones RFC 2136/TSIG de FortiGate deben esperar
- Las actualizaciones por HTTP API como cURL, PowerShell, Python y MikroTik funcionan de inmediato
IPv6 y DNSSEC
- Soporta IPv6 junto con IPv4 para actualizar registros A y AAAA en paralelo
- Admite tanto configuraciones dual-stack como zonas solo IPv6
- Para emitir certificados de Let’s Encrypt, DNSSEC debe estar habilitado en esa zona
- Al activar DNSSEC, se automatizan la generación de claves de firma, la publicación en la zona padre y la firma de todos los registros DNS
- La configuración de DNSSEC es un procedimiento de una sola vez, y después la zona permanece firmada
- El tiempo estimado mostrado es de 30 segundos
Inicio rápido y administración de zonas
- El inicio rápido consiste en ingresar el nombre del dispositivo, elegir el dominio base y hacer clic en Create Zone para crear la zona
- Desde el botón Snippets junto al nuevo dominio puedes obtener la configuración, elegir el tipo de dispositivo y copiar el bloque generado al CLI del router
- IPv4 e IPv6 se detectan y actualizan automáticamente según la conexión entrante
- La lista de zonas muestra el dominio y herramientas, la IP actual, el TSIG Secret, DNSSEC y el estado del certificado SSL
- En cada zona se puede gestionar el estado de bloqueo, snippets, eliminación, notificaciones, hora de sincronización, activación o desactivación de DNSSEC y la descarga, renovación o emisión de certificados SSL
Uso de dominio propio
- La función Custom Namespaces (BYOD) permite conectar un dominio propio a DynIP y crear subdominios dinámicos dentro de ese namespace
- Para activar el namespace, debes crear ambos registros NS en el registrador del dominio
- No se acepta delegación con un solo NS
- Los registros NS requeridos son
ns1.dynip.dev y ns2.dynip.dev
- La validación de la configuración se ofrece como un flujo para confirmar que la delegación está activa o revisar las acciones necesarias en el registrador
Sincronización rápida y automatización
- Quick Sync es una función que ajusta de inmediato la zona seleccionada a la dirección IP externa actual del dispositivo
- Muestra la IP de red detectada y permite actualizar de una vez las zonas elegidas por el usuario
- Se pueden registrar nuevas zonas de forma programática enviando una solicitud
POST al endpoint /register con un token de sesión
curl -X POST "{{ backendUrl }}/register?subdomain=my-new-router&base_domain={{ baseDomains[0] }}" \
-H "Authorization: Bearer {{ token }}"
- Como el token de sesión expira al cerrar sesión, para automatización a largo plazo debe usarse un token de API
- Los API tokens son una función disponible desde Pro en adelante y pueden usarse en automatizaciones como scripts de monitoreo, pipelines de CI e integraciones MSP
- Los tokens de API no expiran al cerrar sesión, pueden limitarse a alcance de solo lectura o acceso total, y pueden revocarse en cualquier momento
- Un nuevo token de API solo se muestra una vez al crearse, por lo que debe guardarse en un gestor de contraseñas o almacén de secretos
Planes y seguridad de la cuenta
- La pantalla de planes muestra el nivel de suscripción, estado, fecha de renovación o fin de acceso, ciclo de facturación, cantidad de zonas en uso y número máximo de dominios
- Si se baja de plan, solo las zonas más antiguas dentro del límite permitido permanecen activas, y el resto queda bloqueado sin poder recibir actualizaciones de IP
- Si falla un pago, es necesario actualizar el método de pago para mantener el acceso
- La seguridad de la cuenta soporta 2FA por correo electrónico y TOTP; cuando TOTP está activado, reemplaza al 2FA por correo
- La configuración de TOTP consiste en escanear un código QR con Google Authenticator, Authy u otra app 2FA de preferencia y verificar el código
Enlaces relacionados
1 comentarios
Comentarios de Hacker News
Soy Daniel, ingeniero de redes en Suecia, y creé DynIP porque sentía que los servicios DDNS existentes seguían atorados en redes al estilo de los años 2010
Se repetían problemas como protocolos de actualización propietarios solo por HTTP, soporte débil para IPv6, ausencia de DNSSEC y poco soporte para equipos modernos, así que DynIP trata las actualizaciones RFC 2136 / TSIG como una vía de primera clase
El DDNS genérico de FortiGate y
/tool dns-updatede MikroTik funcionan sin cliente adicional, y también ofrece una API HTTP para otros usosEl servidor DNS autoritativo es accesible por IPv6, hay glue AAAA publicado en la zona padre
.dev, y las zonas de clientes emiten A/AAAA, además de soportar clientes solo IPv6En las zonas seleccionadas se puede activar DNSSEC con un solo interruptor, y mediante delegación de subdominios puedes usar tu propio dominio
La arquitectura consiste en un primary oculto que no recibe tráfico público y dos secondary distribuidos geográficamente en Suecia y Suiza, que validan TSIG localmente antes de reenviar al primary
También se permiten direcciones RFC 1918 y CGNAT en los registros, para que flotas celulares con APN privado puedan usar nombres de host DNS públicos estables que apunten a IP internas
También hay un pequeño contenedor Docker llamado
ghcr.io/33k-org/dynip-updater, y el stack es PowerDNS 4.8 authoritative, FastAPI, Postgres, Postfix, Cloudflare y Paddle; corre endynip.devy también tiene un nivel gratuitoOfrece funciones como IPv6, DNSSEC y uso de dominio propio, y además de ser un proyecto open source también opera un servicio de hosting gratuito estable
Puede que no lo haya encontrado en la documentación, pero aquí sí hay soporte para IPv6 prefix delegation, así que cuando cambia el prefijo IPv6 que el ISP asignó al router, puedes actualizar solo el prefijo de red de un dominio arbitrario
En Europa este prefijo no suele ser fijo y cambia cada vez que se reconecta el ISP, así que es útil una función que mantenga la parte del host y actualice automáticamente solo la parte de red
Ejemplo:
/update?myipv6:nas.home.mydomain.tld=2003:e6:bee:affe::/56Cuando hice clic en el enlace de verificación por correo no apareció ninguna confirmación ni indicador de estado, así que fue bastante confuso
Si estás con sesión iniciada, el enlace redirige al inicio del dashboard, así que como normalmente el usuario recibe el correo justo después de pulsar el botón para cambiar contraseña, primero tiene que cerrar sesión
Sería más fluido si el correo dijera “primero cierra sesión”, o si el enlace cerrara la sesión actual antes de mostrar la página de restablecimiento
Recuerdo vagamente que esto era algo prohibido desde el punto de vista de seguridad
La propuesta se ve bastante bien, pero ahora mismo no tengo tiempo de probarla
Dicho eso, si no hubiera leído la explicación en los comentarios de aquí, creo que habría cerrado la pestaña apenas al ver la landing page
Perdón por ser tan directo, pero la página parece la típica landing page genérica con vibra de IA; no digo que realmente lo sea, pero como la explicación es buena, estaría bien diferenciarla más dándole personalidad
Además, es mejor no crear una cuenta de Hacker News dedicada al proyecto
“No uses como nombre de usuario el nombre de una empresa o proyecto. Da la impresión de que usas HN para promocionarte y de que no participas como persona. No necesitas usar tu nombre real, pero sí dar la señal de que aquí te ven como un ser humano y no como una marca. Si quieres cambiar tu nombre de usuario, escribe a hn@ycombinator.com.”
https://news.ycombinator.com/item?id=22336638
También puedes revisar https://news.ycombinator.com/showhn.html
En este momento estoy en la etapa de tener cosas que sé y cosas que no sé, esperanzas y sueños, y un bloque bastante grande de conocimiento técnico; no soy fuerte en diseño, pero por ahora me parece aceptable
Según Pangram da 100%, y la verdad ni siquiera hace falta una herramienta así para darse cuenta; es deprimente que incluso aquí no sean pocos los que no logran distinguirlo
Me alegra ver competencia entrando en esta área
Pero si quieres hacer self-hosting sin preocuparte demasiado por estabilidad o facilidad de uso, bind9 también soporta RFC 2136 DNS UPDATE y DNSSEC
En mi configuración, el router de mi casa no puede hablar DNS UPDATE, así que también hice yo mismo un pequeño ejecutable en Go que convierte solicitudes HTTP
Hice algunos casos de prueba en FortiGate, y al principio DynIP empezó como una copia y pega simple encima del DNS interno, pensado solo para FortiGate
Hay ejemplos de código que pueden usarse internamente en varios hosts de Windows o Linux, y si tienes equipos IoT en tu homelab, también hay ejemplos para Arduino
Hacer un ejecutable en Go también es un muy buen camino, así que puedes seguir las actualizaciones bajo
/docsQue admita RFC 2136 merece puntos extra, y funciona fácilmente con external-dns
Llevo años usando Kubernetes on-premise con external-dns, junto con un servidor BIND autoalojado en una configuración mínima de host público
Ya existe una guía de operación de flota, y como el patrón de Kubernetes es una extensión natural, parece que habría que escribir una guía
Antes actualizaba AWS Route 53 o Cloudflare DNS creando yo mismo scripts DDNS para OpenWrt, y con eso se resolvía bastante bien
Después de que apareció Tailscale, dejé de preocuparme por DDNS o CGNAT
Dejé escrita una guía en https://dynip.dev/guides/tailscale explicando cómo y por qué pueden coexistir entre sí
Los scripts DDNS de OpenWrt son algo engorrosos por las claves y secretos, pero estoy bastante satisfecho con la función de snippets porque evita tener que adivinar “¿cómo funciona esto?”
Para servicios públicos uso DynIP, y para lo que solo necesito acceder yo uso Tailscale, así que la superficie de ataque se redujo mucho
Por suerte, no hace falta preocuparse por CGNAT
Intenté registrarme, pero no llega el correo de verificación
Justo después del registro tampoco había nada parecido en los logs del servidor de correo, y aunque pedí reenvío varias veces, hasta 6 o 7 horas después no había nada en la bandeja de entrada
Me gustaría saber si es correcto que el token de autenticación del plan gratuito vence después de 24 horas
Vi el claim
expdel JWT, y quiero saber este punto antes de invertir tiempo en la migraciónLo clave es si el plan gratuito es sostenible
Todas las zonas reciben su propia clave TSIG en todos los planes, y las actualizaciones reales las maneja esa clave
En el plan gratuito se administran las zonas desde el dashboard, y en los planes de pago además se ofrecen tokens de API para administración programática
Así que el token de autenticación se usa como bearer para la API, y la TSIG sigue siendo válida mientras no se elimine el dominio
El plan gratuito permite 5 zonas y cada una tiene una clave TSIG individual siempre activa, así que no hace falta pagar a menos que vayas a crear, actualizar y borrar cientos de zonas
Gracias por los excelentes comentarios y preguntas; estuve unas horas llevando a mi hija a su clase de natación y ya volví, así que seguiré viendo el hilo
Me pregunto si también consideraste algo como https://github.com/hickory-dns/hickory-dns
Aunque claro, tampoco hace falta hacer todo en Rust
Se ve interesante, y uso DDNS para ofrecer varios servicios desde mi servidor casero a clientes externos
Ahora uso NO-IP DDNS y su plan gratuito es bastante generoso, pero me molesta que no soporte algo como Let’s Encrypt
Estoy pensando si comprar un dominio en Cloudflare, pero me da curiosidad qué diferencia concretamente a DynIP
Las actualizaciones solo por HTTP(S) al estilo de los 2000 también están bien
Con solo
curl/wget/fetch, funciona en cualquier lado, y si quieres basta con agregar un tokenParece que duckdns todavía soporta este método, y como no requiere un cliente aparte, funciona casi en cualquier lugar
curl/wget/fetchestilo dyndns también es cierto, y en/docspuedes revisar las demás funciones especiales que se pueden hacerLa idea aquí no es incluir solo
curl/wget/fetch, sino apuntar a una base de funcionalidades más amplia