我想为一个项目自行创建一个完整的 DNS 层次结构。以下是我的设置:
- BIND9 用于根名称服务器“。” (10.0.2.15)
- 域“dnslab”的 BIND9 权威名称服务器
- PowerDNS 作为递归解析器(10.0.2.10)
- 所有软件都安装在运行 Ubuntu Server 22.04 的单独虚拟机上
我的根提示(=local_root.hints)文件的内容:
. 3600000 NS nameserver.
nameserver. 3600000 A 10.0.2.15
PowerDNS配置的内容:
# defines address to listen on
local-address=10.0.2.10
allow-from=10.0.2.0/24
#################################
# hint-file If set, load root hints from this file
#
hint-file=/etc/powerdns/local_root.hints
#################################
# include-dir Include *.conf files from this directory
#
include-dir=/etc/powerdns/recursor.d
#################################
# lua-config-file More powerful configuration options
#
lua-config-file=/etc/powerdns/recursor.lua
#################################
# dnssec DNSSEC mode: off/process-no-validate/process (default)/log-fail/validate
#
dnssec=off
#################################
# dnssec-log-bogus Log DNSSEC bogus validations
#
# dnssec-log-bogus=no
#################################
# config-dir Location of configuration directory (recursor.conf)
#
config-dir=/etc/powerdns
#################################
我对 PowerDNS 解析器的查询及其答案:
dig @10.0.2.10 dnslab
; <<>> DiG 9.19.19-1-Debian <<>> @10.0.2.10 dnslab
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 61832
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;dnslab. IN A
;; Query time: 3 msec
;; SERVER: 10.0.2.10#53(10.0.2.10) (UDP)
;; WHEN: Fri Feb 02 06:00:23 EST 2024
;; MSG SIZE rcvd: 35
如果我想直接查询我的根,我会得到相同的答案(=SERVFAIL):
dig @10.0.2.10 .
; <<>> DiG 9.19.19-1-Debian <<>> @10.0.2.10 .
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 39738
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;. IN A
;; Query time: 7 msec
;; SERVER: 10.0.2.10#53(10.0.2.10) (UDP)
;; WHEN: Fri Feb 02 06:10:43 EST 2024
;; MSG SIZE rcvd: 28
我还做了以下 2 个观察:
- 我在相同的设置中使用了两个不同的递归解析器(基于 BIND9 和基于 Unbound):在两种情况下,我都获得了正确的名称解析 => 委派等。有效(问题出在解析器级别)
- 如果我将 local_root.hints 文件的内容设置为合法的 Root 服务器,则解析有效:
. 3600000 NS A.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4
PowerDNS 是否可以进行一些检查来确定根名称服务器是否合法?
我真的很困惑,有人可以帮忙吗?