127

На моей рабочей станции 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 , но я бы предпочел выяснить, почему это происходит. Проблема временная, большую часть дня я могу подключиться к машине просто отлично.

Как это возможно?

ЭТА: Я оставил это для краткости, но его попросили:

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 выводят сообщение «неизвестный хост-волк».

Обновление: с помощью wireshark я обнаружил, что моя рабочая станция не пытается выполнить поиск DNS. Это просто сообщение об ошибке "Не удалось найти хост".

20 ответов20

96

Я считаю, что 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
Очистить таблицу маршрутизации: route /f (требуется перезагрузка)

26

Попробуйте проверить связь с именем хоста, за которым следует точка. Поэтому вместо ping wolfman используйте ping wolfman.

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

16

Попробуйте ipconfig /displaydns и найдите wolfman. Если он кэшируется как "имя не существует" (возможно, из-за предыдущего периодического неудачного поиска), вы можете очистить кэш с помощью ipconfig /flushdns .

nslookup не использует кеш, а запрашивает DNS-сервер напрямую.

12

Попробуйте добавить . к суффиксам DNS для этого соединения. То есть, перейти к:

  1. Состояние Ethernet
  2. Нажмите Свойства
  3. Интернет-протокол версии 4
  4. Нажмите Свойства
  5. Нажмите Дополнительно
  6. Добавить эти DNS достаточно (по порядку)
  7. . как суффикс.

Те же шаги проиллюстрированы на следующем снимке экрана:

Это должно заставить работать ping wolfman .

объяснение

nslookup wolfman (поиск по имени сервера: wolfman) отправляет имя хоста (wolfman) в DNS (система доменных имен) для получения соответствующего IP-адреса. Это единственная цель команды nslookup . Это уже работает, поэтому мы убедились, что DNS работает и что wolfman действительно соответствует IP-адресу.

В отличие от этого, ping wolfman нужно сделать две вещи:

  1. Получить IP, которому соответствует имя хоста (wolfman).
  2. Отправляйте пакеты на IP и слушайте ответ

В Windows (даже в последних версиях, таких как Windows 10) первый шаг может легко потерпеть неудачу. В целях обратной совместимости Windows поддерживает различные методы разрешения имени хоста (файл hosts, DNS, NetBIOS/WINS, файл LMHOST).

К сожалению, похоже, что команда ping Windows не всегда пытается выполнить поиск DNS. Я не знаю конкретных условий, которые вызывают это поведение.

К счастью, мы можем заставить Windows выполнить поиск DNS, используя полное доменное имя (полное доменное имя). На практике мы делаем это с помощью суффикса a . точка на имя хоста: wolfman. , Попробуй ping wolfman. и убедитесь, что это работает.

Последний шаг - заставить Windows самому добавить эту точку. Я уже показал, как это сделать, в начале этого ответа.

10

nslookup работает иначе, чем другие команды при разрешении имен / IP-адресов в Windows.

Обычный метод разрешения в Windows выглядит следующим образом:

  1. Клиент проверяет, является ли запрашиваемое имя его собственным.
  2. Затем клиент ищет локальный файл Hosts, список IP-адресов и имен, хранящихся на локальном компьютере.
  3. Серверы системы доменных имен (DNS) запрашиваются.
  4. Если имя все еще не разрешено, последовательность разрешения имен NetBIOS используется в качестве резервной копии. Этот порядок можно изменить, настроив тип узла NetBIOS клиента.

С другой стороны, nslookup используется для тестирования серверов доменных имен.

8

Я боролся с подобной проблемой и попробовал решение, предложенное @harrymc. Я нашел то, что в конечном итоге (по крайней мере, в некоторой степени) работает на форуме Microsoft Technet (nslookup работает, но больше ничего не имеет DNS на автономном ПК с Win7)

Вот цитата:

... попробуйте использовать приведенную ниже команду для очистки и сброса кэша распознавателя клиента для тестирования.

ipconfig /flushdns

ipconfig /registerdns

Пожалуйста, обратитесь к ссылке ниже для более подробной информации. http://jefferyland.wordpress.com/2011/07/28/quick-review-of-flushdns-registerdns-and-dns-queries/

Так что в основном мне не хватало ipconfig /registerdns

6

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

  • Проблема: ping не разрешит имя хоста, но nslookup может. (Наблюдается на 2 разных хостах Windows Server 2012 R2.)
  • Причина: (Для каждого хоста) К хосту подключено более одного сетевого адаптера, и настроено несколько шлюзов по умолчанию.
  • Решение: (Для каждого хоста) Удалите шлюз по умолчанию из конфигурации всех сетевых адаптеров, кроме одного, поэтому остается только один шлюз по умолчанию.
5

У меня была такая же проблема в системе Windows 2012R2 (= 8.1), и я попробовал все перечисленные выше предложения, но ни одно из них не помогло:
- Пинг до полного уточнения имени сработал.
- пинговать безоговорочное имя не стал.
- Оба работали на нескольких других системах, которые имели одинаковую ОС и, очевидно, одинаковую конфигурацию.
- Все необходимые строки поиска суффикса были там.
(Обратите внимание, что некоторые из предложенных исправлений, например, обходной путь для запросов с несколькими метками, явно не имеют значения, поскольку неквалифицированное имя имеет только одну часть.)

