Supongamos que publicaste un sitio web desde tu red doméstica y creaste un registro DNS que apunta a la dirección IP pública de tu enrutador. ¿Cómo mantienes actualizado tu registro DNS cuando cambia tu dirección IP pública? Tal vez deberías considerar configurar un DNS dinámico de Cloudflare.
Los proveedores de servicios de Internet (ISP) suelen asignar direcciones IP dinámicas a sus suscriptores, las cuales pueden cambiar en cualquier momento. Como resultado, tu registro DNS sigue apuntando a una dirección IP que ya no es tuya y tu sitio web se vuelve inaccesible.
Sigue leyendo porque este tutorial te ayudará a mantener actualizado tu registro DNS utilizando la interfaz de programación de aplicaciones (API) de Cloudflare y PowerShell. ¡Comencemos!
Prerrequisitos
Si planeas seguir este tutorial práctico, a continuación se detallan los requisitos que necesitas.
- A computer with PowerShell 7.1 where you’ll run the Cloudflare dynamic DNS update script. This tutorial will use a Windows 10 computer.
- A script editor of your choice. This tutorial will use Visual Studio Code v1.59.1 (recommended).
- A domain that you already own. The example domain in this tutorial is lazyexchangeadmin.cyou.
Los dominios de nivel superior (TLD) gratuitos, como .ml, .ga, .tk, .cf y .gq, no son aplicables para la automatización del DNS dinámico de Cloudflare y no funcionarán con este tutorial.
- A Cloudflare account. A free account is enough to use in this tutorial.
- Debe haber agregado su dominio a Cloudflare.
- Debe haber agregado un registro DNS bajo su dominio en Cloudflare. El registro DNS A en este tutorial será demo.lazyexchangeadmin.cyou con una dirección IP inicial de 0.0.0.0.

¿Qué es Cloudflare Dynamic DNS?
Los registros DNS son inherentemente estáticos, y no funcionan bien con direcciones IP dinámicas. Ahora, para resolver ese problema, necesitará configurar un DNS dinámico. Afortunadamente, Cloudflare proporciona una API que le permite administrar registros DNS de forma programática.
Para configurar un DNS dinámico de Cloudflare, deberá ejecutar un proceso en un cliente dentro de su red que realice dos acciones principales: obtener la dirección IP pública actual de su red y actualizar automáticamente el registro DNS correspondiente.
La imagen a continuación muestra el diagrama de alto nivel de cómo ocurre el flujo de actualización dinámica de DNS de Cloudflare.

Existen muchos clientes de DNS dinámico disponibles para instalar, principalmente para sistemas Linux, como en un servidor Ubuntu o Raspberry PI. También existen servicios de DNS dinámico de terceros que pueden ser de pago o gratuitos. Pero en este tutorial, desplegarás un script actualizador de DNS que se ejecuta en PowerShell 7.1.
Obteniendo un Token de API de Cloudflare
Cuando actualizas el registro de DNS dinámico de Cloudflare de forma programática, tu script debe autenticarse ante la API de Cloudflare. Solo entonces Cloudflare te permitirá realizar cambios en los registros de DNS de tu cuenta.
Cloudflare te permite crear tokens de API con suficientes permisos para su propósito. A su vez, puedes utilizar el nombre de usuario de tu cuenta de Cloudflare y el token de API resultante para autenticarte con la API de Cloudflare.
Para crear un Token de API de Cloudflare, sigue estos pasos.
1. Abre tu navegador, ve a https://dash.cloudflare.com/login/ e inicia sesión en tu cuenta de Cloudflare.
2. Después de iniciar sesión en el panel de control de Cloudflare, haz clic en el botón de perfil en la esquina superior derecha y selecciona Mi Perfil.

3. A continuación, haz clic en el enlace de la pestaña API Tokens. Bajo la sección API Tokens, haz clic en el botón Crear Token. El ejemplo a continuación asume que aún no has creado ningún token de API.

