
dnscontrol v4.43.2
Infrastructure en tant que code pour le DNS !
DNSControl
DNSControl est de l'infrastructure en tant que code (Infrastructure as Code) pour le DNS. Il comprend un langage de configuration complet (compatible JavaScript), ainsi que des « plug-ins » qui communiquent avec les API des fournisseurs DNS tels que AWS Route 53, Cloudflare et Gandi. Il peut envoyer les mêmes enregistrements DNS à plusieurs fournisseurs. Il s'exécute partout où Go s'exécute (Linux, macOS, Windows). Le modèle de fournisseurs est extensible, de sorte que d'autres fournisseurs peuvent être ajoutés.
Un exemple
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")
)
L'exécution de dnscontrol preview communiquera avec les fournisseurs (ici name.com comme bureau d'enregistrement et Route 53 comme hôte DNS) et déterminera les modifications à apporter.
L'exécution de dnscontrol push appliquera ces modifications auprès du fournisseur et mes enregistrements DNS seront correctement mis à jour.
Le moyen le plus simple d'exécuter DNSControl est d'utiliser le conteneur Docker :
docker run --rm -it -v "$(pwd):/dns" ghcr.io/dnscontrol/dnscontrol preview
Consultez la page Premiers pas sur le site de documentation pour commencer !
Fournisseurs pris en charge
DNSControl prend en charge 65 fournisseurs DNS et bureaux d'enregistrement :
¹prend également en charge les fonctions de bureau d'enregistrement ²bureau d'enregistrement uniquement
Stack Overflow utilise ce système pour gérer des centaines de domaines et sous-domaines auprès de multiples bureaux d'enregistrement et fournisseurs DNS.
Vous pouvez le considérer comme un compilateur DNS. Les fichiers de configuration sont écrits dans un DSL qui ressemble beaucoup à JavaScript. Le tout est compilé en une représentation intermédiaire (IR). Les back-ends du compilateur utilisent l'IR pour mettre à jour vos zones DNS sur des services tels que Route53, Cloudflare, et Gandi, ou des systèmes tels que BIND.
Avantages
- Moins sujet aux erreurs que la modification d'un fichier de zone BIND.
- Plus reproductible que de cliquer sur des boutons dans un portail web.
- Changez facilement de fournisseur DNS : Le langage DNSControl est indépendant du fournisseur. Si vous l'utilisez pour gérer vos enregistrements de zone DNS, vous pouvez passer facilement d'un fournisseur DNS à un autre. En fait, DNSControl enverra vos enregistrements DNS à plusieurs fournisseurs, ce qui signifie que vous pouvez en tester un tout en passant à un autre. Nous avons changé de fournisseur 3 fois en trois ans et nous n'avons jamais perdu un enregistrement DNS.
- Appliquez les principes CI/CD au DNS ! StackOverflow conserve ses configurations DNSControl dans Git et utilise notre système de CI pour déployer les changements. Conserver les informations DNS dans un VCS signifie que nous disposons d'un historique complet. L'utilisation de la CI nous permet d'inclure des tests unitaires et des tests système. Vous souvenez-vous de cette fois où vous avez oublié d'inclure un « . » à la fin d'un enregistrement MX ? Nous n'avons plus eu ce problème depuis que nous avons inclus un test pour nous assurer que Tom ne refasse pas cette erreur... encore.
- Adoptez les mises à jour basées sur les PR (GitOps). Permettez aux développeurs d'envoyer des mises à jour sous forme de PR, que vous pouvez examiner avant d'approuver.
- Les variables font gagner du temps ! Attribuez une adresse IP à une constante et utilisez le nom de la variable dans tout le fichier. Besoin de changer l'adresse IP globalement ? Modifiez simplement la variable et « recompilez ».
- Des macros ! Définissez une fois vos enregistrements SPF, MX ou d'autres données répétées et réutilisez-les pour tous les domaines.
- Contrôlez Cloudflare à partir d'une source unique de vérité. Activez/désactivez le proxy Cloudflare (le bouton « nuage orange ») directement depuis vos fichiers DNSControl.
- Gardez des domaines similaires synchronisés grâce aux transformations et à d'autres fonctionnalités. Si un domaine doit être une version filtrée d'un autre, c'est facile à configurer.
- C'est extensible ! Tous les fournisseurs DNS sont écrits sous forme de plugins. Écrire de nouveaux plugins est très facile.
Installation
DNSControl peut être installé via des paquets pour macOS, Linux et Windows, ou à partir du code source. Consultez les instructions officielles.
Via GitHub Actions (GHA)
Voir dnscontrol-action ou gacts/install-dnscontrol.
Avertissements de dépréciation (mis à jour le 2025-11-21)
- REV() passera de RFC2317 à RFC4183 dans v5.0. Il s'agit d'un changement non rétrocompatible. Des avertissements sont émis si votre configuration est concernée. Aucune date n'a été annoncée pour v5.0. Voir https://docs.dnscontrol.org/language-reference/top-level-functions/revcompat
- NAMEDOTCOM, OPENSRS et SOFTLAYER ont besoin de mainteneurs ! Ces fournisseurs n'ont pas de mainteneur. Les mainteneurs répondent aux PR et corrigent les bogues rapidement, et s'efforcent de rester à jour face aux évolutions des protocoles. Envie d'être un héros et de les adopter ? Contactez tal at what exit dot org.
Contribuer
Vous voulez contribuer ? Que ce soit pour corriger un bogue, ajouter un nouveau fournisseur DNS ou améliorer la documentation, les contributions sont les bienvenues. Consultez CONTRIBUTING.md pour savoir comment commencer.
Plus d'informations sur notre site web
Le site web : https://docs.dnscontrol.org/
Le guide de démarrage : https://docs.dnscontrol.org/getting-started/getting-started