Назад | Перейти на главную страницу

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

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

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

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

RFC 1794 Охватывает вопрос о круговой системе, который вы задаете.

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

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

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

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