Решение клиентских проблем в работе клиентов DNS. Что делать если dns сервер не отвечает или недоступен


DNS-клиент — программа (или модуль в программе), обеспечивающий определение адреса узла по его полному имени (точка в конце обычно либо добавляется DNS-клиентом, либо неявно подразумевается, однако, в случае использования доменных суффиксов, возможны различия в поведении клиента при определении имени с точкой в конце и без).

Функция клиента DNS встроена почти в любую программу, предназначенную для работы в сети Internet. Однако, большинство DNS-клиентов не умеют самостоятельно выполнять рекурсию, так как в противном случае их алгоритмы пришлось бы неоправданно усложнять. Помимо этого использование рекурсии DNS-клиентами не позволило бы осуществлять режимы ограничения доступа во внешнюю сеть и кеширования DNS.

Специализированные программы

Для диагностики DNS используются специализированные программы — nslookup и dig. Версия nslookup для Windows (как и многие DNS-клиенты для windows) поддерживает WINS, что может создавать неразбериху при различающихся ответах WINS и DNS серверов. Некоторые версии nslookup в Unix поддерживают помимо DNS ещё и yp (NIS), что так же усложняет диагностику. При проверке интегрированных с Active Directory DNS-серверов может использоваться утилита dcdiag.

Режимы работы DNS-сервера

DNS-сервер, выполняющий запрос клиента может работать в одном из трёх режимов:

* режим форвардинга (передачи) запросов другому DNS-серверу — в этом случае запрос почти не отличается от запроса DNS-клиента. (Такая схема используется при использовании кеширующих DNS-серверов и серверов в DMZ).
* режим самостоятельного выполнения рекурсивного запроса.
* режим обслуживания зоны (в этом случае запросы на посторонние (неавторитативные) зоны не принимаются, вместо этого возвращаются адреса корневых серверов).

Во многих версиях BIND запрос к другим DNS-серверам исходил с 53-го порта (порта, по которому принимаются запросы DNS, как TCP, так и UDP), в отличие от клиентских приложений, использующих произвольный порт отправителя (из незарегистрированного диапазона).

Работа с DNS различных программ

Почтовый сервер использует клиент DNS, для запроса MX, SPF, A-запись (например, sendmail использует MX-записи в порядке возрастания приоритета, но в случае отсутствия подходящего маршрута, в качестве последней попытки использует A-запись), PTR-записей (для определения имени хоста). Кроме того, многие версии почтовых серверов используют имена, полученные через запрос PTR-записи для определения наличия MX-записи у данного имени, это используется для автоматического отказа в доставке у не-почтовых серверов (в большинстве своём бот-нетов).

В общем случае возможна конфигурация, когда для разных серверов и зон DNS-сервер ведёт себя различно (например, из локальной сети принимает рекурсивные запросы, из внешней — только запросы на авторитативные зоны, или форвардит запросы на другой сервер только для заданных зон).

Рабочие станции и серверы в составе Active Directory используют множество DNS-записей типа SRV для определения положения ближайшего контроллера домена в сайте и для выполнения динамического обновления DNS-записи о рабочей станции.

Интерфейс между программой и DNS-клиентом

Большинство программ, использующих функции DNS, не реализуют его функциональность самостоятельно (через сокеты), а используют либо предоставляемые операционной системой функции DNS-клиента, либо используют готовую библиотеку клиента. К меньшинству относятся в основном низкоуровневые утилиты и серверное ПО, которому необходима более специфичная фунциональность, чем предоставляется DNS-клиентом.

Все web-мастера и многие обычные пользователи, которые смутно представляют механизмы работы сайтов, хорошо знают, что такое хостинг сайтов. Но далеко не все пользователи сети знают, что такое DNS, зачем он нужен и почему без него обойтись нельзя. Так что же это такое и с чем его едят? DNS является аббревиатурой английского определения Domain Name System – система доменных имен. DNS представляет собой распределенную систему, которая может по запросу определенного имени домена, сообщать IP-адрес устройства. Название IP-адрес также образовано от английского словосочетания Internet Protocol Address, обозначающего уникальный идентификатор или адрес устройства в сети, будь то локальная сеть или всемирная паутина. Устройства по большей части являются компьютерами пользователей, но могут быть и другие устройства, включая принтеры и т.д.

