Skip to content

DNSControl

Infrastructure as Code

Infrastructure as Code for DNS, providing a configuration language and extensible provider plugins to manage records across multiple registries and providers.

Go Latest v4.41.0 · 1d ago Security brief →

Features

  • Declarative JavaScript‑compatible DSL for defining DNS zones
  • Extensible plug‑in model supporting 62+ DNS registrars and providers (AWS Route 53, Cloudflare, Gandi, etc.)
  • Can push identical records to multiple providers simultaneously
  • Cross‑platform: runs anywhere Go is supported (Linux, macOS, Windows)
  • Preview changes before applying them with a dry‑run command

Recent releases

View all 16 releases →
No immediate action
v4.41.0 Breaking risk

Netnod, Azure Private DNS, HEDNS RP, Route53 updates

No immediate action
v4.40.0 Breaking risk

TencentCloud, AzurePrivateDNS, Namecheap, Oracle, Route53, CI/CD

No immediate action
v4.39.0 Breaking risk

NetBird provider, init expansion, doc & CI automation

Review required
v4.38.0 Breaking risk
Auth RBAC Dependencies

get‑zones syntax change

v4.37.1 Breaking risk

Minor fixes and improvements.

Full changelog

Greetings DNS fans!

There are no new features or bugfixes in this release. The only changes are related to fixing build issues. If you couldn't access the Docker Hub container images, this will hopefully fix that problem. We won't know until we've done a release.

Sincerely,
--Tom Limoncelli

Monthly video call!

Everyone is invited to the Monthly DNSControl Community Video Conference Call on the 2nd Tuesday of each month. Join whether you are a new user with questions or an experienced developer that wants to discuss DNSControl internals... or anything in between! Meeting details on
GitHub Discussions.

Changelog

CI/CD:

  • c77498f97c6a68fc83500a1b68c027a10a7fec3e: Build(deps): Bump actions/cache from 5.0.3 to 5.0.5 (#4197) (@dependabot[bot])
  • 8ccf7027c320908d4dde8369e04b93bdce83461b: Build(deps): Bump actions/upload-artifact from 7.0.0 to 7.0.1 (#4196) (@dependabot[bot])
  • 05186f911083c676bdc49ca1b872bd84a2210c31: CICD: Integration test output not visible (#4230) (@TomOnTime)

Deprecation warnings

[!WARNING]

  • REV() will switch from RFC2317 to RFC4183 in v5.0. This is a breaking change. Warnings are output if your configuration is affected. No date has been announced for v5.0. See https://docs.dnscontrol.org/language-reference/top-level-functions/revcompat
  • NAMEDOTCOM, OPENSRS and SOFTLAYER need maintainers! These providers have no maintainer. Maintainers respond to PRs and fix bugs in a timely manner, and try to stay on top of protocol changes.

Install

macOS and Linux

Install with Homebrew (recommended)
brew install DNSControl/tap/dnscontrol
Using with Docker

You can use the Docker image from Docker hub or GitHub Container Registry.

docker run --rm -it -v "$(pwd):/dns" ghcr.io/dnscontrol/dnscontrol preview

Anywhere else

Alternatively, you can install the latest binary (or the apt/rpm/deb/archlinux package) from this page.

Or, if you have Go installed, you can install the latest version of DNSControl with the following command:

go install github.com/DNSControl/dnscontrol/v4@main

Update

Update to the latest version depends on how you choose to install dnscontrol on your machine.

Update with Homebrew

brew upgrade DNSControl/tap/dnscontrol

Alternatively, you can grab the latest binary (or the apt/rpm/deb package) from this page.

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

About

Stars
3,846
Forks
507
Languages
Go JavaScript Dogescript

Install & Platforms

Install via
docker
Platforms
linux macos windows

Community & Support

Beta — feedback welcome: [email protected]