
dnscontrol v4.43.2
Infrastruktur als Code für DNS!
DNSControl
DNSControl ist Infrastructure as Code für DNS. Es enthält eine vollwertige Konfigurationssprache (JavaScript-kompatibel) sowie „Plug-ins“, die mit DNS-Provider-APIs wie AWS Route 53, Cloudflare und Gandi kommunizieren. Es kann dieselben DNS-Einträge an mehrere Provider senden. Es läuft überall dort, wo Go läuft (Linux, macOS, Windows). Das Provider-Modell ist erweiterbar, sodass weitere Provider hinzugefügt werden können.
Ein Beispiel
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")
)
Wenn du dnscontrol preview ausführst, spricht das Tool mit den Providern (hier name.com als Registrar und Route 53 als DNS-Host) und ermittelt, welche Änderungen vorgenommen werden müssen.
Wenn du dnscontrol push ausführst, nimmt das Tool diese Änderungen beim Provider vor und meine DNS-Einträge werden korrekt aktualisiert.
Der einfachste Weg, DNSControl auszuführen, ist die Verwendung des Docker-Containers:
docker run --rm -it -v "$(pwd):/dns" ghcr.io/dnscontrol/dnscontrol preview
Sieh dir die Seite Erste Schritte auf der Dokumentationsseite an, um loszulegen!
Unterstützte Provider
DNSControl unterstützt 65 DNS-Provider und Registrare:
¹unterstützt auch Registrar-Funktionen ²nur Registrar
Stack Overflow verwendet dieses System, um Hunderte von Domains und Subdomains über mehrere Registrare und DNS-Provider hinweg zu verwalten.
Du kannst es dir wie einen DNS-Compiler vorstellen. Die Konfigurationsdateien sind in einer DSL geschrieben, die JavaScript sehr ähnlich sieht. Sie wird in eine Zwischendarstellung (Intermediate Representation, IR) kompiliert. Compiler-Backends verwenden die IR, um deine DNS-Zonen auf Diensten wie Route53, Cloudflare und Gandi oder Systemen wie BIND zu aktualisieren.
Vorteile
- Weniger fehleranfällig als das Bearbeiten einer BIND-Zonendatei.
- Reproduzierbarer als das Klicken auf Schaltflächen in einem Webportal.
- Einfacher Wechsel zwischen DNS-Providern: Die DNSControl-Sprache ist anbieterneutral. Wenn du sie zur Pflege deiner DNS-Zoneneinträge verwendest, kannst du problemlos zwischen DNS-Providern wechseln. Tatsächlich lädt DNSControl deine DNS-Einträge auf mehrere Provider hoch, was bedeutet, dass du einen testen kannst, während du zu einem anderen wechselst. Wir haben in drei Jahren dreimal den Provider gewechselt und dabei nie einen DNS-Eintrag verloren.
- Wende CI/CD-Prinzipien auf DNS an! StackOverflow pflegt seine DNSControl-Konfigurationen in Git und nutzt unser CI-System, um Änderungen auszurollen. DNS-Informationen in einem VCS aufzubewahren bedeutet, dass wir die vollständige Historie haben. CI zu nutzen ermöglicht es uns, Unit-Tests und Systemtests einzubinden. Erinnerst du dich, als du vergessen hast, einen „.“ am Ende eines MX-Eintrags zu setzen? Dieses Problem hatten wir nicht mehr, seit wir einen Test eingebaut haben, der sicherstellt, dass Tom diesen Fehler nicht noch einmal macht ... schon wieder.
- Setze auf PR-basierte Updates (GitOps). Erlaube Entwicklern, Updates als PRs zu senden, die du überprüfen kannst, bevor du sie genehmigst.
- Variablen sparen Zeit! Weise einer Konstante eine IP-Adresse zu und verwende den Variablennamen in der gesamten Datei. Musst du die IP-Adresse global ändern? Ändere einfach die Variable und „kompiliere neu“.
- Makros! Definiere deine SPF-Einträge, MX-Einträge oder andere wiederkehrende Daten einmal und verwende sie für alle Domains wieder.
- Steuere Cloudflare aus einer einzigen Quelle der Wahrheit. Aktiviere/deaktiviere den Cloudflare-Proxy (den „Orange-Cloud“-Button) direkt aus deinen DNSControl-Dateien.
- Halte ähnliche Domains synchron mit Transformationen und anderen Funktionen. Wenn eine Domain eine gefilterte Version einer anderen sein soll, ist das einfach einzurichten.
- Es ist erweiterbar! Alle DNS-Provider sind als Plugins geschrieben. Neue Plugins zu schreiben ist sehr einfach.
Installation
DNSControl kann über Pakete für macOS, Linux und Windows oder aus dem Quellcode installiert werden. Siehe die offiziellen Anweisungen.
Über GitHub Actions (GHA)
Siehe dnscontrol-action oder gacts/install-dnscontrol.
Deprecation-Warnungen (aktualisiert am 2025-11-21)
- REV() wird in v5.0 von RFC2317 auf RFC4183 umgestellt. Dies ist eine Breaking Change. Wenn deine Konfiguration betroffen ist, werden Warnungen ausgegeben. Für v5.0 wurde noch kein Datum angekündigt. Siehe https://docs.dnscontrol.org/language-reference/top-level-functions/revcompat
- NAMEDOTCOM, OPENSRS und SOFTLAYER brauchen Maintainer! Diese Provider haben keinen Maintainer. Maintainer reagieren zeitnah auf PRs, beheben Fehler und bemühen sich, über Protokolländerungen auf dem Laufenden zu bleiben. Hast du Interesse, ein Held zu sein und sie zu übernehmen? Kontaktiere tal bei what exit punkt org.
Mitwirken
Du möchtest mitwirken? Ob du einen Fehler behebst, einen neuen DNS-Provider hinzufügst oder die Dokumentation verbesserst – Beiträge sind willkommen. Siehe CONTRIBUTING.md für den Einstieg.
Weitere Informationen auf unserer Website
Die Website: https://docs.dnscontrol.org/
Der Leitfaden für den Einstieg: https://docs.dnscontrol.org/getting-started/getting-started