Как известно, каждый компьютер в сети имеет свой уникальный IP-адрес, который необходим для работы в сети. Не зная этого адреса, ни один пользователь не сможет отправить запрос или обратиться к этому устройству. Web-мастер, создавая свой сайт и выбирая хостинг для wordpress, хостинг для joomla или хостинг для других CMS, получает IP-адрес своего ресурса. IP-адрес состоит из 4-х байтового числа, который разделен точками и имеет примерно такой вид: 183.76.34.23, 162.34.12.183 и т.д. Конечно, запомнить этот набор цифр смогут далеко не все, а если и запоминать, то только нескольких сайтов, чего недостаточно для нормальной работы в сети. Вот в этом то и помогает DNS, который служит для определения IP-адреса по доменному имени, который запомнить и найти гораздо легче.

Определение IP-адреса по доменному имени еще называется резолвингом. Чтобы обеспечить быстрый поиск нужного сайта или ресурса была разработана целая иерархическая система DNS-северов. Все web-разработчики, которые используют web хостинг, знают, что доменное имя может состоять из нескольких частей (доменные имена 1, 2, 3 уровней). За каждую часть доменного имени отвечает определенная группа серверов, поэтому каждый запрос пользователя пересылается по нескольким серверам, после чего доходит до нужного сервера, на котором и размещен нужный сайт.

Чтобы наглядно продемонстрировать иерархическую работу системы DNS, представим, как будет произведен поиск сайта primer.narod.ru. Сначала идет запрос на DNS-сервер, который отвечает за зону ru. Далее запросы пересылаются на сервер, отвечающий уже за зону narod.ru. После этого компьютер получает адрес сервера, отвечающего за зону primer.narod.ru, и уже этот сервер указывает, какой адрес соответствует сайту primer.narod.ru и пользователь попадает на искомый ресурс. Вне зависимости от того, использует web-разработчик бесплатный или платный хостинг, все запросы к его ресурсу будут проходить по подобной схеме.

DNS-сервер представляет собой специализированное программное обеспечение, необходимое для обслуживания DNS. DNS-сервер может работать в режиме форвардинга (передача запроса другому серверу), в режиме обслуживания зоны (обслуживаются исключительно запросы обслуживаемой зоны, при этом запросы на другие зоны не воспринимаются), в режиме самостоятельного выполнения рекурсивного запроса. DNS-клиент представляет собой отдельную программу или модуль в программе, который используется для определения адреса узла по его имени. Обычно функция DNS-клиента встроена в браузер, используемый пользователем для web-серфинга, поэтому он может даже и не знать, что «там» происходит при вводе и поиске определенного сайта.

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

  • В локальном кэше преобразования имен хранится отрицательный ответ
  • Сервер DHCP предоставил клиентам некорректный адрес сервера преобразования имен
  • Указаны некорректные статические параметры протокола TCP/IP
  • Имена других доменов не указаны в виде суффиксов, добавляемых в порядке перебора суффиксов DNS (дополнительные параметры протокола TCP/IP)
  • Ошибка аппаратного обеспечения сети (сетевые адаптеры, кабели, коммутаторы, маршрутизаторы и т.д.)

Если клиенты не могут получить доступ к системе с помощью полностью определенного доменного имени, стоит сначала определить, связана ли проблема со службой преобразования имен или с работой самой сети. Самым простым способом это сделать является отправка тестового эхо-пакета к удаленной системе с указанием адреса IP. Если удаленная система успешно ответит на тестовый эхо-пакет, то проблема действительно связана со службой преобразования имен (если это не так, проверьте наличие проблем в аппаратном обеспечении сетевой среды).

После этого можно попытаться отправить тестовый эхо-пакет, указав полностью определенное доменное имя.

