DNSControl:DNS 基础设施即代码工具
用 JavaScript 兼容配置管理 DNS 记录,支持 77 家 DNS 服务商与注册商。
- 浏览
- 2
- 访问
- 0
- 下载
- 0
- 版本
- v5.7.2
- 平台
- Windows、macOS、Linux
详细介绍
项目简介
DNSControl 是一个用代码管理 DNS 的开源工具,把 DNS 记录写成配置文件,像管理代码一样管理域名解析。配置语言兼容 JavaScript,可通过插件调用 AWS Route 53、Cloudflare、Gandi 等服务商 API,并支持把同一组记录推送到多个服务商。它用 Go 编写,可运行在 Linux、macOS、Windows。
主要功能
- 基础设施即代码:用
dnsconfig.js描述 A、CNAME、MX 等记录。 - 多服务商:支持 77 家 DNS 服务商和注册商,可在不同服务商之间迁移或同时推送。
- 变更预览:
dnscontrol preview先查询服务商并显示将要做的修改,dnscontrol push再执行。 - 可复用:支持变量、宏等,SPF、MX 等重复记录可定义一次多处使用。
- 适配 GitOps:配置可放进 Git,通过 PR 审核,并结合 CI/CD 自动发布。
- 可扩展:服务商以插件形式实现,便于新增支持。
安装与使用
官方文档提供 macOS、Linux、Windows 的软件包安装方式,也可从源码编译。最简单的运行方式是用 Docker:
docker run --rm -it -v "$(pwd):/dns" ghcr.io/dnscontrol/dnscontrol preview
也可以先运行 dnscontrol init,通过交互式向导选择 DNS 服务商和注册商、验证凭据,并生成可用的 creds.json 与 dnsconfig.js,其中会包含现有解析记录。
配置示例(README 中的 dnsconfig.js 片段):
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 查看将要变更的内容,运行 dnscontrol push 将变更推送到服务商。
注意事项
- v5.7.1 引入实验性 D() 语法,可用
REGISTRAR()、SERVICE()直接选择凭据;旧语法仍受支持,官方希望用户测试并反馈。 REV()计划从 RFC2317 切换到 RFC4183,属于破坏性变更,受影响配置会输出警告。- NAMEDOTCOM、OPENSRS、SOFTLAYER 三个服务商目前缺少维护者。
本作品整理自 GitHub 开源项目 DNSControl/dnscontrol,原作者 @DNSControl,许可证 MIT。中文介绍由 AI 根据项目 README 整理,以原仓库为准。
更新记录
- v5.7.2当前版本
Greetings DNS fans! 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](https://github.com/DNSControl/dnscontrol/discussions?discussions_q=label%3AAnnouncement%3Afuture_vc). ## Experimental: Try the new D() syntax! Select credential entries directly with REGISTRAR() and SERVICE() in dnsconfig.js. The legacy syntax remains supported; this revision replaces the experimental PROVIDER()/DNS_SERVICE() syntax from v5.3.0. See the examples in the [conversion guide](https://docs.dnscontrol.org/getting-started/converting-dnsconfig). Please test
- v5.7.1
实验性 D() 语法可用 REGISTRAR()、SERVICE() 选择凭据,旧语法仍兼容;修复 BIND、Namecheap、Azure DNS 等服务商问题。
评论