返回更新列表
新发布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("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")
)

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

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

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

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

有关入门信息,请参阅文档站点上的入门页面!

支持的提供商

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

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

Stack Overflow 使用该系统来管理跨多个注册商和 DNS 提供商的上百个域名和子域名。

你可以把它看作是一个 DNS 编译器。配置文件以一门看起来很像 JavaScript 的 DSL 编写,并被编译为中间表示(IR)。编译器后端利用 IR 在 Route53、Cloudflare、Gandi 等服务或 BIND 等系统上更新你的 DNS 区域。

优点

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

安装

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

通过 GitHub Actions (GHA)

请参阅 dnscontrol-actiongacts/install-dnscontrol

弃用警告(更新于 2025-11-21)

  • REV() 将在 v5.0 中从 RFC2317 切换到 RFC4183。 这是一项破坏性更改。如果你的配置受到影响,将会输出警告。v5.0 的发布日期尚未公布。请参阅 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

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

网站:https://docs.dnscontrol.org/

入门指南:https://docs.dnscontrol.org/getting-started/getting-started

随时间变化的 Star 数

Stargazers over time

分类