4. En la lista de plantillas de tokens de API (API token templates), haz clic en la plantilla Editar zona DNS para utilizarla. Esta plantilla te permite crear un token de API con permisos de edición para todas o algunas zonas DNS seleccionadas en tu cuenta.

5. En la sección de Recursos de Zona en la página de Crear Token, haz clic en la caja desplegable más a la derecha y selecciona la zona DNS que deseas incluir en el acceso de este token de API. Después de elegir la zona DNS, haz clic en Continuar con el resumen.
Opcionalmente, para limitar el período de validez del token de API, completa las fechas de inicio (Start Date) y fin (End Date) en la sección de TTL. Si se deja en blanco, el token de API no tendrá fecha de vencimiento.

6. Revisa el resumen y asegúrate de que la API tenga permisos de DNS:Edit para la zona DNS seleccionada anteriormente. Finalmente, haz clic en Crear Token para crear el token de API.

7. Después de crear el token de API, copia el valor del token y asegúrate de almacenarlo de manera segura. Trata el token de API como tratarías una contraseña.

8. Regresa a la pestaña de API Tokens y confirma la existencia del token de API que creaste.

Configuración del Script de Actualización Dinámica de DNS de Cloudflare
Ahora tienes la cuenta de Cloudflare y el token de API de Cloudflare con permisos para editar una zona DNS. ¿Qué sigue? Deberás poner en práctica el token de API e integrarlo con un script que actualice de manera programática el registro de DNS dinámico de Cloudflare.
Este tutorial te proporciona un script de PowerShell funcional específicamente para actualizar un registro DNS en Cloudflare.
Guardar el script
Sigue los pasos a continuación para guardar el script de PowerShell dinámico de Cloudflare en tu computadora cliente.
1. Decide en qué carpeta guardar el script y crea esa carpeta si aún no existe. En este ejemplo, la ubicación del script es en C:\CloudflareDDNS.
2. Abre tu editor de código, como VSCode, y crea un nuevo archivo de script de PowerShell llamado Update-CloudflareDDNS.ps1
. Guarda el script dentro de la carpeta C:\CloudflareDDNS.
3. Copia el siguiente script, pégalo en tu editor de código y guarda el archivo. Consulta los comentarios en línea para entender qué hace el script.
Ejecutando el Script
Ahora que has guardado el script de actualización dinámica de DNS de Cloudflare, ¿qué sigue? Antes de implementar el script, es esencial probar si su funcionalidad funciona. Para ejecutar el script con éxito, se necesitan cuatro detalles, y son los siguientes:
Email
– que es la dirección de correo electrónico de tu cuenta de Cloudflare.Token
– el token de API que creaste previamente desde tu cuenta de Cloudflare.Domain
– el nombre de dominio DNS que contiene el registro DNS que deseas actualizar. (por ejemplo, lazyexchangeadmin.cyou).Record
– el registro DNS que deseas actualizar. (por ejemplo, demo.lazyexchangeadmin.cyou).
Para ejecutar el script, sigue estos pasos.
1. Primero, abre una sesión de PowerShell. O, si estás usando VSCode, utiliza el terminal de PowerShell de VSCode en su lugar.
2. A continuación, realiza una búsqueda de registro DNS para confirmar la dirección IP actual del registro DNS. Para hacerlo, ejecuta el cmdlet Resolve-DnsName
, como puedes ver a continuación. Asegúrate de proporcionar el nombre de dominio completamente calificado (FQDN) con el parámetro -Name
.
El comando debería devolver el registro DNS que buscaste, incluida su dirección IP.

3. Ahora, invoca el script Update-CloudflareDDNS.ps1
para actualizar el registro DNS en Cloudflare ejecutando el siguiente comando. Asegúrate de cambiar el Email
, Token
, Domain
, y Record
. El comando asume que tu script está en C:\CloudflareDDNS\Update-CloudflareDDNS.ps1.
El script realiza las siguientes acciones, como se muestra en la captura de pantalla a continuación.
- Valida el token de la API.
- Encuentra el dominio que contiene el registro DNS a actualizar.
- Encuentra el registro DNS a actualizar.
- Compara la dirección IP del registro DNS con la dirección IP externa o pública real.
- Actualiza la dirección IP del registro DNS en Cloudflare.
- Muestra el resultado de la actualización dinámica de DNS.

