У меня есть пользователь в Windows 7, который пытается получить доступ к локальному серверу с DNS-именем windows.cs. У нас есть два внутренних DNS-сервера. DHCP-сервер назначает пользователям два внутренних DNS-сервера как первичный и вторичный, а затем DNS нашего интернет-провайдера в качестве третичного DNS-сервера.
Время от времени пользователь не может получить доступ к веб-сайту windows.cs. Если я пингую его, он говорит, что не может разрешить имя хоста. Я очищаю кеш DNS, а затем, когда я показываю кеш DNS, он имеет следующее:
windows.cs - Имя не существует
Но если я использую nslookup, который по умолчанию запрашивает первичный DNS-сервер (наш внутренний), а я запрашиваю windows.cs, он возвращает правильный IP-адрес.
Так почему же Windows не может разрешить имя хоста с помощью команды ping, но может с помощью инструмента nslookup? И как мне это исправить?
Судя по тому, что вы говорите, запрос windows.cs время от времени отправляется на DNS-сервер интернет-провайдера. Затем результат nxdomain кэшируется DNS-клиентом Windows и, таким образом, используется для любых повторных попыток с веб-браузером, ping и т. Д. Очистка кеша (ipconfig / flushdns) должна заставить DNS-клиент Windows повторить запрос, но нет гарантии, что это больше не пойдет на DNS-сервер интернет-провайдера.
Причина, по которой ping не может разрешить имя хоста, а nslookup может, заключается в том, что nslookup - это инструмент низкого уровня, который обходит DNS-клиент Windows. Он использует любой DNS-сервер, который вы ему указываете (по умолчанию первый), и выполняет запросы на лету. Вы можете изменить DNS-сервер, который он запрашивает, набрав server <host>
из приглашения nslookup, где host - это IP или полное доменное имя.
Однако клиент Windows DNS будет выполнять запросы только для тех записей, которых нет в его кеше (или срок действия которых истек). В противном случае он возвращает кешированный результат.
Не сразу понятно, почему клиент Windows использует DNS-сервер провайдера. Возможно, недавно он не смог разрешить локальный сервер (возможно, из-за того, что он находится в другой сети), возможно, локальный сервер возвращал ошибки. Или, возможно, он неправильно упорядочен в разделе Дополнительные настройки TCP / IP> DNS.
Лично я предпочитаю использовать только локальные адреса DNS-серверов на рабочих станциях (распространяемые DHCP), чтобы упростить настройку и избежать подобных проблем. Мне было бы любопытно узнать причины установки DNS-сервера интернет-провайдеров на настольных компьютерах. Я не могу себе представить, чтобы были какие-либо веские причины для производительности, а что касается избыточности, для большинства сетей достаточно двух (если не добавить третью).
Мне удалось решить проблему, просто удалив запись DNS и выполнив команды flushdns и registerdns, и это исправляет. Причина в том, что сам DNS устарел. DNS не удалил запись после истечения срока аренды и не был продлен, что не могло разрешить имя, потому что оно было продано для него. Я надеюсь, что это поможет вам решить ваши проблемы.
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
в противном случае ранее запрошенные адреса все еще могут быть не разрешены.
Результат nslookup
отличается от ping
из-за nslookup
идиосинкразии и ошибки. Однако они не имеют отношения к вашей основной проблеме, заключающейся в том, что вы нарушили правило ваши резервные прокси-серверы DNS должны предоставлять то же представление пространства имен DNS, что и ваш основной. Прокси-DNS-сервер вашего интернет-провайдера не обеспечивает такое же представление пространства имен DNS, как ваши собственные прокси-DNS-серверы в вашей локальной сети.
Казалось бы, еще один системный администратор попал в Мой интернет-провайдер предоставляет и документирует это, поэтому я должен используй это. заблуждение. ☺