由于我的 DNS 服务器需要一个 MySQL 后端,我决定从 Bind 切换到 PowerDNS,后者的 MySQL 后端稍微方便一些。
基本上:用户使用 Web 前端将域名添加到我的数据库,这些域名已注册并可供 PowerDNS 使用。当我向 DNS 服务器查询这些域名时,我得到了有效的响应。效果非常好。
事实上,我需要将我的域和区域添加到我的 DNS 注册表中,而将它们添加到数据库会破坏我的应用程序的逻辑(只有此应用程序的用户才应该添加域)。我想将额外的域和区域添加到 PowerDNS,而不是直接将它们添加到我的数据库中。
有什么方法可以注册其他域名吗?例如,在文件中注册,然后在执行任何 MySQL 查询之前读取该文件?或者,如果在我的 MySQL 记录中找不到任何内容,可以使用后备文件?
答案1
找到解决方案,PowerDNS 启动板的深度!有一种方法可以在使用 MySQL 后端之前读取 DNS 数据文件,那就是...使用两个后端!引用:
正如所述http://doc.powerdns.com/modules.html- 只是没有那么多文字 ;) - PowerDNS 可以通过启动语句启动任意数量的不同或相同的后端。通常,人们只需在配置文件 pdns.conf 中执行此操作,而不是在命令行中执行此操作。这些后端将按照启动语句中给出的顺序来回答您的 DNS 查询。这意味着,如果您的第一个后端可以回答问题,它就会回答,而如果只有第四个后端可以回答问题,您将需要循环前三个后端,直到 PowerDNS 发出答案。因此,您必须确保您的后端确实回答足够快足够快的接收速度和在 <1 秒内答复的速度应该足以与大多数递归名称服务器兼容,但当然越快越好。
对于我的问题,我选择使用:
- 绑定后端,作为优先的基于文件的后端。
- MySQL 后端,排在第二位。
基本上,只需要进行一点配置更改pdns.local
:
launch=bind,gmysql
我听说你可以更具体地说明(为后端分配名称):
launch=bind:first,gmysql:second
然后,只需为两个后端添加参数:
# Bind backend configuration
bind-config=/path/to/your/zones/file
# MySQL configuration
gmysql-host=localhost
gmysql-port=
gmysql-dbname=db
gmysql-user=user
gmysql-password=passwd
gmysql-dnssec=no
您所要做的就是创建一个引用zone{}
特定于域的文件(包含 SOA、A、MX、NS...记录)的绑定区域文件(块)。
重新开始 !