nslookup 找到 IP 地址,但仍声明 NXDOMAIN

nslookup 找到 IP 地址,但仍声明 NXDOMAIN

在我的网络中我有:

  • mikrotik 路由器 ( 10.0.0.1) 带有静态 DNS 条目myhost.mydomain.com->10.0.0.4
  • 作为上游 DNS10.0.0.128使用的adguard 服务器 ( )10.0.0.1
  • DHCP 将其10.0.0.128作为主要 DNS。

我在 Ubuntu 机器上遇到了非常奇怪的 DNS 解析情况:

[21:22:18][root@ubuntu]:~# nslookup myhost.mydomain.com
Server:     127.0.0.53
Address:    127.0.0.53#53

Non-authoritative answer:
Name:   myhost.mydomain.com
Address: 10.0.0.4
** server can't find myhost.mydomain.com: NXDOMAIN

所以 - 名称解析为 10.0.0.4,但不知何故它仍然说NXDOMAIN- 这是怎么回事?

更奇怪的是,当我登录到我的域名注册商并添加一个CNAME指向的*.mydomain.com条目mydomain.com(解析为我的托管服务提供商的 IP)时 - 我看到的是:

[21:58:04][root@ubuntu]:~# nslookup myhost.mydomain.com
Server:     127.0.0.53
Address:    127.0.0.53#53

Non-authoritative answer:
Name:   myhost.mydomain.com
Address: 10.0.0.4
myhost.mydomain.com    canonical name = mydomain.com.

但是,从我的日常驱动程序(macOS)中我没有遇到这个问题:

[20:46:57][shalak@shalak-mac]:~$ nslookup myhost.mydomain.com
Server:     10.0.0.128
Address:    10.0.0.128#53

Non-authoritative answer:
Name:   myhost.mydomain.com
Address: 10.0.0.4

这里发生了什么?

答案1

那么 - 名称解析为 10.0.0.4,但不知何故它仍然显示 NXDOMAIN - 这是怎么回事?

nslookup 使查询:一个用于A记录,另一个用于AAAA记录(IPv6 地址)。通常,两个查询要么成功,要么失败(无论域具有哪种地址 - 没有 IPv6 地址只意味着空的成功答案)。

但有些解析器(尤其是一些广告拦截器)误解了 DNS 协议,只要请求的记录类型不存在,就会回复 NXDOMAIN,即使名称通常存在。(事实上,我记得 Adguard 就是这样做的故意地,以“阻止 IPv6 泄漏”之类的。)

使用nslookup -q=Anslookup -q=AAAA比较结果。

使用数据包捕获工具来验证 Adguard 是否从上游(即来自 Mikrotik)接收 NXDOMAIN 或者是否自行决定发明响应。(如果是 Mikrotik,请确保您正在运行最新的固件。)

答案2

这是 RouterOS 7.7 中的一个错误 - 我花了 2 天时间对其进行故障排除 :( 解决方案:降级或安装 7.8beta3

来自 7.8b3 的变更日志:

*) dns - 当上游服务器上未配置或找不到适当类型记录时,以“NOERROR”响应静态域名的 DNS 请求;

相关内容