Как узнать, как происходит разрешение DNS на клиентском компьютере?

Вопрос или проблема

На клиенте Windows 7, когда я пингуй хост в локальной сети MYSTERY, он показывает правильный IP. Однако, когда я выполняю nslookup MYSTERY, он говорит, что домен не существует. Я проверил как DNS, указанные в ipconfig, и обнаружил, что имя MYSTERY действительно не указано. На DHCP-сервере также нет этой записи. Такое же поведение наблюдается после выполнения ipconfig /flushdns. В локальном файле hosts Windows тоже нет этой записи.

Как я могу выяснить, откуда клиент получает разрешённый IP?

Примечание: MYSTERY — это Synology Rackstation, настроенный для подключения к сетевому домену.

На вашем компьютере с Windows должен быть установлен какой-то резольвер mDNS (Bonjour), будь то из iTunes, Skype или другого программного обеспечения, которое устанавливает резольвер mDNS. ping будет правильно разрешаться, если резольвер установлен, потому что LLMNR теперь используется в Windows Vista и выше. LLMNR использует резольвер mDNS для возврата записи.

Synology использует демона под названием avahi, это Multicast DNS/mDNS/DNS-SD сервер. С завода Synology поставляется с батареей, настроенным как “RackStation” или по имени хоста, исходя из моего опыта.

Если у вас есть Mac, dns-sd -B покажет вам многокастовые службы. Вы увидите службу _http._tcp.local. для RackStation.

dns-sd -G v4 RackStation.local должен дать вам правильный IP-адрес для вашей RackStation.

dns-sd -L RackStation _http._tcp. должен вернуть всю информацию о службе, включая номер порта, серийный номер, модель и т. д.

Это также относится и к DiskStation. Я проводил свои испытания на DiskStation. RackStation должен быть таким же.

(Этот ответ, вероятно, неверен. @xeon, похоже, на правильном пути, и я здесь чему-то научился.)


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

nslookup — это команда для запросов DNS. ping, с другой стороны, также попытается использовать NetBIOS/WINS и файл hosts для разрешения имен. Наиболее вероятный сценарий заключается в том, что это имя было получено через первое.

Вы можете использовать nbtstat -c, чтобы перечислить имена NetBIOS и IP-адреса, которые были недавно видны, или nbtstat -a <устройство>, если вы хотите активно искать имя. Имейте в виду, что -a займет больше времени, так как ему нужно попытаться сделать это для каждого интерфейса. (вы не можете сказать ему пропустить широковещательную рассылку/использовать только WINS)

Опция -r позволит вам сравнить то, что было разрешено через широковещательную рассылку, с тем, что было разрешено через WINS, но это становится немного более сложным.

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

Ответ или решение

Чтобы узнать, как DNS разрешается на клиентском компьютере, можно выполнить несколько шагов, чтобы получить полное представление о процессе разрешения имён. Ниже представлен план действий на примере Windows 7, учитывающий вашу ситуацию с именем хоста "MYSTERY".

Шаг 1: Проверка инструментов разрешения имён

  1. Использование команды ping:
    Команда ping пытается разрешить имя хоста через несколько методов, включая:

    • DNS
    • NetBIOS
    • WINS
    • файл hosts

    Если ping MYSTERY возвращает корректный IP-адрес, значит, имя хоста было разрешено каким-то из перечисленных способов. Для дальнейшего анализа важно определить, какой именно метод был использован.

  2. Использование команды nslookup:
    Команда nslookup служит для выполнения DNS-запросов и, если она возвращает сообщение "недействительный домен", это означает, что DNS-сервер не содержит информации о данном имени хоста.

Шаг 2: Проверка кэша NetBIOS

Чтобы проверить, использовалось ли разрешение через NetBIOS, выполните команду:

nbtstat -c

Эта команда покажет кэшированные NetBIOS имена и соответствующие IP-адреса. Если имя MYSTERY присутствует, значит, оно было разрешено именно через NetBIOS.

Дополнительно, можно использовать:

nbtstat -a <ip-адрес>

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

Шаг 3: Проверка файла hosts

Проверьте файл hosts (расположение: C:\Windows\System32\drivers\etc\hosts), чтобы убедиться, что в нём нет недействительных или конфликтующих записей. Это может переопределять стандартное поведение DNS и вызывать путаницу при разрешении имён.

Шаг 4: Мониторинг Multicast DNS

Учитывая, что ваше устройство Synology Rackstation может использовать mDNS (Multicast DNS), есть вероятность, что оно было разрешено через mDNS-резолвер. На Windows 7 может быть установлен модули mDNS (например, Bonjour). Для тестирования mDNS, если у вас есть Mac, попробуйте команды:

dns-sd -B

и

dns-sd -G v4 RackStation.local

Это может подтвердить, используется ли mDNS для разрешения имен.

Шаг 5: Проверка и анализ DHCP

Обратите внимание на сервер DHCP. Убедитесь, что сервер DHCP не предоставляет какие-либо дополнительные метаданные, которые могут содержать информацию о хостах. Если у вас есть доступ к DHCP, проверьте, нет ли в нём записей о MYSTERY.

Заключение

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

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

Оцените материал
Добавить комментарий

Капча загружается...