
dnscontrol v4.43.2
Infraestrutura como código para DNS!
DNSControl
O DNSControl é Infraestrutura como Código para DNS. Ele inclui uma linguagem de configuração completa (compatível com JavaScript), além de "plug-ins" que se comunicam com APIs de provedores de DNS, como AWS Route 53, Cloudflare e Gandi. Ele pode enviar os mesmos registros DNS para vários provedores. Ele roda em qualquer lugar onde Go roda (Linux, macOS, Windows). O modelo de provedores é extensível, portanto mais provedores podem ser adicionados.
Um Exemplo
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")
)
Executar dnscontrol preview fará a comunicação com os provedores (aqui, name.com como registrador e route 53 como host de DNS) e determinará quais mudanças precisam ser feitas.
Executar dnscontrol push fará essas mudanças com o provedor, e meus registros DNS serão atualizados corretamente.
A maneira mais fácil de executar o DNSControl é usar o contêiner Docker:
docker run --rm -it -v "$(pwd):/dns" ghcr.io/dnscontrol/dnscontrol preview
Veja a página Getting Started no site de documentação para começar!
Provedores Suportados
O DNSControl suporta 65 provedores e registradores de DNS:
¹também suporta funções de registrador ²somente registrador
O Stack Overflow usa este sistema para gerenciar centenas de domínios e subdomínios em vários registradores e provedores de DNS.
Você pode pensar nele como um compilador de DNS. Os arquivos de configuração são escritos em uma DSL que se parece muito com JavaScript. Ele é compilado para uma representação intermediária (IR). Os back-ends do compilador usam a IR para atualizar suas zonas DNS em serviços como Route53, Cloudflare e Gandi, ou em sistemas como BIND.
Benefícios
- Menos propenso a erros do que editar um arquivo de zona BIND.
- Mais reprodutível do que clicar em botões em um portal web.
- Troque facilmente entre provedores de DNS: A linguagem do DNSControl é independente de fornecedor. Se você a usa para manter seus registros de zona DNS, pode alternar facilmente entre provedores de DNS. Na verdade, o DNSControl fará o upload dos seus registros DNS para vários provedores, o que significa que você pode testar um enquanto muda para outro. Trocamos de provedor 3 vezes em três anos e nunca perdemos um registro DNS.
- Aplique princípios de CI/CD ao DNS! O StackOverflow mantém suas configurações do DNSControl no Git e usa nosso sistema de CI para implementar mudanças. Manter informações de DNS em um VCS significa que temos histórico completo. Usar CI nos permite incluir testes de unidade e testes de sistema. Lembra quando você esqueceu de incluir um "." no final de um registro MX? Não tivemos esse problema desde que incluímos um teste para garantir que o Tom não cometa esse erro... de novo.
- Adote atualizações baseadas em PR (GitOps). Permita que desenvolvedores enviem atualizações como PRs, que você pode revisar antes de aprovar.
- Variáveis economizam tempo! Atribua um endereço IP a uma constante e use o nome da variável em todo o arquivo. Precisa mudar o endereço IP globalmente? Basta alterar a variável e "recompilar."
- Macros! Defina seus registros SPF, registros MX ou outros dados repetidos uma vez e reutilize-os para todos os domínios.
- Controle o Cloudflare a partir de uma única fonte de verdade. Ative/desative o proxy do Cloudflare (o botão "nuvem laranja") diretamente dos seus arquivos do DNSControl.
- Mantenha domínios semelhantes em sincronia com transformações e outros recursos. Se um domínio deve ser uma versão filtrada de outro, isso é fácil de configurar.
- É extensível! Todos os provedores de DNS são escritos como plugins. Escrever novos plugins é muito fácil.
Instalação
O DNSControl pode ser instalado por meio de pacotes para macOS, Linux e Windows, ou a partir do código-fonte. Veja as instruções oficiais.
Via GitHub Actions (GHA)
Veja dnscontrol-action ou gacts/install-dnscontrol.
Avisos de descontinuação (atualizado em 21/11/2025)
- REV() mudará de RFC2317 para RFC4183 na v5.0. Esta é uma mudança que quebra a compatibilidade. Avisos são emitidos se a sua configuração for afetada. Nenhuma data foi anunciada para a v5.0. Veja https://docs.dnscontrol.org/language-reference/top-level-functions/revcompat
- NAMEDOTCOM, OPENSRS e SOFTLAYER precisam de mantenedores! Esses provedores não têm mantenedor. Mantenedores respondem a PRs e corrigem bugs em tempo hábil e tentam se manter atualizados em relação às mudanças de protocolo. Interessado em ser um herói e adotá-los? Entre em contato com tal arroba what exit ponto org.
Contribuindo
Quer contribuir? Seja corrigindo um bug, adicionando um novo provedor de DNS ou melhorando a documentação, contribuições são bem-vindas. Veja CONTRIBUTING.md para saber como começar.
Mais informações em nosso site
O site: https://docs.dnscontrol.org/
O guia de primeiros passos: https://docs.dnscontrol.org/getting-started/getting-started