将我的 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 里描述区域:
wyf.dn42 { file zones/db.wyf.dn42 reload log errors}从上到下依次是:用 file 插件读取 BIND9 风格的区域文件,配合 reload 做自动重载,对这个区域使用 log & errors 打印日志和错误分别到 stdout 和 stderr。
很好,我们使用 coredns 命令启动,就能通过 dig wyf.dn42 @::1 查询到我们的区域内容了。
人机验证:请刷新页面以加载评论区