У нас есть большое количество филиалов, подключенных через 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 в этом порядке:
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.