PowerDNS 子域名委派,没有答案

PowerDNS 子域名委派,没有答案

我无法将子域名重定向到其他 DNS。

我有:

主要现有域名:d 和新子域名:

| 8412 | 42 | test1.d | NS | ns1.test.test1.d
| 8413 | 42 | test1.d | NS | ns2.test.test1.d
| 8414 | 42 | ns1.test.test1.d | A | 10.64.91.100
| 8415 | 42 | ns2.test.test1.d | A | 10.64.91.200

并返回:

 dig admin.test1.d

; <<>> DiG 9.10.6 <<>> admin.test1.d
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 23733
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 2, ADDITIONAL: 3
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;admin.test1.d.         IN  A

;; AUTHORITY SECTION:
test1.d.            60  IN  NS  ns1.test.test1.d.
test1.d.            60  IN  NS  ns2.test.test1.d.

;; ADDITIONAL SECTION:
ns2.test.test1.d.   60  IN  A   10.64.91.200
ns1.test.test1.d.   60  IN  A   10.64.91.100

但它不能正确返回记录。例如记录 A 是空的。

如果我要求 10.64.91.100 记录被正确返回。

dig @10.64.91.100 admin.test1.d

; <<>> DiG 9.10.6 <<>> @10.64.91.100 admin.test1.d
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 27387
;; flags: qr aa rd; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;admin.test1.d.         IN  A

;; ANSWER SECTION:
admin.test1.d.      86400   IN  A   10.64.91.50

我的配置pdns:

allow-axfr-ips=10.64.91.112

also-notify=10.64.91.112

only-notify=10.64.91.112

api=yes

api-key=XXXXXXXXX


daemon=yes

default-soa-content=ns1.test.eu1.d. admin.domain.pl. 0 10800 3600 604800 3600

default-ttl=3600

disable-axfr=no

guardian=yes

include-dir=/etc/powerdns/pdns.d

launch=

local-address=10.64.91.111

local-port=53

log-dns-details=on

loglevel=4

master=yes

receiver-threads=2

setgid=pdns

setuid=pdns

slave=no

webserver=yes

webserver-address=10.64.91.111


webserver-allow-from=10.64.91.20

webserver-port=8081

query-cache-ttl=60

MySQL的:

# MySQL Configuration
# Launch gmysql backend
launch+=gmysql
# gmysql parameters
gmysql-host=localhost
gmysql-port=3306
gmysql-dbname=XXXX
gmysql-user=XXXXX
gmysql-password=XXXXX
gmysql-dnssec=yes
# gmysql-socket=

有任何想法吗?

我看见

Powerdns 子域名和授权

https://nsrc.org/workshops/2010/sanog16/raw-attachment/wiki/DNS/dns4-presentation.pdf

它应该可以工作。

在 10.64.91.100 和 10.64.91.100 中我使用 dnsdist。

/etc/dnsdist/dnsdist.conf 
-- dnsdist configuration file, an example can be found in /usr/share/doc/dnsdist/examples/

-- disable security status polling via DNS

setLocal("0.0.0.0:53")
setACL({"0.0.0.0/0", "::/0"})

newServer({address="10.64.91.111:54"})
newServer({address="10.64.91.112:54"})
setServerPolicy(wrandom)

在 10.64.91.111 和 10.64.91.112 中我使用 PowerDNS Recursor。

cat /etc/powerdns/recursor.conf 
local-address=10.64.91.111
local-port=54
allow-from=10.0.0.0/8, 127.0.0.0/8, 10.12.0.0/16, 10.13.0.0/16, 195.88.50.0/26, 10.66.0.0/16, 10.64.0.0/16
forward-zones=d=10.64.91.111:53

答案1

如果我理解正确的话,这似乎只是一个期望不匹配的情况。

在问题中的第一个dig命令中,您似乎直接查询权威服务器,当被问及委派子区域中的名称时,它只会响应引荐信息。
这确实是对权威服务器的全部期望,这里没有什么意外发生。

如果要从客户端机器的角度进行全面测试(而不是仅执行获取最终答案所需的一系列查询中的一个步骤),您可以将查询定向到解析器服务器。如果这是基础架构中缺少的部分,那么可以是 PowerDNS Recursor(而不是 PowerDNS Authoritative)、Unbound、启用递归的 BIND、Knot Resolver 等。

这是在客户端计算机上配置的服务器类型(在resolv.conf客户端操作系统具有的任何配置机制中),它将遵循委托链来实际获取客户端所要求的答案,而不是权威服务器,其角色只是提供其拥有的数据(并且在委托的情况下,仅发送问题中所见的推荐)。

答案2

好的,成功了。

我在 recursor.conf 中添加了 dont-query 并删除了 10.0.0.0/8。

默认值为:

默认值:127.0.0.0/8、10.0.0.0/8、100.64.0.0/10、169.254.0.0/16、192.168.0.0/16、172.16.0.0/12、::1/128、fc00::/7、fe80::/10、0.0.0.0/8、192.0.0.0/24、192.0.2.0/24、198.51.100.0/24、203.0.113.0/24、240.0.0.0/4、::/96、::ffff:0:0/96、100::/64、2001:db8::/32

相关内容