4

У меня есть интересная проблема DNS в AD (2008R2), которую я не могу найти способ отладки. Главным образом, если из командной строки я пытаюсь

ping <machinename>
тогда я получаю ответ, что хост не найден. Но, когда я делаю
nslookup <machinename>
Я получаю правильный ответ от своего DNS с соответствующими записями AAAA и A. У кого-нибудь есть идея, что может вызвать это?

Клиентские машины работают под управлением Windows 7 Enterprise.

6 ответов6

2

Убедитесь, что в HOSTS и LMHOSTS нет ничего смешного. nslookup работает, общаясь напрямую с DNS-сервером, тогда как ping для разрешения имен используется операционной системой. Это означает, что ваш файл HOSTS может быть испорчен, или есть повреждение в Winsock и т.д. И т.д.

Поскольку мы играем с IPv4 и IPv6, что произойдет, когда вы пингуете хост -4 и пингуете хост -6?

Вы также можете отключить WINS/NetBIOS

альтернативный текст

0

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

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

Мой вопрос

Недавно я получил новый маршрутизатор (Mikrotik) и настроил его для назначения каждому узлу в моей сети статического IP-адреса и присвоения каждому узлу локального DNS- имени узла (и только имени узла). Это работало нормально из UNIX/Linux/Mac OS X, но Windows имела проблемы с этим.

В Windows я не мог пропинговать некоторые хосты по имени, хотя я мог искать их через nslookup и пинговать их по IP:

C:\>nslookup router
Server:  router
Address:  192.168.22.1

Non-authoritative answer:
Name:    router
Address:  192.168.22.1


C:\>ping router
Ping request could not find host router. Please check the name and try again.

C:\>ping 192.168.22.1

Pinging 192.168.22.1 with 32 bytes of data:
Reply from 192.168.22.1: bytes=32 time<1ms TTL=64
Reply from 192.168.22.1: bytes=32 time<1ms TTL=64
Reply from 192.168.22.1: bytes=32 time<1ms TTL=64
Reply from 192.168.22.1: bytes=32 time<1ms TTL=64

Ping statistics for 192.168.22.1:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 0ms, Average = 0ms

C:\>nslookup overkill
Server:  router
Address:  192.168.22.1

Non-authoritative answer:
Name:    nas_server
Address:  192.168.22.5

Но как ни странно, некоторые другие работали:

C:\>ping nas_server

Pinging nas_server [192.168.22.5] with 32 bytes of data:
Reply from 192.168.22.5: bytes=32 time<1ms TTL=64
Reply from 192.168.22.5: bytes=32 time<1ms TTL=64
Reply from 192.168.22.5: bytes=32 time<1ms TTL=64
Reply from 192.168.22.5: bytes=32 time<1ms TTL=64

Ping statistics for 192.168.22.5:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 0ms, Average = 0ms

C:\>

Я использовал Wireshark для дальнейших исследований и обнаружил, что команда ping не вызывает отправку каких-либо пакетов DNS, только пакетов службы имен NetBIOS . Это не удастся для моего маршрутизатора, но это удастся для моего сервера NAS (потому что NAS работает под управлением Samba). Nslookup использовал DNS, поэтому он работал на все.

Захват Wireshark от пинга:Wireshark Захват из пинга

Основная проблема заключалась в том, что в некоторых случаях Windows использует службу имен NetBIOS вместо DNS (например, когда у хоста нет домена).

Мое решение

Примечание: снимки экрана взяты из экрана конфигурации моего маршрутизатора, но они иллюстрируют общие понятия.

Я настроил свой DHCP-сервер так, чтобы он сообщал всем хостам, что они являются частью домена:Конфиг DHCP

Затем я настроил все свои статические записи DNS для размещения всех хостов в этом домене:Статическая запись DNS

Затем я удалил всю информацию DHCP/DNS из Windows:

C:\>ipconfig /release
C:\>ipconfig /renew
C:\>ipconfig /flushdns

И все заработало!

C:\>ping router

Pinging router.localnet [192.168.22.1] with 32 bytes of data:
Reply from 192.168.22.1: bytes=32 time<1ms TTL=64
Reply from 192.168.22.1: bytes=32 time<1ms TTL=64
Reply from 192.168.22.1: bytes=32 time<1ms TTL=64
Reply from 192.168.22.1: bytes=32 time<1ms TTL=64

Ping statistics for 192.168.22.1:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 0ms, Average = 0ms

C:\>
0

Предыдущие комментарии верны. Я бы просто добавил, что МОЖЕТ быть последовательность для разрешения имен. По крайней мере, это существует в Linux как файл с именем /etc /nsswitch. По умолчанию локальный файл HOST разрешает имена ДО вызова сервера имен. Что касается фактических IP-адресов серверов имен, они настраиваются в Панели управления -> Сеть

Обычно файл HOSTS находится в папке C:\WINDOWS\SYSTEM32\DRIVERS\ETC

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

0

Я сталкивался с системами Vista, кеширующими пустые записи DNS, если сервер DNS не был доступен. Запуск "ipconfig /flushdns" очистил их. В зависимости от того, что является основной причиной, это может быть только исправлением, но посмотрите, как отключить кэширование отрицательных результатов DNS. Есть достойные инструкции здесь

0

У меня точно такая же проблема. Для меня проблема была вызвана определением нескольких DNS-серверов. Мои настройки IPv4 были установлены на DHCP с первичным DNS, установленным на мой маршрутизатор, и вторичным DNS на Google DNS-сервер. Хотя порядок не имеет значения.
Когда я переключаюсь на использование DNS-сервера, предоставляемого через DHCP, проблема решается. Добавление DNS-серверов обратно возвращает проблему.

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

-1

Из коробки Windows 7 отключает ответ Ping в брандмауэре Windows. Вам нужно будет включить его на всех клиентских компьютерах. Не уверен, что это можно сделать с помощью групповой политики. Вот как это сделать на Vista, я предполагаю, что 7 это то же самое.

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