Skip to content

Release history

DNSControl releases

Infrastructure as code for DNS!

All releases

16 shown

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.

v4.37.0 Breaking risk
⚠ Upgrade required
  • Update Homebrew installation to `DNSControl/tap/dnscontrol` via `brew uninstall stackexchange/tap/dnscontrol && brew install DNSControl/tap/dnscontrol`
  • Docker images are now published at docker.io/dnscontrol/dnscontrol and ghcr.io/dnscontrol/dnscontrol
Breaking changes
  • REV() will switch from RFC2317 to RFC4183 in version 5.0, altering its output format.
Notable features
  • IGNORE()'d record report now emitted in dnsconfigjs format
  • GCLOUD provider gains metadata‑driven DNSSEC support
Full changelog

Greetings DNS fans!

It's been a while since the last release. Thank you for your patience. We have some exciting news!

DNSControl has gone independent! The GitHub repos have been transfers to an independent GitHub org appropriately named DNSControl. We thank Stack Overflow for their past support and a special thanks to the SO employees (CP and RJ especially) involved in the negotiations and the technical work to complete the transfers that followed.

  • Due to the change, our CI/CD pipeline required many updates. The goal of this release is to fix those issues without introducing any new features. See https://github.com/DNSControl/dnscontrol/issues/4227 for details. It also includes some bug fixes and new features that had been merged but not yet released prior to the separation.
  • Once we're confident the new system works, we'll start merging the PRs that have been accumulating since May.

Special thanks to @cafferata and @chicks-net for their help getting this release across the finish line!

Action needed: New names

New org, new names!

Homebrew is now DNSControl/tap/dnscontrol. You'll want to uninstall the old name:

 brew uninstall stackexchange/tap/dnscontrol
 brew install DNSControl/tap/dnscontrol

There are new URLs for Containers:

  • Docker hub: https://hub.docker.com/r/dnscontrol/dnscontrol/
  • GitHub Container Registry: https://github.com/dnscontrol/dnscontrol/pkgs/container/dnscontrol

The official GitHub Action is now:

  • https://github.com/DNSControl/dnscontrol-action
  • Please update your .github files.

