DNS не может разрешить имя хоста; nslookup может


9

У меня есть пользователь в Windows 7, который пытается получить доступ к локальному серверу с DNS-именем windows.cs. У нас есть два внутренних DNS-сервера. DHCP-сервер назначает пользователям два внутренних DNS-сервера в качестве основного и вторичного, а затем наши интернет-провайдеры DNS в качестве третичного DNS-сервера.

Время от времени пользователь не может получить доступ к веб-сайту в windows.cs. Если я пингую его, он говорит, что не может разрешить имя хоста. Я сбрасываю кеш DNS, а затем при отображении кеша DNS он имеет следующее:

windows.cs - имя не существует

Тем не менее, если я использую nslookup, который по умолчанию запрашивает основной DNS-сервер (наш внутренний), и я запрашиваю windows.cs, он возвращает правильный IP-адрес.

Так почему же Windows не может разрешить имя хоста с помощью ping, но это возможно при использовании инструмента nslookup? И как мне это исправить?


1
+1, я часто сталкиваюсь с этой проблемой ... даже с именами хостов, которые я использовал 5 минут назад!
Брэд

Ответы:


12

Из того, что вы говорите, следует, что запрос на windows.cs поступает на DNS-сервер ISP время от времени. Затем результат nxdomain кэшируется DNS-клиентом Windows и, таким образом, используется для любых повторных попыток с помощью веб-браузера, проверки связи и т. Д. Очистка кэша (ipconfig / flushdns) должна заставить DNS-клиент Windows повторить запрос, но это не гарантируется. больше не пойдет на DNS-сервер интернет-провайдера.

Причина, по которой ping не может разрешить имя хоста, но nslookup может, заключается в том, что nslookup - это низкоуровневый инструмент, который обходит DNS-клиента Windows. Он использует любой DNS-сервер, которому вы его указываете (первый по умолчанию), и выполняет запрос на лету. Вы можете изменить DNS-сервер, который он запрашивает, набрав server <host>в приглашении nslookup, где host - это IP или FQDN.

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

Не сразу понятно, почему клиент Windows использует DNS-сервер ISP. Возможно, он не мог разрешить локальный сервер в последнее время (возможно, из-за того, что он был в другой сети), возможно, локальный сервер возвращал ошибки. Или, возможно, он неправильно упорядочен в разделе «Дополнительные параметры TCP / IP»> «DNS».

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


Вы подняли хороший вопрос. Нет особой причины, по которой у нас есть DHCP-сервер, назначающий его как третичный. И это кажется разумным объяснением того, почему он не разрешается (но почему он идет на 3-й DNS-сервер? Кто знает ...). Спасибо за направление. Я удалю общедоступный DNS-сервер с назначенного DNS-сервера, выданного через DHCP, и посмотрю, решит ли проблему проблему. Внутренние DNS-серверы должны передавать любые запросы, которые они не могут ответить на этот DNS-сервер, так что это не должно быть проблемой.
Сафадо

Обновление: это, кажется, исправило нашу проблему. Спасибо за предложение!
Сафадо

0

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

Казалось бы, еще один системный администратор не справился с предоставлением услуг My ISP и задокументировал его, поэтому я должен его использовать. заблуждение. ☺


Итак, с точки зрения непрофессионалов, вы говорите, не назначайте DNS-серверы моим пользователям, если я не знаю, что эти DNS-серверы имеют одинаковую информацию? Ваши ссылки не работают.
Сафадо

0

TL; версия DR: IPv6 вызвал проблему DNS-запроса в моем случае, деактивация позволила решить проблему DNS-запроса.

У меня была такая же проблема на моей машине для разработки. Всякий раз, когда я входил в сеть нашей компании, я не мог разрешить внутренние имена хостов, все внешние имена хостов / URI могли быть разрешены. Я проверил DNS-серверы, которые были назначены для VPN-подключения, и они показали, что DNS-серверы компании были настроены как первичные и вторичные. Я также мог использовать, nslookupно пришлось вручную сменить сервер, server X.X.X.Xчтобы получить разрешение DNS.

В конце концов я обнаружил, что IPv6 вызывал проблемы с разрешением имен: при каждом DNS-запросе запрашивался DNS IPv6, а не DNS-серверы компании IPv4. После деактивации IPv6 необходимо, чтобы в ipconfig /flushdnsпротивном случае ранее запрошенные адреса все еще не могли быть разрешены.


0

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.