DNS客户端获得多个答案时,如何选择IP地址?


25

当DNS服务器正在为客户端查找IP地址时,它会收到要查询的多个DNS服务器的列表,如何选择一个?同样,当DNS客户端收到FQDN的多个IP地址的列表时,如何选择一个?它是特定于实现的,还是在RFC中涵盖的?

Answers:


18

解析查询的DNS服务器可以根据历史响应时间数据确定其使用列出的服务器的顺序(RFC1035第7.2节)。它还可以通过更接近的子网来确定优先级(我已经在RFC中看到了这一点,但不记得是哪一个)。如果没有历史记录或子网优先级可用,它可以随机选择,也可以简单地选择第一个。我已经看到DNS服务器实现可以进行以上各种组合。

从(A / AAAA记录)列表中选择IP地址的客户端程序通常会按DNS服务器返回的地址顺序尝试这些地址(轮询)。如果客户端无法连接到返回的第一个IP地址,则应尝试第二个,依此类推。例如,所有主要的浏览器都执行此操作,但是许多其他Internet客户端程序“忘记”了此步骤,如果它们无法连接到第一个IP地址,则将失败。


4

RFC 1794涵盖了您要询问的循环问题。

就答案而言,大多数DNS客户端将使用列表中的第一个IP地址,一些客户端进行子网计算以找出哪个更接近,其他客户端则随机选择,但是大多数依赖DNS服务器发送列表。


3

它取决于客户端-与运行Windows商店的所有人特别相关的是,Vista \ Windows Server 2008将使用与早期Windows版本不同的机制(如果已安装ipv6堆栈)来选择地址,该机制将选择第一个地址。 。在许多情况下,这意味着他们将始终选择相同的请求,即,他们不会以与早期版本相同的方式“认可” DNS轮询响应。在此technet博客文章对此有详细说明。

链接的文章表明Windows 7和Server 2008 R2再次更改了此默认行为,但我找不到任何支持的方法。

值得指出的是,据我所知,这是ipv6的标准兼容行为,尽管我很高兴发现自己错了。

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.