Определить причину некорректной работы DNS будет гораздо проще, если придерживаться определенной последовательности действий. Брайен Пози (Brien Posey) делится своим опытом диагностики.
DNS — одна из самых важных служб в любой компьютерной сети на платформе Windows. Она необходима для работы Active Directory и целого ряда других сетевых функций. Поэтому любые проблемы, связанные с DNS, требуется решать как можно более оперативно. К счастью, найти причину неполадок, как правило, оказывается довольно легко. Ниже перечислены десять моих излюбленных приемов диагностики.
1. Проверьте сетевое подключение
При возникновении проблем с DNS первым делом нужно убедиться, что DNS-сервер подключен к сети. Это позволит значительно сэкономить время, если неполадки вызваны поломкой сетевого адаптера.
Самый простой способ проверить подключение — войти на DNS-сервер и пропинговать несколько компьютеров в сети, и наоборот — пропинговать DNS-сервер с других машин (см. Как на самом деле работает Ping?). Стоит учитывать, что этот способ сработает лишь при условии, что брандмауэр пропускает входящие ICMP-пакеты.
2. Выясните масштабы проблемы
Если сетевое подключение работает исправно, на следующем этапе нужно определить масштабы проблемы. Происходит ли сбой только при разрешении имен во внешней сети или неполадки возникают и на локальном уровне? От этого зависит, что делать дальше. Если в локальной сети имена разрешаются без проблем, а во внешней — не разрешаются вообще, дело может быть в DNS-сервере интернет-провайдера.
3. Определите круг пользователей, затронутых проблемой
Не помешает также выяснить, все ли пользователи в локальной сети испытывают проблемы или неполадки наблюдаются только в определенной подсети. Если трудности испытывают лишь некоторые пользователи, стоит проверить, не принадлежат ли они все к одному сегменту сети. В таком случае проблема может быть вызвана поломкой маршрутизатора или ошибками в конфигурации DHCP.
4. Проверьте, не применяется ли в сети балансировка нагрузки
Когда на веб-серверы приходится большая нагрузка, в некоторых сетях ее распределяют между несколькими идентичными веб-серверами по методу Round Robin DNS. Недостаток технологии заключается в том, что даже в случае сбоя одной из этих машин, DNS-сервер по-прежнему продолжает передавать входящий трафик на все серверы по алгоритму round robin. В результате ресурс, на котором действует балансировка нагрузки, периодически теряет соединение с сетью.
5. Проверьте состояние DNS-форвардеров
Если в локальной сети разрешение имен работает, а во внешней нет, нужно проверить, не использует ли DNS-сервер форвардеры. Большинство DNS-серверов осуществляет разрешение имен Интернета с использованием корневых подсказок, но в некоторых конфигурациях вместо этого применяются форвардеры, которые подключаются к DNS-серверу интернет-провайдера. И если сервер провайдера не работает, разрешение имен во внешней сети перестает функционировать, поскольку записи в кэше распознавателя устаревают.
Если DNS-сервер использует форвардеры, можно пропинговать сервер провайдера, чтобы проверить, работает ли он. Или можно позвонить в службу технической поддержки провайдера и поинтересоваться, нет ли каких-либо проблем и не поменялся ли IP-адрес, указанный в настройках форвардера.
6. Попытайтесь пропинговать хост
Если разрешение имен не работает в локальной сети, можно попытаться пропинговать один из локальных серверов, сначала — по IP-адресу. Если пинги проходят без проблем, значит, сетевое подключение в порядке. В таком случае следует пропинговать сервер по имени компьютера и по полностью определенному имени домена.
Если по IP-адресу сервер пингуется, а по имени нет, нужно проверить, есть ли на DNS-сервере запись A для хоста. Если она отсутствует, DNS-сервер не сможет выполнить разрешение имени для этого хоста.
7. Воспользуйтесь командой NSLookup
Один из самых удобных инструментов диагностики DNS — команда NSLOOKUP, которую можно запустить из командной строки Windows. Чтобы проверить разрешение имен для определенного хоста, нужно выполнить команду вида NSLOOKUP имя хоста. В выводе команды будет указано имя (не всегда) и IP-адрес DNS-сервера, разрешившего запрос, а также полностью определенное имя домена и IP-адрес указанного хоста.
Это позволяет, во-первых, проверить, работает ли разрешение имен, а во-вторых, выяснить, какой используется DNS-сервер, если разрешение имен не срабатывает. Правда, стоит учитывать, что с помощью NSLOOKUP можно узнать только данные DNS-сервера, к которому подключается сама утилита. Если запрос на разрешение имени перенаправляется на другой DNS-сервер, узнать его адрес таким способом невозможно.
8. Попробуйте использовать другой DNS-сервер
В большинстве организаций используется как минимум два DNS-сервера. Если один из них не работает, можно подключиться ко второму. Если на втором сервере разрешение имен работает исправно, значит, проблема действительно связана с основным DNS-сервером, а не вызвана какими-то внешними причинами.
9. Проверьте систему на вирусы
Как-то раз ко мне обратился пользователь с жалобой на то, что при попытке зайти на определенный ресурс он вместо этого попадает на мошеннический веб-сайт. Сначала я заподозрил заражение DNS, но потом отказался от этой версии, поскольку пострадал лишь один компьютер в сети.
В конце концов выяснилось, что в стек протоколов TCP/IP на компьютере пользователя внедрился вирус, который перехватывал все запросы на разрешение имен. Так что причина проблемы оказалась не в DNS-сервере, а в локальной системе.
10. Перезагрузите DNS-сервер
Совет банальный, но если ни один из перечисленных способов не помогает, можно попытаться просто перезагрузить DNS-сервер. Мне не раз приходилось сталкиваться с необъяснимыми сбоями в работе DNS, которые прекращались сами собой после перезагрузки DNS-сервера.
Кроме того, в моей практике были как минимум два случая, когда маршрутизаторы потребительского класса отказывались перенаправлять DNS-запросы, хотя без проблем обрабатывали остальной трафик. В одном из этих случаев помог сброс настроек маршрутизатора, в другом пришлось заменить роутер, который, судя по всему, повредился в результате скачка напряжения в сети.
Другие советы?
А какими методами диагностики проблем DNS пользуетесь вы? Поделитесь своим опытом в комментариях!