我们的NS记录中列出了两个DNS服务器.昨晚,我们的一台DNS服务器出现故障.正如所料,一些DNS服务器没有解析我们的主机名.我认为这将是暂时的,并且一旦我们的NS记录的TTL到期(1小时)就会开始工作.
一小时后,我仍然从使用Earthlink,Verizon和OpenDNS服务器的桌面获得DNS超时.我测试了其他DNS服务器是否正在回答:
dig @ns2.example.com www.example.com +short
这很有效.
我的问题:
>有没有人得到一个答案,为什么其他DNS服务器即使在TTL过期后也没有打到我们的其他DNS服务器?
> DNS服务器更喜欢域的主DNS服务器(来自SOA记录)吗?
>是否有任何算法用于从可用的NS记录中选择名称服务器?我假设这是特定于实现的,但也许有一些适用于此的标准.
解决方法
这是一个不幸的烦恼.多个DNS服务器应该是为了提高可靠性,但在实践中它经常具有相反的效果.
问题是客户端只等待响应这么长时间,服务器等待大约相同的时间.假设您有两个DNS服务器,A和B.说A正在运行而B已经失败.有时候是这样的:
>客户端连接到名称服务器Z并要求其提供信息. Z选择B并发送查询.
>客户端超时,因为名称服务器Z没有响应.
>客户端尝试命名服务器Y.Y选择B并发送查询.
>名称服务器Z超时并尝试A.它得到正确答案,但客户端不再等待.
>客户端超时,因为名称服务器Y没有响应.
>客户端放弃了,其名称服务器都无法响应.
>名称服务器Y超时并尝试A.它得到正确答案,但客户端不再等待.
而且没有好的解决方案.等待查看名称服务器是否回复的时间越长,您需要等待的时间越长,因为您等待的名称服务器等待的时间越长.可以说,问题是Y和Z并没有足够快地放弃B.
从本质上讲,如果你的任何名称服务器都没有出来,一些客户会因为运气不好而超时,因为他们只尝试过那些糟糕的服务器.