返回更新列表
新发布Aug 19, 2026

dnscontrol v5.0.0-rc9

DNS的基础设施即代码!

分享

DNSControl

DNSControl/dnscontrol/build Google Group PkgGoDev

DNSControl 是 DNS 的基础设施即代码(Infrastructure as Code)工具。 它包含一套功能完备的配置语言(兼容 JavaScript), 以及可与 DNS 提供商 API(如 AWS Route 53、 Cloudflare 和 Gandi)通信的“插件”。它可以将相同的 DNS 记录发送到多个提供商。 它可以在任何 Go 能运行的地方运行(Linux、macOS、Windows)。提供商模型 是可扩展的,因此可以添加更多提供商。

示例

dnsconfig.js:

// define our registrar and providers
var REG_NAMECOM = NewRegistrar("ndc_main");
var DSP_ROUTE53 = NewDnsProvider("r53_main");

D("example.com", REG_NAMECOM, DnsProvider(DSP_ROUTE53),
  A("@", "1.2.3.4"),
  CNAME("www","@"),
  MX("@",5,"mail.myserver.com."),
  A("test", "5.6.7.8")
)

运行 dnscontrol preview 会与提供商(此处为作为注册商的 name.com 和作为 DNS 主机的 route 53)通信,并确定需要进行哪些更改。

运行 dnscontrol push 会通过提供商进行这些更改,我的 DNS 记录将被正确更新。

运行 DNSControl 最简单的方式是使用 Docker 容器:

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

快速开始

最快的入门方式是 dnscontrol init。交互式向导会询问你的 DNS 提供商和注册商,验证你的凭据,并写入可用的 creds.json 和 dnsconfig.js,其中包含你区域中已存在的记录。

有关完整演练,请参阅文档站点上的 快速开始 页面。

想要对你的 DNS 数据进行完整的“GitOps”控制?克隆 dns-config 起始仓库即可开始!

支持的提供商

DNSControl 支持 68 个 DNS 提供商和注册商:

AdGuard HomeAkamai Edge DNSAlibaba Cloud DNSAutoDNSAWS Route 53¹
AXFR+DDNSAzure DNSAzure Private DNSBINDBunny DNS
CentralNic Reseller¹CloudflareClouDNSCSC Global¹deSEC
DigitalOceanDNS Made EasyDNSOVERHTTPS²DNScaleDNSimple¹
DomainnameshopDynadot²easyname²ExoscaleFortigate
Gandi¹GcoreGidinet¹Google DNSHetzner
hosting.de¹Huawei Cloud DNSHurricane Electric DNSInfomaniakInternet.bs²
INWX¹JokerLinodeLoopia¹LuaDNS
Windows Server DNSMikroTik RouterOSMythic BeastsName.com¹Namecheap¹
NetcupNetlifyNetnodNexDNSNS1
OpenproviderOpenSRS²Oracle CloudOVH¹Packetframe
Porkbun¹PowerDNSRealtime Register¹RWTH DNS-AdminSakura Cloud
SoftLayerTencent Cloud DNS¹TransIPUniFi NetworkVercel
VultrNetbirdWebSupportSpaceship¹mittwald

¹同时支持注册商功能 ²仅支持注册商

优势

  • 比编辑 BIND 区域文件更不易出错。
  • 比在 Web 门户上点击按钮更具可复现性。
  • 轻松在 DNS 提供商之间切换: DNSControl 语言是 厂商无关的。如果你用它来维护你的 DNS 区域记录, 就可以轻松地在 DNS 提供商之间切换。事实上,DNSControl 会将你的 DNS 记录上传到多个提供商,这意味着你 可以在测试一个提供商的同时切换到另一个。我们在三年内 切换了 3 次提供商,从未丢失过一条 DNS 记录。
  • 将 CI/CD 原则应用于 DNS! StackOverflow 将他们的 DNSControl 配置保存在 Git 中,并使用我们的 CI 系统来推出 更改。将 DNS 信息保存在 VCS 中意味着我们拥有完整的 历史记录。使用 CI 使我们能够包含单元测试和 系统测试。还记得你忘记在 MX 记录末尾加上“.”的时候吗? 自从我们加入了一个测试来确保 Tom 不会犯那个错误……再次犯下之后, 我们就再也没有遇到过这个问题。
  • 采用(GitOps)基于 PR 的更新。 允许开发者以 PR 的形式发送更新, 你可以在批准之前进行审查。
  • 变量节省时间! 将 IP 地址分配给一个常量,并在整个文件中 使用该变量名。需要全局更改 IP 地址? 只需更改变量并“重新编译”即可。
  • 宏! 定义一次你的 SPF 记录、MX 记录或其他重复数据, 即可在所有域中重复使用。
  • 从单一事实来源控制 Cloudflare。 直接从你的 DNSControl 文件中启用/禁用 Cloudflare 代理(“橙色云”按钮)。
  • 通过转换和其他功能保持相似域同步。 如果 一个域应该是另一个域的过滤版本,这很容易 设置。
  • 它是可扩展的! 所有 DNS 提供商都以插件形式编写。 编写新插件非常容易。

安装

DNSControl 可以通过 macOS、Linux 和 Windows 的软件包安装,也可以从源代码安装。请参阅官方说明。

通过 GitHub Actions (GHA)

官方 GitHub Action 是:github.com/dnscontrol/dnscontrol-action

其他人也创建了一些,例如:

弃用警告(更新于 2026-08-17)

  • REV() 将在 v5.0 发布后的某个时间从 RFC2317 切换到 RFC4183。 这是一个破坏性更改。如果你的配置受到影响,会输出警告。请参阅 https://docs.dnscontrol.org/language-reference/top-level-functions/revcompat
  • NAMEDOTCOM、OPENSRS 和 SOFTLAYER 需要维护者! 这些提供商没有维护者。维护者会及时响应 PR 并修复 bug,并努力跟上协议变化。有兴趣成为英雄并接手它们吗?请联系 tal at what exit dot org。

贡献

想要贡献?无论是修复 bug、添加新的 DNS 提供商,还是改进文档,都欢迎贡献。请参阅 CONTRIBUTING.md 了解如何开始。

更多信息请访问我们的网站

分类