当域不存在时,DNS 服务器的正确响应是什么?

当域不存在时,DNS 服务器的正确响应是什么?

最近,我注意到我的 ISP 的 DNS 服务器在解析不存在的域时出现了一些“奇怪”的行为。这给我带来了一些问题,我想知道这些 DNS 服务器是否真的符合标准。

他们首先添加了一项功能,如果您请求的域名不正确,它会将您引导到他们运行的搜索页面。我猜这对某些浏览网页的人来说很有用,但它会给其他应用程序带来麻烦,特别是当搜索服务器有其他开放端口(如 SMTP)时。

为了解决这个问题,我更改了 ISP 的首选项以关闭此功能。现在我的 ISP 的 DNS 做了一些奇怪的事情。当无法找到某个域时,它会返回我自己的 IP 地址作为该不存在域的 A 名称。所以现在如果我点击一个不再存在的链接,它会将我跳转到我自己的主页(通过相同的 Internet 连接运行)。

我试图理解为什么被弹回到我自己的 IP 地址会是有用的。更重要的是,这是标准吗?还是他们为了他们自己最清楚的某些目的而违反了标准?

答案1

是的,你的 ISP 违反了标准,但这在当今很常见。你的 ISP 的 DNS 服务器应该返回NXDOMAIN响应或“不存在的域”。

如果他们无法做到这一点,我会考虑使用外部 DNS 服务器,例如谷歌或者开放DNS或者为您的客户端运行您自己的内部缓存/解析服务器。

关于 OpenDNS 的说明,我相信您必须注册一个企业帐户才能关闭 NXDOMAIN 重定向。

答案2

不。您应该获得 NXDOMAIN (http://dnsknowledge.com/whatis/nxdomain-non-existent-domain-2/) 当域名在权威 DNS 服务器中不存在时。例如:

host foooo.serverfault.com
Host foooo.serverfault.com not found: 3(NXDOMAIN)

Google 确实返回了 NXDOMAIN

 host foooo.serverfault.com 8.8.8.8
 Using domain server:
 Name: 8.8.8.8
 Address: 8.8.8.8#53
 Aliases: 

 Host foooo.serverfault.com not found: 3(NXDOMAIN)

您是否尝试过使用自己的 DNS 服务器(BIND 缓存 DNS 服务器)?跟踪此问题的最佳方法是运行 dig 命令,或者最好使用 tcpdump 命令。以下将跟踪来自根名称服务器的委派路径,以验证您是否从自己的权威 DNS 服务器获取了正确的数据:

 dig +trace your.domain.com

答案3

我不确定 RFC 对此有何规定。但是 Window DNS 返回超时。

> yagoo.mil
Server:  mylocaldc.com
Address:  172.27.27.10

DNS request timed out.
    timeout was 2 seconds.
DNS request timed out.
    timeout was 2 seconds.
*** Request to mylocaldc.com timed-out

然而谷歌返回了域名,没有答案。

> server 8.8.8.8
Default Server:  google-public-dns-a.google.com
Address:  8.8.8.8

> yagoo.mil
Server:  google-public-dns-a.google.com
Address:  8.8.8.8

Name:    yagoo.mil

答案4

那是……等,什么?

对于任何不存在的域,您确实应该获取 NXDOMAIN。

如今,不存在的域名上出现通配符结果已成为现实 - 尽管这可能令人遗憾。但将请求 IP 作为通配符返回...这没有任何意义。我也从未见过 Google 做过这样的事情。

您是否有输出dig或者nslookup可以分享来澄清正在发生的事情?

或者,您是否愿意分享 ISP 的 DNS 服务器的 IP 或名称?我很想看看这种做法,因为这完全没有意义。我想不出您所描述的行为存在的任何理由。

相关内容