skip to content
阳帆の小窝

将我的 DN42 权威 DNS 迁移至 CoreDNS

/ 3 min read

众所周知,我运营着一个属于自己的自治系统,主要用来学习网络技术、进行实验操作,同时也借此结识新朋友,与同样热爱网络的同好建立对等互联。目前,我的网络已覆盖全球六个区域,采用双栈 BGP 协议构建了全互联(Full-mesh)架构;内部路由则通过 iBGP 和 Babel 协议协同处理。如果你也在 DN42 网络中,欢迎随时向我提出对等互联请求。

最近,我将自己在 DN42 中的权威 DNS 服务迁移到了 CoreDNS。之所以做这个调整,主要是看中 CoreDNS 灵活的插件体系和更现代的性能表现,方便后续按需扩展功能(例如自定义 DNS 响应、与 Kubernetes 或 Prometheus 对接等)。迁移过程顺利,目前所有域名解析均已切换至新服务,解析延迟和稳定性都有所改善。

在查阅相关文档和博客后,我的目录架构是这样的:

dn42-zones/
├── Corefile # CoreDNS config
├── zones/
│ └── ... # Zone files (db.*)
└── scripts/
├── deploy.sh # One-click deploy script=
└── git-pull.sh # Pull latest zones on the server

因为我不需要原来的 AXFR/IXFR 等内容,一切依靠 GitOps,所以我们只需要一个 Corefile 即可。

在 Corefile 里描述区域:

Terminal window
wyf.dn42 {
file zones/db.wyf.dn42
reload
log
errors
}

从上到下依次是:用 file 插件读取 BIND9 风格的区域文件,配合 reload 做自动重载,对这个区域使用 log & errors 打印日志和错误分别到 stdout 和 stderr。

很好,我们使用 coredns 命令启动,就能通过 dig wyf.dn42 @::1 查询到我们的区域内容了。

人机验证:请刷新页面以加载评论区