我最近在 Active Directory 环境中的内部 DNS 服务器上启用了 DNSSEC 验证。一切都运行正常,直到几天后我注意到我无法访问某个域,而且只能访问这个域。起初我以为是 DNSSEC 配置不当,但事实证明这个域甚至没有启用 DNSSEC。
因此我开始查看日志等,但什么也没找到。
如果我启用 DNSSEC 并针对此域执行 nslookup,它将工作大约 1-2 分钟。之后我收到以下消息:
PS C:\> nslookup xxxxxxxxxx.sn.mynetname.net 192.168.1.5
Server: internal-dns.domain.local
Address: 192.168.1.5
DNS request timed out.
timeout was 2 seconds.
*** Request to internal-dns.domain.local timed-out
下次尝试我得到这个:
PS C:\> nslookup xxxxxxxxxx.sn.mynetname.net 192.168.1.5
Server: internal-dns.domain.local
Address: 192.168.1.5
*** internal-dns.domain.local can't find xxxxxxxxxx.sn.mynetname.net: Server failed
我已经清除了所有地方的 DNS 缓存,如果我重新启动 DNS 服务,它会再次开始工作 1-2 分钟,之后我再次收到相同的错误。
我接下来想到的办法是检查这个域名的域名服务器。我唯一能找到的是它们没有打开 TCP 端口 53,但这不应该是问题。两个域名服务器的 PTR 相同,但这也不应该是问题。根据https://dnsflagday.net/
我对此感到疯狂,出于这个原因我不得不禁用 DNSSEC 验证。
我在排除故障时发现的另一个疯狂的事情是,如果你nslookup
在 Windows 机器上使用并向名称服务器询问特定域,你会得到同样的错误。看看这个。
这没问题:
PS C:\> nslookup google.com ns1.google.com
Server: ns1.google.com
Address: 216.239.32.10
Name: google.com
Addresses: 2a00:1450:400f:80d::200e
216.58.211.14
但是如果您nslookup
先输入并更改其中的名称服务器,它将不起作用:
PS C:\> nslookup
Default Server: internal-dns.domain.local
Address: 192.168.1.5
> server ns1.google.com
Default Server: ns1.google.com
Addresses: 2001:4860:4802:32::a
216.239.32.10
> google.com
Server: ns1.google.com
Addresses: 2001:4860:4802:32::a
216.239.32.10
*** ns1.google.com can't find google.com: No response from server
我在多台 Windows 10 计算机和多台 Windows Server 2012 和 2016 计算机上尝试了此操作,得到了相同的结果。我不知道这是否与我的 DNSSEC 验证问题有关,但我认为值得一提。我还可以提一下,nslookup
如果您安装了适用于 Windows 的 BIND 工具并使用该版本,则可以在 Linux 计算机上毫无问题地执行此操作nslookup
。
有谁知道可能是什么问题?
这里有人可以使用启用了 DNSSEC 验证的 Windows DNS 服务器查找该域名吗?