Если команда ping отобразит неправильный адрес IP, то необходимо найти источник предоставления некорректного адреса IP. Скорее всего, источником некорректного адреса IP является сервер DNS или файл Hosts на клиентском компьютере (который находится в каталоге %systemroot%\system32\drivers\etc). Если в файле Hosts не указаны статические записи, можно попытать найти источник некорректного преобразования с помощью утилиты nslookup.

Теперь предположим, что при использовании полностью определенного доменного имени показан корректный адрес IP. После этого необходимо отправить тестовый эхо-пакет, указав только имя удаленного узла. Если отправка тестового эхо-пакета завершиться неудачно, то источник проблемы можно считать найденным, так как к запросам преобразования имен не добавляются суффиксы DNS. Эта проблема решается с помощью добавления суффиксов DNS в соответствующий список суффиксов. Этот список доступен на вкладке DNS в окне свойств протокола TCP/IP для определенного сетевого интерфейса.

Распространенные проблемы клиентов DNS

Возможная причина

После изменения записи узла на сервере DNS, клиенты не в состоянии получать доступ к этому узлу

  • Изначальный адрес IP для этого узла сохранился в кэше локального преобразователя имен. На клиентской системе необходимо запустить команду ipconfig /flushdns , что приведет к очистке кэша локального преобразователя имен.
  • Некорректно настроенный файл Hosts на локальном компьютере

Пользователь получает сообщение "Сетевой маршрут не найден" ("Network Path Not Found") при попытке получить доступ к сетевому ресурсу

  • Некорректно настроенные параметры протокола TCP/IP или неполученная аренда от сервера DHCP
  • Сервер DNS недоступен
  • Некорректные статические записи в файле Hosts на локальной системе
  • Пользователь пытается получить доступ к ресурсам, которые находятся в другом домене. Добавьте суффиксы DNS в на вкладке DNS окна дополнительных свойств протокола TCP/IP на локальном компьютере

Клиент получает некорректный ответ от сервера DNS

  • Запись типа A для запрашиваемого ресурса содержит некорректный адрес IP. Внесите изменения в адрес IP на сервере DNS и очистите кэш преобразователя на клиентском компьютере. После этого заставьте клиента еще раз выполнить запрос.
  • Запрос клиента выполняется вторичным сервером DNS, данные зоны на котором устарели. Для исправления ситуации необходимо уменьшить интервал Refresh Interval для первичной зоны, или добавить вторичный сервер в список Notify List на первичном сервере. Для немедленного обновления зоны на вторичном сервере можно щелкнуть на зоне вторичного сервера правой кнопкой мыши и выбрать Transfer from Master

Имена и адреса IP клиентских узлов не регистрируются динамически на первичном сервере DNS

  • Динамическое обновление отключено в свойствах протокола TCP/IP на клиентском компьютере. Проверьте, установлен ли флажок Регистрировать адреса этого подключения в DNS (Register this connection’s addresses in DNS).
  • Зона DNS настроена на запрет динамических обновлений
  • Для клиентского домена не существует зоны на первичном сервере DNS
  • Зона DNS настроена на выполнение только безопасных динамических обновлений, а проблемные клиентские компьютеры не являются членами домена.

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

DNS-клиент