Затем я заметил, что целевая система, на которую я пытался пропинговать, НЕ имела IPv6-адреса. Поэтому я попробовал "ping -4 unqualified_name " и бинго! это сработало.
Поэтому по какой-то причине только в этой системе ping пытался разрешить неквалифицированное имя-> IPv6-адрес, а не неквалифицированное имя-> IPv4.
Для меня решение было полностью отключить IPv6, так как он мне вообще не нужен. Но мне было бы очень интересно найти более мягкий способ заставить ping (или предположительно службу DNS-клиента) попытаться разрешить адреса IPv4 и IPv6.

5

Может быть, wolfman.company.com указан в C:\Windows\system32\drivers\etc\hosts?

nslookup пропускает этот файл и всегда запрашивает DNS, в то время как ping и другие инструменты в первую очередь ищут в файле hosts, а затем в DNS.

2

Добавление записи в файл c:/windows/system32/drivers/etc/hosts может исправить это.

2

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

Я рассматривал предложение Фредерика Аалунда как возможное решение и заметил, что они предложили переключиться со стандартного параметра «Добавить основной DNS-файл и DNS-суффиксы конкретного подключения». Это заставило меня задуматься, может быть, моя сеть была просто слегка неправильно настроена.

Глядя на мои настройки DD-WRT, "Домен LAN" остался неустановленным. Установка в произвольную строку, кажется, устранила эту проблему для всех клиентов в моей сети без специальной настройки на каждой машине, решение, которое я хотел! :)

2

Я пытался выяснить, почему на одном компьютере win 7 я могу использовать работающий ping server , а другой - не может разрешить server . Однако оба могли пинговать server.lan который я не совсем понял.

Оказывается, я испортил некоторые настройки (DNS-суффиксы), чтобы не использовать полные доменные имена при использовании рабочего VPN. Мне пришлось добавить свой локальный .lan к этим суффиксам, чтобы оба компьютера работали одинаково.

Перейдите в Панель управления> Сеть и Интернет> Сетевые подключения, щелкните правой кнопкой мыши сетевое подключение и нажмите Свойства. Нажмите Internet Protocol Version 4 и нажмите кнопку «Свойства». Затем нажмите кнопку Дополнительно ... в этом новом окне. Перейдите на вкладку DNS, здесь я добавил DNS-суффикс для своей работы, но также мне нужен был и для моих обычных домашних подключений.

Расширенные настройки TCP/IP

1

Я могу ошибаться, потому что это основано на моих давно забытых днях набора ресурсов для NT4.

Как я помню, PING использует Netbios/WINS и DNS (в таком порядке, по крайней мере, если вы не укажете полное доменное имя).

Служба WINS исчезла много лет назад, но у вас все еще может быть включен Netbios на вашем интерфейсе, и поэтому PING может использовать netbios, которые могут не дать вам никакого результата. Особенно если трафик где-то проходит через роутер.

Просто отключите Netbios, и Ping будет использовать DNS в качестве первого приоритета и добавит зарегистрированный DNS Surffic на интерфейсе к вашему имени хоста.

1

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

Мне показалось, что какая-то система DNS-кэширования в клиенте Windows неисправна. Это влияет на Windows 7 и 8.1 ... больше ничего не могу сказать о Windows XP. Пинг не разрешает имя. важна не часть icmp, а часть разрешения имен). nslookup предназначен для запросов к серверу имен и делает именно это, без разрешения имен иерархии окон.

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

Ура!

1

Я столкнулся с этим, когда мы перешли на Windows 7 из Windows XP, проблема была связана с проблемой Windows 7 Multi Label DNS Query.

Разрешить добавление суффикса DNS к неквалифицированным запросам имен с несколькими метками - см .:

http://computerstepbystep.com/allow_dns_suffix_appending_to_unqualified_multi_label_name_queries.html

Надеюсь это поможет

1

Если на Mac OS X это может быть проблема с кешем DNS:

Дамп кеша

sudo killall -HUP mDNSResponder
sudo dscacheutil -flushcache
0

У меня только что была эта проблема, и я нашел что-то довольно своеобразное, и мне удалось это исправить.

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

Например, если в вашем DNS у вас есть запись для www.example.com - 10.0.0.20, но затем у вас есть запись в файле hosts вашего клиента, 10.0.0.20 Someelse.com, вы не сможете пинговать www .example.com

Странно да

0

У меня была такая же проблема, и оказалось, что другая машина имела такой же IP-адрес, и это было причиной.

Сменил IP обратно на DHCP и все работало нормально.

0

В моем случае эта проблема была решена путем добавления домена хоста, который я пытался пропинговать, к параметру групповой политики с именем «Список поиска DNS-суффиксов».

Короче говоря, процедура выглядит следующим образом: Откройте gpedit.msc и перейдите к Computer Configuration -> Administrative Templates -> Network -> DNS Client > DNS Suffix Search List , установите для него значение "Включено" и добавьте имя домена в список (список по умолчанию пусто).

Более подробное описание этих шагов можно найти здесь

-1

ping использует протокол ICMP, в частности «Echo Request» и «Echo Reply».

многие сети отключают утилиты ICMP для предотвращения атак или базового сканирования сети. Я обнаружил, что многие маршрутизаторы, которые вы приобретаете, поставляются с настройкой отключения пинга и аналогичными утилитами, включенными по умолчанию.

Вы можете найти больше о ICMP здесь:

http://en.wikipedia.org/wiki/Internet_Control_Message_Protocol

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .