Вопрос: Почему «ping» не может решить имя, когда «nslookup» работает нормально?
На моей рабочей станции Windows XP я могу найти машину, с которой я хочу подключиться, в DNS с помощью nslookup
:
nslookup wolfman
Server: dns.company.com
Address: 192.168.1.38
Name: wolfman.company.com
Address: 192.168.1.178
Но когда я пытаюсь подключиться к этой машине, я получаю сообщение об ошибке, указывающее, что машина не может быть найдена (т. Е. Не может быть обнаружена в DNS):
C:\> ping wolfman
Ping request could not find host wolfman. Please check the name and try again.
Я могу подключиться, если я использую IP-адрес напрямую:
C:\> ping 192.168.1.178
Pinging 192.168.1.178 with 32 bytes of data:
Reply from 192.168.1.178: bytes=32 time=41ms TTL=126
Reply from 192.168.1.178: bytes=32 time=41ms TTL=126
Reply from 192.168.1.178: bytes=32 time=44ms TTL=126
Reply from 192.168.1.178: bytes=32 time=38ms TTL=126
Я мог бы обойти это, добавив запись в мой hosts
файл, но я бы скорее выяснил, почему это происходит. Проблема преходящая, большую часть дня я могу подключиться к машине просто отлично.
Как это возможно?
ETA: я оставил это для краткости, но его попросили:
C:\> ping wolfman.company.com
Ping request could not find host wolfman.company.com. Please check the name and try again.
ETA: Другие приложения получают одинаковые результаты. Я просто попробовал ping для упрощения. telnet не может подключиться, приложения Cygwin печатают сообщение «неизвестный хост-волк».
Обновление. Используя wirehark, я обнаружил, что моя рабочая станция не пытается искать DNS. Это просто сообщение об ошибке «не удалось найти хост».
119
2017-10-29 19:11
Источник
Ответы:
Я считаю, что nslookup открывает соединение winsock на порту DNS и выдает запрос, тогда как ping использует службу DNS-клиента. Вы можете попытаться остановить эту службу и посмотреть, не изменилось ли это.
Некоторые команды, которые будут повторно инициализировать различные сетевые состояния:
Сбросить записи WINSOCK до значений по умолчанию: netsh winsock reset catalog
Сбросить стек TCP / IP до значений по умолчанию: netsh int ip reset reset.log
Очистить кеш-ресивер DNS: ipconfig /flushdns
Обновление регистрации клиента DNS и обновление аренды DHCP: ipconfig /registerdns
Таблица маршрутизации Flush: route /f
(требуется перезагрузка)
92
2017-11-20 08:40
Попробуйте выполнить ping с именем хоста, за которым следует точка. Поэтому вместо ping wolfman
использование ping wolfman.
Это должно заставить вас разрешить, не выполняя обходные пути с файлами hosts и т. Д.
25
2018-05-05 01:08
Пытаться ipconfig /displaydns
и ищите волка. Если он кэшируется, поскольку «имя не существует» (возможно, из-за предыдущего прерывистого сбойного поиска), вы можете очистить кеш с помощью ipconfig /flushdns
,
nslookup
не использует кеш, а напрямую запрашивает DNS-сервер.
15
2017-11-19 21:57
nslookup
отличается от других команд при разрешении имен / IP-адресов в Windows.
метод нормального разрешения в Windows как следует:
- Клиент проверяет, является ли запрашиваемое имя своим.
- Затем клиент ищет файл локальных хостов, список IP-адресов и имен, хранящихся на локальном компьютере.
- Запрошены серверы доменных имен (DNS).
- Если имя еще не разрешено, в качестве резервной копии используется последовательность имен имен NetBIOS. Этот порядок можно изменить, настроив тип узла NetBIOS клиента.
nslookup
с другой стороны, используется для тестирование серверов доменных имен.
10
2017-11-19 21:29
Попробуйте добавить .
к суффиксам DNS для этого соединения. I.e, перейдите к:
- Состояние Ethernet
- Щелкните Свойства
- Версия интернет-протокола 4
- Щелкните Свойства
- Нажмите Дополнительно.
- Добавление этих DNS достаточно (по порядку)
- Добавить
.
как суффикс.
Те же шаги проиллюстрированы на следующем скриншоте:

