我对 DNS 服务器领域还很陌生,但作为当前工作的一部分,我应该对我们的办公室网络基础设施进行升级。
在查看了可用选项后,我决定使用 PowerDNS 解决方案 PDNS 服务器。主要是因为通过 MySQL 后端可以轻松管理选项。
我已经运行了 PDNS 服务器,甚至可以满足我的需求,但我发现我们的旧 BIND9 和新 PDNS 的响应之间存在一些显著差异:缺少附加部分、答案“不权威”等等。
基本上要求我们的 DNS 为:
- 如果请求的域名在 MySQL 后端的记录中(例如 intranet-domain.ourdomain.com),那么响应应该是权威的。
- 如果请求的域名不在 MySQL 后端的记录中,则应将请求转发到外部网络以从适当的权威 DNS 获取答复。
我们的当前设置是:
- Debian 7
- pdns(来自标准 repo 的 3.2)+ pdns-backend-mysql + poweradmin
- pdns-recursor(否则它不会解析任何外部域名)
问题:
- 我真的需要 pdns-recursor 才能使外部地址解析正常工作吗?如果有办法将未知地址转发到 ISP DNS,请告诉我。
- 如何使响应看起来更像 BIND9?例如,我还想看到有关请求地址的 NS 等的附加部分。
- 此外,如果我将我们的 DHCP PDNS 设置为主 DNS,将 BIND9 设置为辅 DNS,那么响应将始终来自 BIND9,而不是 PDNS。尽管我已将所有记录和区域从 BIND9 导入到 MySQL 后端。如何修复它?
域名服务器配置文件:
allow-recursion=192.168.1.0/8,10.0.0.0/16,127.0.0.0/8
allow-recursion-override=on
config-dir=/etc/powerdns
daemon=yes
disable-axfr=yes
guardian=yes
lazy-recursion=yes
local-address=192.168.1.5
local-port=53
master=yes
module-dir=/usr/lib/powerdns
recursor=127.0.0.1
setgid=pdns
setuid=pdns
socket-dir=/var/run
version-string=powerdns
out-of-zone-additional-processing=yes
include=/etc/powerdns/pdns.d
递归器配置文件:
local-address=127.0.0.1
local-port=53
quiet=yes
setgid=pdns
setuid=pdns
pdns.local.gmysql:
launch=gmysql
gmysql-host=localhost
gmysql-port=
gmysql-dbname=pdns
gmysql-user=pdns
gmysql-password=pdns
gmysql-dnssec=yes
答案1
听起来您想将递归解析器和权威名称服务器合并到一台服务器中。
通过在配置文件中指定 recursor 选项,需要递归处理的问题将交给指定的 IP 地址
http://doc.powerdns.com/html/recursion.html
该文件继续指出,注意::
注意不要将递归指向 PowerDNS 权威服务器本身,这会导致非常紧密的数据包循环!
看起来您已成功通过将 pdns-recursor 放在 127.0.0.1 上来将两者分开。
您可以通过向服务器的 IP 发送 dig 或 host 命令进行测试,并观察 dns 服务器的所有接口上使用 wireshark 或 tcpdump 发生的情况。
关于权威标志,请参见问题3:
http://doc.powerdns.com/pdns-users-faq.html
根据评论进行编辑:
如果您想使用另一个名称服务器作为递归器,请在 pdns.conf 的递归器设置中设置它。例如:
递归器:8.8.8.8