DNS超时应该如何工作?


9

我最近遇到了一个问题,其中要求我的服务器(带有托管DNS提供商)的IP地址的远程服务响应:

DNS problem: SERVFAIL looking up A for mysql.xavamedia.nl

(更新:这里提到的远程服务是“让我们加密”;我针对他们的问题跟踪器提交了一个错误,这使我走上了这条路。)

在本地网络上进行测试时,我能够看到有时从托管的DNS服务器收到空的DNS响应。显然,这是间歇性的,因为仅当DNS记录不在高速缓存中时才会发生,并且仅在DNS服务器非常繁忙时才出现问题。

这是Wireshark对空响应消息的描述:

空响应的Wireshark屏幕截图

当然,由于大多数DNS查询和响应都是通过UDP发送的,因此本地解析器将等待一段时间以等待响应,然后放弃。我现在想知道的是,是否存在有关DNS响应时间的准则?我的DNS托管服务商有点耸耸肩,说我的本地解析器过早发送了空响应。我以前从未遇到过此问题,但是我对失败模式感到惊讶-空DNS响应,没有错误代码。

有人知道一些有关如何工作以及如何/何时可以证明我的DNS托管做错事的准则吗?


1
您能否更新问题以提供有关空响应的更多信息?取决于标志设置和授权部分的外观,这可能意味着很多事情。我们要么需要查看dig/ 的输出,要么需要查看nslookupWireshark解剖的输出。(tcpdump不够好),如果您使用nslookupset debug请先执行。
Andrew B

我有一个pcap,但不确定如何才能在此处最佳显示?
djc 2016年

1
在Wireshark中将其打开,单击数据包,然后展开DNS协议的信息。还要展开子类别,然后使用“插入图像”按钮在问题中张贴屏幕截图。您可以将屏幕截图裁剪为DNS协议内容。
安德鲁B

Answers:


6

您正在查看的空响应是称为的综合状态NODATANODATA并且NXDOMAIN都表示该名称不存在,而是NXDOMAIN适用于所有的名字下面指定的记录,以及。NODATA建议该名称与未请求类型的记录相关联,或者您所请求的内容下方有其他记录。(即example.test.xavamedia.nl.

从您的外卖NODATANXDOMAIN有效地在这方面是相同的:请求的名称和类型的记录并不存在。一个权威域名服务器达到了所要求的领域,它说回来,说明该名称和类型的记录不存在。这不是通信错误。权威服务器说它没有数据。您正在与之交谈的服务器很可能已经处理了该请求,并且在最近四个小时内否定性地缓存了该记录的缺失。(14400秒是SOA记录为定义的负缓存间隔xavamedia.nl.

无论是NXDOMAINNODATA 自行将导致超时在这种情况下,当遇到,但你的解析器库可能会从这里转移到附加的DNS后缀搜索,进而可以触发一个超时搜索域的权威DNS服务器。

应该注意的是,这些都不能解释为什么您SERVFAIL在查找时遇到响应mysql.xavamedia.nl.。这指出了递归服务器从权威服务器获取答案的问题。权威服务器答复,或者SERVFAIL递归服务器无法访问任何权威服务器,或者递归服务器确定返回的数据无效。您提供的信息无法证明所有这些。


感谢您的详细回答!尚不清楚:如果NODATA响应是由权威服务器发起的,则我的DNS托管存在问题,因为这些域已经存在很长时间了(通过通配符A记录)。因此,我的另一个问题是,如何证明权威服务器是否做错了什么?
djc 2016年

NODATA你的数据包捕获就是证明。相关的问题是“为什么权威服务器会回答并说不存在这样的记录?” 。不幸的是,除非您可以通过直接查询权威服务器来证明它(消除了耸肩和指责递归服务器的操作员的能力),否则这是一个很难解决的问题,请记住,这三者中只有一个偶尔会出现异常。
安德鲁B

NODATA表示名称确实存在,但是没有所请求类型的记录。例如,您要求A记录,但只有MX记录。如果名称是DNS层次结构中的中间节点并且没有自己的记录,则也可能发生这种情况。
Barmar

@Barmar是的,这里所说的是权威服务器报告该记录名称+类型对不存在,并且djc由于存在一段时间的通配符记录而对此表示困惑。
安德鲁B

我的评论针对您的第一点:“ NODATA和NXDOMAIN都表明该名称不存在”。NXDOMAIN表示名称不存在,NODATA表示名称确实存在,但请求的记录类型不存在。
巴马尔

2

除了RFC 1123 http://tools.ietf.org/rfcmarkup?rfc=1123#page-77的 “ 6.1.3.3有效资源使用”一节中定义的准则之外,我不知道任何其他准则。

超时值指定为“不少于5秒”。RFC还声明应将临时故障缓存。如果客户端违反RFC的2.2节,这将防止过多的DNS请求。该部分规定,如果发生软故障,客户端应在重试之间等待“合理的”时间。

关于此主题也有一个Stackoverflow线程,但是除了一些实际观察之外,它没有包含更多信息。/programming/3036054/ideal-timeout-period-for-dns-lookup

关于这个话题,我只能说这些。如果有人要添加更多内容,我也会对此感兴趣。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.