Release highlights:

  • Many PRs related to the separation including CICD and documentation fixes. @cafferata took on most of the burden!
  • e4702af24985b07fd291f0e0ed70f745027a379b: NEW FEATURE: IGNORE()'d record report now in dnsconfigjs format (#4148) (@tlimoncelli)
  • cfa11260f61e0bd08e2913e58446900a3368c61a: BUGFIX: Make OPENPGPKEY records functional. (#4139) (@gucci-on-fleek)
  • d6cb9148575411f92f16e1572ef9f811ca0a4a55: BUGFIX: Two global flags can be appreviated to -v, causing confusion (#4141) (@tlimoncelli)

Provider-specific changes:

  • 49260f570fe31574435457cb3abf98403e238d26: GCLOUD: Enable support for metadata-driven DNSSEC (#4147) (@miono)
  • 342e4d1e5ba9367348847ffcbdadb8788a48b1cf: CLOUDFLAREAPI: Document auto-maintained records, debug mode (#4146)

Thanks to all contributors involved in this release! This is a community project and we couldn't do it without all of your contributions!

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

Major features:

  • e4702af24985b07fd291f0e0ed70f745027a379b: NEW FEATURE: IGNORE()'d record report now in dnsconfigjs format (#4148) (@tlimoncelli)

Provider-specific changes:

  • 49260f570fe31574435457cb3abf98403e238d26: GCLOUD: Enable support for metadata-driven DNSSEC (#4147) (@miono)
  • 342e4d1e5ba9367348847ffcbdadb8788a48b1cf: CLOUDFLAREAPI: Document auto-maintained records, debug mode (#4146) (@tlimoncelli)

Documentation:

  • 92d4efa3d4b5f00fb731fc9b318b9dbfe8556c44: DOCS: Fixed 404 account URL in namedotcom documentation (#4168) (@cafferata)
  • 5ec62101758144f0c2fad8f3b9f2baf9888a8da0: DOCS: Homebrew-tap GitHub fine-grained PAT (#4228) (@cafferata)
  • fc6e497a9f1952cc6e15d6cbd91f9e7dcbaf8705: DOCS: Remove Stack Overflow weekly accomplishments from release steps (#4226) (@cafferata)

CI/CD:

  • 58966dc9403aa37ca83859f6f69a1bfc146e22cb: BUILD: Fix typo in GoReleaser GHCR image path (#4223) (@cafferata)
  • ec4726bf0194dd6260b1c059fec77f01111aeec2: BUILD: Speed up GoReleaser in PR builds with --single-target --skip=before (#4167) (@cafferata)
  • 70f410c5f9fa843625b42f6f3a2f014ddbeb5933: Build(deps): Bump alpine from 3.23.3 to 3.23.4 (#4212) (@dependabot[bot])
  • 7ef968281712694b734ec22881fb9ef972cb54d5: Build(deps): Bump docker/login-action from 3 to 4 (#4144) (@dependabot[bot])
  • 28cde9c6b3873e2439792a2fbb282586195db5bc: Build(deps): Bump docker/setup-buildx-action from 3 to 4 (#4143) (@dependabot[bot])
  • 10e244e82214415466f9e4fe202ea40d32384a43: Build(deps): Bump docker/setup-qemu-action from 3 to 4 (#4142) (@dependabot[bot])
  • 5744b1defa51a33ecb091a92a39a4edac1cbe02b: CICD: Automate release prep steps: bin/prepare_release.sh (#4145) (@tlimoncelli)
  • d582b8843286821701202f092493ef3e534c20de: CICD: Run integration tests daily/manually instead of with each push (#4150) (@tlimoncelli)
  • b4ef11b4b2ebadf9803e7b9e44bbdb7576e70bcd: CICD: pr_integration_tests.yml should only run a smoke test unless fulltest is needed (#4153) (@tlimoncelli)
  • 7aa4fb3ffe9f509b1174133622d314344f9c8b9b: cicd(gocov): Upgrade from golang.org/x/exp/slices to slices (#4217) (@TomOnTime)
  • 39f5775bccdc158a2e16c44900d3b33bbe318de1: cicd(golangci): Exclude govet false positive (#4215) (@TomOnTime)

Dependencies:

  • b2cab1129d012bb99508262461374eaba483005c: CHORE: Update dependencies (#4222) (@TomOnTime)
  • 6cb7f44d82c09ff3c7d995c7554801007803062b: CHORE: Update dependencies (#4229) (@TomOnTime)

Other changes and improvements:

  • cfa11260f61e0bd08e2913e58446900a3368c61a: BUGFIX: Make OPENPGPKEY records functional. (#4139) (@gucci-on-fleek)
  • d6cb9148575411f92f16e1572ef9f811ca0a4a55: BUGFIX: Two global flags can be appreviated to -v, causing confusion (#4141) (@tlimoncelli)
  • 3b9fac8354f3fcddf81d619913f9c822c3b1f562: CHORE: fmt github yml files (#4149) (@tlimoncelli)
  • f62e69116236425fbb687cd37945446c3d9766f7: Fix .goreleaser.yml (@TomOnTime)
  • 2f3c93708d31f5474b10e678f415dc111a8842d6: Fix .linkspector.yml (@TomOnTime)
  • 560c67b908cb28dad3d8a734dbe0e9f8e8b2c4a4: Fix README (@TomOnTime)
  • b155ae49ac9be9896117e0f55087726fb73f04c5: Fix StackExchange in docs (@TomOnTime)
  • c4531b21d21489337aa50c3db3b8a46eb2d759fb: Fix actions (@TomOnTime)
  • 80da7b1ec21f3eb8a1e872717f487e93f581974f: Fix badges (@TomOnTime)
  • f1d0bdfd55c22a8c4e03ae00349f730661f4ab79: Fix build (@TomOnTime)
  • d5722fcc5b23c1eee3e865989a9fbf0a636afce6: Fix code-tricks.md (@TomOnTime)
  • 16d0d81d36ee203de1a35e579b5f4b4fd837a57d: Fix dockerhub/ghcr references (@TomOnTime)
  • 0c2a0c45923d79cb315e4383836644c5598c487b: Fix github pages (@TomOnTime)
  • 2e1ab98466d56e45213331cd18c391ea458d697f: Fix gitlab instructions (@TomOnTime)
  • 9dbd55700fa3ac2155d060cc989d6df5004707bc: Fix homebrew (@TomOnTime)
  • 323d4e12a48fa728a96d2f479b368156a20463de: Fix imports (@TomOnTime)
  • 70b1d6e64edf295a3502a37cc0014f17ccda9c86: Fix issues (@TomOnTime)
  • 67a137657396ef50f6d1ed4a1ffbec61b2fa0a84: Fix reference to github source (@TomOnTime)
  • 006dc26b1e5d7029cba618fea18439aadeb5dee7: Fix release eng (@TomOnTime)
  • 5aece98acf53ce295c562a799adc5701f88fff69: Fix remaining references to https://github.com/StackExchange/dnscontrol (@TomOnTime)
  • c0043d997c1e00212dcba95e227742193168a369: Fix starchart (@TomOnTime)
  • e02fa902fc11512251d6746fcbdddbfc1faa959b: Fix tom's github and email address (@TomOnTime)
  • 1343b231c5005880cc4052897f220d80f11206ae: REFACTOR: Change GetZoneRecords() signature (#4152) (@tlimoncelli)
  • 6a9ac66cf20c8e0a0117a20cf0ce1846d5f2ebcf: Remove references to blackbox (@TomOnTime)
  • 0f20c4bb6b05b0330a98035e8e46fd4fb157ad97: goimports (@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.

v4.36.1 Bug fix
Notable features
  • Signed macOS binaries
  • Cloudflare performance improvement
  • Latest Go compiler
v4.36.0 New feature
Breaking changes
  • --cmax default changed from 999 to 100
Notable features
  • DNSIMPLE SVCB/HTTPS/TLSA support
  • AXFRDDNS OPENPGPKEY/SMIMEA
  • GCLOUD AutoDNSSEC
v4.35.0 New feature
Breaking changes
  • HEXONET provider deprecated, use CNR instead
Notable features
  • UniFi Network DNS provider
  • Mikrotik RouterOS provider
  • MCP Server documentation
v4.34.0 Breaking risk
Breaking changes
  • INWX NAMESERVER() now replaces instead of merges registrar list
Notable features
  • BUNNY_DNS PullZone records
  • Homebrew code signing
  • LINODE CAA flags support
v4.33.1 Bug fix
Notable features
  • Cloudflare comment/tag removal
  • Linode SRV record support
v4.33.0 New feature
Notable features
  • Gidinet DNS/registrar provider
  • Infomaniak DNS/registrar provider
  • Cloudflare record comments
v4.32.0 New feature
Notable features
  • BunnyDNS SRV '.' targets
  • Cloudflare TXT warning suppression
  • RFC documentation links
v4.31.1 Bug fix

Bugfix release addressing SPF optimizer regression from v4.31.0. Do not use v4.31.0 if relying on SPF optimization.

v4.31.0 New feature
Notable features
  • DNScale DNS provider
  • BUNNYDNS SVCB/HTTPS support
  • CLOUDNS zone creation
v4.30.0 New feature
Notable features
  • CLOUDNS registrar support
  • CLOUDNS GeoDNS
  • PORKBUN SSHFP/URL records

Beta — feedback welcome: [email protected]