4. Regresa a tu panel de control de Cloudflare y verifica que el registro DNS refleje la nueva dirección IP. La captura de pantalla a continuación muestra que la dirección IP ha cambiado al valor de la IP externa después de ejecutar el script de actualización.

5. Finalmente, realiza otra búsqueda de registro DNS como lo hiciste en el paso 2 para confirmar si la nueva dirección IP ya se propagó públicamente.
La propagación del registro DNS puede llevar varios minutos, horas o incluso días. En este ejemplo, la propagación en Cloudflare solo tomó menos de un minuto.

Programación de la Tarea de Actualización Dinámica de DNS de Cloudflare
En este punto, ahora tienes un script funcional que actualiza el registro DNS dinámico de Cloudflare. Pero ejecutar el script manualmente cada vez no es el objetivo. Debes asegurarte de que la actualización del DNS dinámico se ejecute automáticamente según sea necesario.
Dependiendo del sistema operativo que estés utilizando, la forma en que programes la ejecución del script varía, como un trabajo cron en Linux. Este tutorial creará una tarea programada en Windows que ejecutará el script de actualización del DNS dinámico de Cloudflare cada cinco minutos.
Definición de la acción de la tarea programada
Tu tarea programada debe tener una acción, que puedes crear ejecutando el cmdlet New-ScheduledTaskAction
. En este ejemplo, la acción es ejecutar el script Update-CloudflareDDNS.ps1 utilizando el archivo ejecutable de PowerShell pwsh.exe
.
Para hacerlo, abre una nueva ventana de PowerShell como administrador. Luego, copia y ejecuta el código a continuación en PowerShell. Asegúrate de cambiar las variables $scriptPath
, $Email,
$Token
, $Domain
, y $Record
.
Creación del Desencadenador de la Tarea Programada
Después de haber definido lo que hará la tarea, debe crear un desencadenador o programación para la tarea ejecutando el cmdlet New-ScheduledTaskTrigger
. Copie el código a continuación y ejecútelo en PowerShell para crear un nuevo desencadenador de tarea que se ejecute cada cinco minutos durante un período de diez años.
Registrando la Nueva Tarea Programada en el Sistema
Finalmente, estás listo para registrar la nueva tarea programada en la computadora. Para hacerlo, necesitarás ejecutar el cmdlet Register-ScheduledTask
, igual que el código a continuación. Copia el código siguiente y ejecútalo en PowerShell para registrar la tarea programada.
La tarea programada resultante se ejecutará bajo la cuenta SISTEMA local. Si lo prefieres, puedes asignar una cuenta de usuario diferente para ejecutar la tarea programada según sea necesario.
Como puedes ver a continuación, el comando ha creado la tarea programada y el estado es listo. A partir de este punto, el script se ejecutará con un intervalo de cinco minutos.

Conclusión
mantener actualizados los registros dns con cambios de direcciones ip dinámicas no tiene por qué ser un desafío. ¡tampoco necesitas pagar por un servicio de dns dinámico! al administrar tus zonas dns en cloudflare, puedes aprovechar su api, lo que te permite actualizar tus registros dns de forma programática.
en este tutorial, aprendiste cómo actualizar un registro dns dinámico de cloudflare mediante una combinación de llamadas a la api, powershell 7 y tareas programadas. todo esto te permite configurar tu mecanismo de actualización dinámica de dns de cloudflare una vez y mantener la actualización en funcionamiento en un intervalo sin supervisión.
¿considerarías gestionar tus zonas dns con cloudflare para aprovechar los beneficios de su api? ¿o conoces alguna forma más conveniente y accesible?
Source:
https://adamtheautomator.com/cloudflare-dynamic-dns/