Это должно сделать ping wolfman
Работа.
объяснение
nslookup wolfman
(поиск сервера имен: wolfman) отправляет имя хоста (wolfman
) в DNS (система доменных имен) для получения соответствующего IP-адреса. Это единственная цель nslookup
команда. Это уже работает, поэтому мы проверили, что DNS работает, и что wolfman
действительно соответствует IP-адресу.
В противоположность, ping wolfman
нужно сделать две вещи:
- Получите IP-адрес, что имя хоста (
wolfman
) соответствует.
- Отправлять пакеты на IP-адрес и прослушивать ответ
В Windows (даже в последних версиях, таких как Windows 10) первый шаг может легко завершиться неудачей. Для обратной совместимости Windows поддерживает различные методы разрешения имени хоста (файл hosts, DNS, NetBIOS / WINS, файл LMHOST).
К сожалению, кажется, что Windows ' ping
команда не всегда пытается выполнить поиск DNS. Я не знаю конкретных условий, вызывающих такое поведение.
К счастью, мы можем заставить Windows выполнять поиск DNS, используя Полное доменное имя (полное доменное имя). На практике мы делаем это путем суффикса .
точка до имени хоста: wolfman.
, Пытаться ping wolfman.
и убедитесь, что он работает.
Последний шаг - заставить Windows добавить эту точку. Я уже показал, как это сделать в начале этого ответа.
9
2017-10-09 11:51
Я боролся с подобной проблемой и попробовал решение, предложенное @harrymc.
Я нашел то, что в конечном итоге кажется (по крайней мере, несколько) работой на форуме технологий Microsoft
(nslookup работает, но ничто другое не имеет DNS на автономном компьютере Win7)
Вот цитата:
... попробуйте использовать приведенную ниже команду, чтобы очистить и сбросить кеш-клиент для проверки.
ipconfig / flushdns
ipconfig / registerdns
Подробнее см. Ссылку ниже.
http://jefferyland.wordpress.com/2011/07/28/quick-review-of-flushdns-registerdns-and-dns-queries/
Так что в основном то, что мне не хватало, было ipconfig /registerdns
8
2017-09-22 08:32
Только сегодня у нас была такой же вопрос, но решение было иным, Поэтому я подумал, что добавлю его для справки, поскольку это был самый лучший результат поиска.
- проблема:
ping
не будет разрешать имя хоста, но nslookup
Можно. (Соблюдается на двух разных хостах Windows Server 2012 R2.)
- причина: (Для каждого хоста) Хост имеет несколько подключенных сетевых адаптеров и есть несколько шлюзов по умолчанию сконфигурировано.
- Решение: (Для каждого хоста) Удалите шлюз по умолчанию из конфигурации всех сетевых адаптеров, кроме одного, так что только один шлюз по умолчанию,
6
2018-04-28 08:41
Возможно, wolfman.company.com указан в C: \ Windows \ system32 \ drivers \ etc \ hosts?
nslookup обходит этот файл и всегда запрашивает DNS, в то время как пинг и другие инструменты в первую очередь ищут файл «hosts», а затем в DNS.
5
2017-11-19 20:04
У меня была такая же проблема в системе Windows 2012R2 (= 8.1), и я пробовал все вышеперечисленные предложения, но ни один из них не исправит ее:
- Отработало полное имя.
- Пинг неквалифицированного имени не сделал.
- Оба работали в нескольких других системах, которые имели одинаковую ОС и, по-видимому, такую же конфигурацию.
- Там были все необходимые строки поиска суффиксов.
(Обратите внимание, что некоторые из предложенных исправлений, например обходной путь для запросов с несколькими метками, явно не имеют значения, так как неквалифицированное имя имеет только одну часть.)
Затем я заметил, что у целевой системы, которую я пытался выполнить ping, не было адреса IPv6. Поэтому я попробовал "ping -4 unqualified_name», и бинго! Это сработало.
Поэтому по какой-то причине, только в этой системе, ping только пытался разрешить неквалифицированный адрес name-> IPv6, а не неквалифицированное имя-> IPv4.
Для меня было исправить это, чтобы полностью отключить IPv6, поскольку мне это совсем не нужно. Но мне было бы очень интересно найти более мягкий способ рассказать ping (или, предположительно, службу DNS-клиента), чтобы попытаться разрешить адреса IPv4 и IPv6.
5
2018-04-09 16:18
Я пытался понять, почему на одном выигрыше 7 компьютеров я могу использовать ping server
который работает, а другой он не может разрешить server
, Однако оба могут пинговать server.lan
которые я не совсем понял.
Оказывается, я испортил некоторые настройки (DNS-суффиксы), чтобы не использовать FQDN при работе с VPN. Я должен был добавить свой местный .lan
к тем суффиксам, чтобы заставить оба компьютера действовать одинаково.
Перейдите в Панель управления> Сеть и Интернет> Сетевые подключения и щелкните правой кнопкой мыши на сетевом соединении и нажмите Свойства. Нажмите «Протокол Интернета версии 4» и нажмите кнопку «Свойства». Затем нажмите кнопку «Дополнительно» в новом окне. Перейдите на вкладку DNS, здесь я добавил суффикс DNS для своей работы, но также нужен для обычных домашних подключений.

2
2018-01-01 16:01
Я столкнулся с этим вопросом. «Самый простой» способ исправить это для меня - просто добавить .
до конца имени хоста. Однако это довольно раздражает. В большинстве сетей этого не требуется. Я бы предпочел не говорить всем в сети, чтобы сделать это, когда им нужно получить доступ к одному и тому же ресурсу.
Я рассматривал предложение Фредерика Аалунда как возможное решение и заметил, что они предложили перейти от опции «Добавить первичные и связанные с подключением DNS-суффиксы» по умолчанию. Это заставило меня подумать, может быть, моя сеть была просто немного сконфигурирована.
Глядя на мои настройки DD-WRT, «LAN-домен» остался без изменений. Установка этой строки на произвольную строку, похоже, устранила эту проблему для всех клиентов в моей сети, не имея специальной конфигурации на каждой машине, решение, которое я хотел! :)
2
2018-06-12 22:14