![如何根据 RFC 1035 验证 DNS 区域文件?](https://linux22.com/image/674639/%E5%A6%82%E4%BD%95%E6%A0%B9%E6%8D%AE%20RFC%201035%20%E9%AA%8C%E8%AF%81%20DNS%20%E5%8C%BA%E5%9F%9F%E6%96%87%E4%BB%B6%EF%BC%9F.png)
介绍一下背景 - 我正在构建一个工具,除了执行许多操作外,它还允许用户管理 Azure DNS。在我的应用程序中,有一个功能,用户可以导出 DNS 设置以创建区域文件。使用互联网上的各种资源(例如https://en.wikipedia.org/wiki/Zone_file#File_format和https://www.rfc-editor.org/rfc/rfc1035),我可以创建一个区域文件。
我所苦苦挣扎的是如何根据 RFC 1035 验证我创建的区域文件是否正确有没有一种编程方式可以验证区域文件?或者可能是一些 PowerShell 脚本或系统/第三方工具,我可以使用它们来验证文件。
顺便说一句,我使用 GoDaddy 的 Web 界面导入区域文件,并且运行良好。
答案1
我将借用 NSD 文档中的一段非常适用的段落:
https://www.nlnetlabs.nl/projects/nsd/documentation.html
DNS (RFC 1035) 区域文件的语法
首先:为 DNS 区域文件编写一个干净的词法分析器/语法器是不可能的。乍一看,编写这样一个庞然大物似乎很容易,但当你开始实现它时,细节就会变得混乱。
如果权威名称服务器的作者有这种想法,那么尝试自己实现它(任何非商业产品)可能都是愚蠢的行为。如果您为自己的公司构建了它,我建议使用流行的名称服务器软件提供的区域验证工具之一。BIND 就是一个例子named-checkzone
,但我不会深入讨论这些工具之间的功能比较,因为产品推荐问题与主题无关。您需要自己进行研究。