Служба предназначена для получения IP-адреса удаленного компьютера при известном доменном или url-адресе этого компьютера (например, www.mail.ru). При этом процесс получения IP-адреса удаленного компьютера реализуется благодаря взаимодействию службы DNS-клиент с DNS-сервером. Это взаимодействие начинается после ввода запроса на подключение к удаленному компьютеру с использованием доменного имени компьютера (например, при вводе в адресную строку браузера адреса www.mail.ru). После этого служба DNS-клиент пытается найти IP-адрес компьютера, соответствующий введенному доменному или url-адресу, в своем кэше (данный кэш существует до окончания работы службы DNS-клиент и хранит соответствия всех IP-адресов доменным именам, которые уже были найдены службой DNS-сервер). Если служба DNS-клиент не находит в кэше соответствующий доменному имени IP-адрес, она обращается к содержимому файла HOSTS (если, конечно, обращение к данному файлу разрешено), расположенному на локальном компьютере (в каталоге %SystemRoot%\System32\drivers\etc) и включающему в себя соответствия между доменными именами и IP-адресами компьютеров, которым эти имена принадлежат. Если же и в этом файле нет сведений об IP-адресе необходимого компьютера, то служба обращается к DNS-cep-веру, используемому для разрешения имен компьютеров по умолчанию (в сети может существовать несколько DNS-серверов, при этом один из них является основным, к которому и обращаются компьютеры для разрешения имен). DNS-клиент ищет сведения об IP-адресе компьютера, которому принадлежит данное доменное имя, в своей базе данных. Если в базе данных DNS-сервера нет сведений о соответствующем этому доменному имени IP-адресе, то DNS-сервер просматривает свой кэш уже разрешенных имен компьютеров. Если и кэш не содержит необходимого IP-адреса, то DNS-сервер обращается с запросом на разрешение имени к вышестоящему DNS-серверу (например, если данный DNS-сервер включает в себя сведения о домене narod.ru, то DNS-сервер обращается к вышестоящему DNS-серверу, содержащему сведения о домене ru и т.д.). В итоге, если разрешение IP-адреса все-таки удалось, то IP-адрес, соответствующий данному доменному имени, передается DNS-клиенту, который, в свою очередь, передает его программе, запросившей у него разрешение имени (не забыв перед этим поместить данное разрешение имен в свой кэш). Если же разрешение имени не удалось, то программа оповестит об этом пользователя, сказав ему, что компьютер с введенным именем не найден.

ПРИМЕЧАНИЕ

Как уже говорилось, файл hosts расположен в каталоге %systemroot%\system\drivers\ ets и используется в случае, если в кэше DNS-клиента нет сведений о разрешении данного доменного или url-имени. Файл hosts является обычным текстовым файлом, содержащим соответствия IP-адреса компьютера его url-адресу. Вы сами можете создать данные соответствия для часто открываемых в Интернете сайтов, чтобы они открывались быстрее и при открытии загружали меньше трафика (ведь браузеру не придется обращаться к DNS-серверу). Для этого достаточно в файле hosts создать строку такого вида: IP-адрес URL-адрес. Например, можно разрешить IP-адрес сайта www.mail.ru. Его url-имя у вас есть (www.mail.ru), но как узнать IP-адрес? Для этого вам понадобится программа командной строки ping.exe. Необходимо запустить командную строку и ввести команду ping www.mail.ru, после чего программа выведет IP-адрес, принадлежащий url-имени www.mail.ru. Для www.mail.ru это будет адрес 194.67.57.26, то есть в файле hosts нужно создать строку вида 194.67.57.26 www.mail.ru.

С помощью файла hosts можно также бороться с баннерными серверами. Для этого достаточно разрешить имя сайта, который раздает другим сайтам баннеры, на IP-адрес своего компьютера (например, с помощью строки 127.0.0.1 www.banners.com), и баннеры от этого сайта больше не будут загружаться.

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

Служба DNS-клиент занимает около 2604 Кбайт памяти и запускается с правами сетевой службы (NT AUTHORITY\NetworkService) автоматически при каждом входе пользователя в систему (при этом она запускается как отдельный процесс svchost.exe). Данная служба необходима, если в сети присутствует DNS-сервер или компьютер принадлежит к Active Directory (Active Directory уже предполагает, что в сети есть DNS-сервер, ведь без него Active Directory нельзя будет установить). Если эти условия не выполняются, то службу DNS-клиент можно отключить (можно подумать, что эта служба также необходима для подключения к Интернету, но, как показали исследования, это не так, хотя без ее использования качество поиска страниц в Интернете может пострадать, поэтому не рекомендуется отключать данную службу, если вы подключены к Интернету). Для этого необходимо DWORD-параметру Start, расположенному в ветви реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dnscache, присвоить значение 4.