Как DNS-клиенты выбирают IP-адрес, когда получают несколько ответов?

25

Когда DNS-сервер ищет IP-адрес для клиента и получает список нескольких DNS-серверов для запроса, как он выбирает один? Аналогично, когда DNS-клиент получает список из нескольких IP-адресов для полного доменного имени, как он выбирает один? Это конкретная реализация или рассматривается в RFC?

bpfinn
источник

Ответы:

18

DNS-сервер, разрешающий запрос, может расставить приоритеты в порядке, в котором он использует перечисленные серверы, на основе исторических данных времени ответа (RFC1035, раздел 7.2). Это может также расставить приоритеты с помощью более близкой подсети (я видел это в RFC, но не помню, какой именно). Если история или приоритет подсети недоступны, он может выбрать случайным образом или просто выбрать первый. Я видел реализации DNS-сервера, делающие различные комбинации выше.

Клиентская программа, выбирающая IP-адрес из списка (из A / AAAA-записей), обычно пытается использовать адреса в том порядке, в котором они возвращены DNS-сервером (циклический перебор). Если клиент не может подключиться к первому возвращенному IP-адресу, он должен попробовать второй и так далее. Например, все основные браузеры делают это, однако многие другие интернет-клиентские программы «забывают» этот шаг и терпят неудачу, если не могут подключиться к первому IP-адресу.

Jesper
источник
4

RFC 1794 Охватывает вопрос Круглого Робина, который вы задаете.

Что касается ответов, большинство DNS-клиентов будут использовать первый IP-адрес в списке, некоторые выполняют подсети, чтобы выяснить, какой из них ближе, другие выбирают случайным образом, но большинство зависят от DNS-сервера для отправки списка.

Марк Тернер
источник
3

Это зависит от клиента - особый интерес для любого, кто работает в магазине Windows, связан с тем, что Vista \ Windows Server 2008 будет выбирать адрес с помощью другого механизма (если установлен стек ipv6) по сравнению с более ранними версиями Windows, которые выбирали первый адрес , Во многих случаях это означает, что они всегда будут выбирать один и тот же, то есть они не будут «соблюдать» ответы циклического перебора DNS так же, как и в более ранних версиях. Подробное объяснение этому можно найти в этой статье блога technet .

В связанной статье указано, что Windows 7 и Server 2008 R2 снова меняют это поведение по умолчанию, но я не могу найти ничего, что могло бы это подтвердить.

Также стоит отметить, что это поведение, соответствующее стандартам для ipv6, насколько я могу судить, хотя я был бы очень рад узнать, что я был неправ.

Helvick
источник