我想将基于 Bind-DLZ 的设置转换为基于 PowerDNS 的设置。为此,我想使用 PowerDNS 附带的 zone2sql 工具。遗憾的是,此工具直接跳过了我的 中定义的 DLZ 区域named.conf
。我一直在寻找一个脚本,可以将 DLZ 数据库转储到传统 DNS 文件和named.conf
引用它们的文件中,但一直没有找到。
有这样的工具吗?如果有,能否提供链接给我?
答案1
从 Bind-DLZ 数据库中提取 DNS 信息的最简单方法是使用AXFR查询数据库中的每个“区域”。
首先,通过使用适合您的数据库类型的客户端(例如mysql
)连接到数据库并发出语句来确定数据库中存储的区域:
SELECT DISTINCT zone FROM dns_records;
其中,该dns_records
表是存放您的 DNS 信息的表。
其次,确保 Bind 服务器允许来自您将执行提取的主机的传输请求。编辑named.conf
并相应地调整选项块(然后重新启动 Bind):
options {
# Allow host 192.168.1.5 to issue AXFR queries to this server
allow-transfer { 192.168.1.5; };
};
第三,对于从 DLZ 数据库检索到的列表中的每个区域,发出以下命令:
$ dig AXFR @your-dns-server.example.com a.zone.com > a.zone.com.zonefile
其中“a.zone.com”是列表中的区域(例如“example.com”),“a.zone.com.zonefile”是将使用该区域的条目创建的文件。
最后,使用zone2sql工具将每个区域文件转换为 PowerDNS 数据库。