我在使用 powerdns 委派子域名时遇到了一些麻烦。我的设置非常简单。
示例.com
2 个 powerdns 服务器。1 个主服务器,1 个从服务器。
Zone Config
example.com SOA ns1.example.com
example.com NS ns1.example.com
example.com NS ns2.example.com
ns1.example.com A 192.168.0.1
ns2.example.com A 192.168.0.2
sub.example.com NS ns1.sub.example.com
sub.example.com NS ns2.sub.example.com
ns1.sub.example.com A 192.168.10.1
ns2.sub.example.com A 192.168.10.2
然后我的子域名如下所示:
另外 2 个 powerdns 服务器。1 个主服务器,1 个从服务器。
sub.example.com SOA ns1.sub.example.com
sub.example.com NS ns1.sub.example.com
sub.example.com NS ns2.sub.example.com
ns1.sub.example.com A 192.168.10.1
ns1.sub.example.com A 192.168.10.2
ubuntutest.sub.example.com A 192.168.10.10
当我在子域上的 ubuntutest 主机上的主机上时,我可以很好地解析 NS,并且由于我在子域上设置了递归,因此我可以解析 example.com 上的地址
当我在 example.com 域上的主机上时,我可以很好地解析 example.com 上的内容。但是我无法解析子域上的设备。
当我挖掘子域时,我得到以下输出,显示权限但没有答案。
olly@master:~$ dig sub.example.com. ns
; <<>> DiG 9.9.5-11ubuntu1.3-Ubuntu <<>> sub.example.com. ns
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60134
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 3, ADDITIONAL: 4
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 2800
;; QUESTION SECTION:
;sub.example.com. IN NS
;; AUTHORITY SECTION:
sub.example.com. 86400 IN NS ns1.sub.example.com.
sub.example.com. 86400 IN NS ns2.sub.example.com.
;; ADDITIONAL SECTION:
ns1.sub.example.com. 86400 IN A 192.168.10.1
ns2.sub.example.com. 86400 IN A 192.168.10.2
;; Query time: 3 msec
;; SERVER: 10.3.16.4#53(10.3.16.4)
;; WHEN: Mon Mar 21 16:20:16 GMT 2016
;; MSG SIZE rcvd: 147
有人见过这个吗?如果有,我错过了什么?
多谢 :)
答案1
您的命令:
$ dig sub.example.com. ns
仅要求提供名称服务器 (NS) 记录,因此这就是您所获得的全部信息。
答案2
您获得的答案是推荐,因此零答案是正常的。
权威服务器提供的引用必须满足以下条件:
- 未设置
aa
(权威答案)位 - 零答案
- 包含名称服务器权限的权限部分正在委托给
- 仅当遵循转介需要胶水记录时,附加部分才是强制性的,这里就是这种情况。
NS 记录的权威版本由您委托权限的服务器保存。在这种情况下提供答案部分是不正确的。RFC 2181在这一点上非常清楚:
... 指示区域切割的 NS 记录是所创建子区域的属性,该子区域或其任何子域的来源的任何其他记录也是如此。区域的服务器不应返回与另一个区域的名称相关的查询的权威答案,其中包括区域切割处的 NS 记录,也许还有 A 记录,除非它恰好也是另一个区域的服务器。
至于为什么您获得了引荐,但您没有提供足够的信息来确定这一点。猜测一下,这似乎意味着10.3.16.4
包含 的权威副本example.com
。引荐对指向 的存根解析器(即 OS 解析器库)没有帮助10.3.16.4
;只有递归服务器才会追踪引荐。
我怀疑您已经实现了需要转发器的引荐。如何实现该引荐10.3.16.4
(未提供任何操作系统或软件)超出了本问题的范围。
答案3
非常感谢 Andrew B(以访客身份发帖,因此无法发表评论)
我在 example.com 上运行了 2 个 powerdns 授权服务器(主服务器、从服务器),并带有 MySQL 后端复制。在 ubuntu 14.04 上运行。
主服务器的 pdn.conf(192.168.0.1)
allow-recursion=0.0.0.0/0
recursor=8.8.8.8
allow-axfr-ips=192.168.0.2/32
config-dir=/etc/powerdns
daemon=yes
disable-axfr=no
guardian=yes
local-address=0.0.0.0
local-port=53
log-dns-details=on
log-failed-updates=on
loglevel=3
module-dir=/usr/lib/powerdns
master=yes
slave=no
setgid=pdns
setuid=pdns
socket-dir=/var/run
version-string=powerdns
include-dir=/etc/powerdns/pdns.d
对于 sub.example.com,我在私有云上运行此域名。它也有 2 个 powerdns 名称服务器,带有 mysql 后端。在 debian jessie 上运行。
主服务器 (192.168.10.1) 的 pdns.conf
# General Config
allow-recursion=0.0.0.0/0
recursor=192.168.0.1
setgid=pdns
setuid=pdns
config-dir=/etc/powerdns
socket-dir=/var/run
guardian=yes
daemon=yes
disable-axfr=no
local-address=0.0.0.0
local-port=53
master=no
slave=yes
cache-ttl=0
query-cache-ttl=0
negquery-cache-ttl=0
out-of-zone-additional-processing=no
do-ipv6-additional-processing=no
我的想法是,使用递归器的私有云用户可以通过 example.com 域退出。example.com 域上的用户可以使用 sub.example.com 访问在私有云上运行的服务。