Ошибка DNS request timed out, исправляем за минуту

Ошибка DNS request timed out, исправляем за минуту

Добрый день уважаемые читатели и подписчики канала, вы наверняка знаете, что работа всего интернета, помимо маршрутизации трафика, зависит от DNS имен в ip адреса и обратно, и за это отвечают DNS сервера, работа которых должна быть беспрерывна. Бывают случаи, что случаются аварии, в результате которых у вас начинаются проблемы с доступом в интернет и причиной всему ДНС сервера, сегодня я вам расскажу про ошибку: DNS request timed out.

Симптомы ошибки

Ситуация такова, у пользователей перестал работать интернет, при попытке сделать ping google.com, в ответ выдалось сообщение, что данное имя не удается разрешить, если попытаться пропинговать 8.8.8.8, это публичные ДНС сервера Google, то пинг нормально шел, из чего можно сделать вывод, что есть проблемы с рекурсией DNS серверов. Для диагностики ДНС служб используется утилита nslookup, позволяющая выполнить запрос. Для примера я попытался разрешить имя mail.ru

nslookup mail.ru

В итоге я получил ошибку DNS request timed out. Превышено время ожидания запроса.DNS request timed out

Исправляем ошибку: Превышено время ожидания запроса

Как я и писал выше существует три причины ошибки DNS request timed out:

  • Не доступны рекурсивные сервера провайдера или публичные ДНС
  • Не доступен основной шлюз на ДНС сервере
  • Закрыты порты или требуется авторизация на прокси сервере.

Проверяем рекурсивные сервера

Первое с чего нужно начать это проверить работоспособность рекурсивных серверов, на WIndows Server 2012 R2 это делается в оснастке "Диспетчер DNS", выбираете имя сервера и щелкаете правым кликом, из контекстного меню выбираем свойства.

Проверяем рекурсивные сервера

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

Проверяем рекурсивные сервера-2

Для пущей уверенности нажмите кнопку изменить и удостоверьтесь, что в окне "Редактировать серверы пересылки" все зеленое. Если там не удается разрешить имена, то переходим к другим пунктам.

Проверяем рекурсивные сервера-3

Проверка шлюза

После проверки рекурсии у вас может остаться ошибка DNS request timed out и связанна с неправильным шлюзом или ваш шлюз просто не доступен. Во-первых, откройте окно свойств TCP/IP через оснастку ncpa.cpl либо можно через командную строку и команду ipconfig /all.

Ошибка DNS request timed out-2

Удостоверьтесь, что данный шлюз правильный и если да, то чтобы он был доступен с данного сервера. Далее обязательно посмотрите трассировку трафика и убедитесь, что идет через нужный шлюз, если нет, то убедитесь, что нет статических маршрутов, которые перекрывают метрикой ваш основной шлюз. Если ошибка DNS request timed out сохраняется, то у вас сто процентов закрыты порты на вашем прокси сервере или брандмауэре, убедитесь, что доступен порт 53.

Авторизация на прокси сервере

В моем случае оказалось, что был не доступен шлюз и еще сбросилась сессия на прокси сервере, после того как я на своем фаерволе Kerio Control авторизовал свои ДНС сервера у меня пропала ошибка DNS request timed out, при разрешении имен.

Перезапуск DNS службы

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

Выключите антивирус

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

Мониторинг DNS серверов на предмет ошибки "DNS request timed out" через PowerShell и Zabbix

Мало того, что вы решили данную проблему, нужно научиться ее мониторить. Для этого я пошел таким путем:

  • 1️⃣Первый вариант. Создать и локально запускать PowerShell скрипт, который выполняет команду nslookup до серверов Google и если получает ошибку "DNS request timed out", то в файле по определенному пути записывает FALSE DNS, если получает имя dns.google, то записывает статус OK. Далее агент Zabbix смотрит статус и на основании его выводит предупреждение или нет в телеграм группу.

$nslookupResult = nslookup 8.8.8.8

if ($nslookupResult -like "dns.google")

{ $status = "OK" }

elseif ($nslookupResult -like "DNS request timed out")

{ $status = "FALSE DNS" }

else

{ $status = "Unknown status" }

Write-Output $status | Out-File -FilePath "C:\temp\DNS_Check.txt"

  • 2️⃣Второй вариант, брать на одном сервере список серверов из файла и выполнять на нем скрипт для каждого из них. Далее так же это выводить в файл, с указанием имени сервера и его статус.

$serverList = Get-Content -Path "C:\temp\servers.txt"

foreach ($server in $serverList) {
$nslookupResult = Invoke-Command -ComputerName $server -ScriptBlock

{ nslookup 8.8.8.8 }

if ($nslookupResult -like "dns.google")

{ $status = "OK" }

elseif ($nslookupResult -like "DNS request timed out")

{ $status = "FALSE DNS" }

else

{ $status = "Unknown status" }

Write-Output "$server $status" | Out-File -FilePath "C:\temp\DNS_Check.txt" -Append
}

Мониторинг DNS request timed out

Оцените статью
Настройка серверов windows и linux
Добавить комментарий

  1. Hashtags

    Спасибо, все получилось

  2. h3xrby

    Как Вы авторизовали ДНС сервера в Kerio Control?

  3. Иван Семин автор

    Создал правило, разрешающее трафик в интернет для сервера DNS

  4. Александр

    Спасибо большое за эту и другие ваши статьи, очень выручаете! Месяц бился с этим.

  5. Анатолий

    Есть ещё варианты, например, при использовании готовых программ для блокировки телеметрии, особенно тех, которые лезут в host файл, может получиться так, что станет недоступен адрес dns.msftncsi.com, так вот если при загрузке системы она не получит от него ответ, то при наличии интернета система будет сообщать об его отсутствии, к этому чувствительны сервисы гугл и майкрософт точно, про остальные сказать не готов.

  6. Александр

    Спасибо, все получилось. Долго не мог понять в чем косяк…