
dnscontrol v5.0.0-rc9
Infraestructura como código para DNS!
DNSControl
DNSControl es Infraestructura como Código para DNS. Incluye un lenguaje de configuración con todas las funciones (compatible con Javascript), además de "plugins" que se comunican con las API de los proveedores de DNS, como AWS Route 53, Cloudflare y Gandi. Puede enviar los mismos registros DNS a múltiples proveedores. Se ejecuta en cualquier lugar donde se ejecute Go (Linux, macOS, Windows). El modelo de proveedores es extensible, por lo que se pueden añadir más proveedores.
Un ejemplo
dnsconfig.js:
// define our registrar and providers
var REG_NAMECOM = NewRegistrar("name.com");
var r53 = NewDnsProvider("r53")
D("example.com", REG_NAMECOM, DnsProvider(r53),
A("@", "1.2.3.4"),
CNAME("www","@"),
MX("@",5,"mail.myserver.com."),
A("test", "5.6.7.8")
)
Al ejecutar dnscontrol preview se hablará con los proveedores (aquí name.com como registrador y route 53 como host de DNS) y se determinará qué cambios deben realizarse.
Al ejecutar dnscontrol push se realizarán esos cambios con el proveedor y mis registros DNS se actualizarán correctamente.
La forma más sencilla de ejecutar DNSControl es utilizar el contenedor Docker:
docker run --rm -it -v "$(pwd):/dns" ghcr.io/dnscontrol/dnscontrol preview
¡Consulta la página Getting Started en el sitio de documentación para empezar!
Proveedores compatibles
DNSControl es compatible con 65 proveedores de DNS y registradores:
¹también soporta funciones de registrador ²solo registrador
Stack Overflow utiliza este sistema para gestionar cientos de dominios y subdominios a través de múltiples registradores y proveedores de DNS.
Puedes pensar en ello como un compilador de DNS. Los archivos de configuración están escritos en un DSL que se parece mucho a JavaScript. Se compilan a una representación intermedia (IR). Los back-ends del compilador utilizan la IR para actualizar tus zonas DNS en servicios como Route53, Cloudflare y Gandi, o en sistemas como BIND.
Beneficios
- Menos propenso a errores que editar un archivo de zona BIND.
- Más reproducible que hacer clic en botones en un portal web.
- Cambia fácilmente entre proveedores de DNS: El lenguaje de DNSControl es independiente del proveedor. Si lo usas para mantener tus registros de zona DNS, puedes cambiar entre proveedores de DNS fácilmente. De hecho, DNSControl subirá tus registros DNS a múltiples proveedores, lo que significa que puedes probar uno mientras cambias a otro. Hemos cambiado de proveedor 3 veces en tres años y nunca hemos perdido un registro DNS.
- ¡Aplica principios de CI/CD al DNS! StackOverflow mantiene sus configuraciones de DNSControl en Git y utiliza nuestro sistema de CI para implementar los cambios. Mantener la información de DNS en un VCS significa que tenemos un historial completo. Usar CI nos permite incluir pruebas unitarias y pruebas de sistema. ¿Recuerdas cuando olvidaste incluir un "." al final de un registro MX? No hemos tenido ese problema desde que incluimos una prueba para asegurarnos de que Tom no vuelva a cometer ese error...
- Adopta actualizaciones basadas en PR (GitOps). Permite que los desarrolladores envíen actualizaciones como PRs, que puedes revisar antes de aprobar.
- ¡Las variables ahorran tiempo! Asigna una dirección IP a una constante y usa el nombre de la variable en todo el archivo. ¿Necesitas cambiar la dirección IP globalmente? Solo cambia la variable y "recompila".
- ¡Macros! Define tus registros SPF, registros MX u otros datos repetidos una vez y reutilízalos para todos los dominios.
- Controla Cloudflare desde una única fuente de verdad. Habilita/deshabilita el proxy de Cloudflare (el botón de "nube naranja") directamente desde tus archivos de DNSControl.
- Mantén dominios similares sincronizados con transformaciones y otras funciones. Si se supone que un dominio es una versión filtrada de otro, esto es fácil de configurar.
- ¡Es extensible! Todos los proveedores de DNS están escritos como plugins. Escribir nuevos plugins es muy fácil.
Instalación
DNSControl se puede instalar mediante paquetes para macOS, Linux y Windows, o desde el código fuente. Consulta las instrucciones oficiales.
Mediante GitHub Actions (GHA)
Consulta dnscontrol-action o gacts/install-dnscontrol.
Avisos de deprecación (actualizado el 2025-11-21)
- REV() cambiará de RFC2317 a RFC4183 en v5.0. Este es un cambio disruptivo. Se mostrarán advertencias si tu configuración se ve afectada. No se ha anunciado ninguna fecha para v5.0. Consulta https://docs.dnscontrol.org/language-reference/top-level-functions/revcompat
- ¡NAMEDOTCOM, OPENSRS y SOFTLAYER necesitan mantenedores! Estos proveedores no tienen mantenedor. Los mantenedores responden a los PRs y corrigen errores de manera oportuna, e intentan estar al día con los cambios de protocolo. ¿Te interesa ser un héroe y adoptarlos? Contacta a tal at what exit dot org.
Contribuir
¿Quieres contribuir? Ya sea corregir un error, añadir un nuevo proveedor de DNS o mejorar la documentación, las contribuciones son bienvenidas. Consulta CONTRIBUTING.md para saber cómo empezar.
Más información en nuestro sitio web
El sitio web: https://docs.dnscontrol.org/
La guía de inicio: https://docs.dnscontrol.org/getting-started/getting-started