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

Прерывание разрешения DNS на вторичный DNS - почему?

У нас есть большое количество филиалов, подключенных через VPN, но без какой-либо серверной инфраструктуры. Клиентские машины в каждом офисе получают свою сетевую конфигурацию от ASA 5505, который также используется для соединения VPN.

Клиентские машины Windows XP настроены на использование одного из наших корпоративных DNS-серверов в качестве основного, а DNS-сервер поставщика услуг Интернета - в качестве дополнительного. Идея состоит в том, что в случае сбоя VPN-соединения по какой-либо причине сотрудники офиса по-прежнему смогут получить доступ к Интернету, а также к нашей веб-почте и домашнему порталу доступа. В большинстве случаев это работает нормально.

Однако для офисов, расположенных в Южной Америке, мы видим, что разрешение DNS на клиентских машинах регулярно выполняется против DNS-сервера провайдера - это приводит к тому, что наши корпоративные ресурсы фактически недоступны для персонала в офисах.

Клиентские машины могут нормально пинговать корпоративный DNS-сервер. При выполнении nslookup корпоративного имени хоста я получаю ответ.

Я думаю, что происходит одно из следующего (или их сочетание):

Кто-нибудь еще сталкивался с этой проблемой? Есть идеи для разрешений?

По данным Technet http://blogs.technet.com/b/stdqry/archive/2011/12/15/dns-clients-and-timeouts-part-2.aspx более поздние запросы выполняются параллельно нескольким DNS-серверам.

И у большинства людей есть только одно сетевое соединение и быстрое широкополосное соединение, и обычно следует ожидать ответа DNS в течение 1 секунды.

Поэтому я установил для своего DNSQueryTimeouts значение 1 1 1 10 10 0, чтобы он мог как можно быстрее выдавать параллельные запросы всем DNS-серверам. Затем я помещаю DNS-серверы своего интернет-провайдера в список первыми (поскольку они физически наиболее близки и с меньшей вероятностью подвержены отбрасыванию сетевых пакетов с несколькими общедоступными DNS-серверами позади, и позволяю Windows делать свое дело.

И мой просмотр веб-страниц значительно ускорился !!!

Очевидно, что не давайте приоритет DNS-серверам ISP в корпоративной среде, если вы хотите внутренне разрешить внутренние имена хостов!

Windows запрашивает DNS в этом порядке:

  • файл hosts
  • локальный кеш DNS
  • Предпочтительные DNS-серверы
  • Другие DNS-серверы

MS также имеет статью, описывающую как получается список DNS-серверов:

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

Список составлен по следующим критериям:

  • Предпочитаемым DNS-серверам предоставляется первый приоритет.
  • Если предпочтительные DNS-серверы недоступны, используются альтернативные DNS-серверы.
  • Серверы, не отвечающие на запросы, временно удаляются из этих списков.

Windows имеет увеличение таймаута для DNS-запросов:

Value      Default value  Attempt
1st limit       1 second  Query the preferred DNS server on a preferred connection.
2nd limit      2 seconds  Query the preferred DNS server on all connections.
3rd limit      2 seconds  Query all DNS servers on all connections (1st attempt).
4th limit      4 seconds  Query all DNS servers on all connections (2nd attempt).
5th limit      8 seconds  Query all DNS servers on all connections (3rd attempt).
6th value                 (Must be 0.)

Я не смог найти четкого ответа по этому вопросу, но похоже, что если он не получит ответ от вашего основного DNS в течение 1 или 2 секунд (1-я или 2-я попытка соответственно), то этот сервер будет удален из Список поиска DNS-сервера на 15 минут, поэтому он будет использовать вторичные DNS-серверы. Поскольку у этих серверов есть тайм-аут до 8 секунд, они с большей вероятностью ответят. (Мне неясно, продолжает ли он запрашивать предпочтительный DNS-сервер во время третьей попытки, если она уже не удалась).

Я также подозреваю, что у вас действительно есть проблема с задержкой WAN для этой географической области, поскольку это объясняет, почему работают тайм-ауты.


Одним из решений является изменение тайм-аутов DNS-запросов с помощью DNSQueryTimeouts параметр реестра. Смотрите также http://drewthaler.blogspot.com/2005/09/changing-dns-query-timeout-in-windows.html


Другое решение - разместить локальный кэширующий DNS-сервер в сети, и клиенты будут его использовать. Вы можете использовать DNS-сервер, который может быть встроен в маршрутизатор, или установить что-то вроде dnsmasq.