LLMNR против DNS - почему «ping» использует llmnr вместо dns, если я не добавляю «.» на имя хоста, и почему llmnr не работает?

658
Hybr13

Я работаю в локальной сети, закрытой от Интернета, и есть несколько устройств (A, B, C, ...), подключенных через кабель Ethernet к одному маршрутизатору, что делает эту локальную сеть возможной. Операционная система на всех устройствах: Windows 10.

Вопросы:

  • Почему сбой LLMNR, а DNS - нет?
  • Почему «ping A» использует LLMNR, а «ping A.» использует DNS?
  • Есть ли способ заставить nslookup использовать LLMNR вместо DNS и почему?
  • Что именно происходит, когда я добавляю «.» к имени хоста, для обоих 'ping' и 'nslookup'?
  • Как вы знаете ответы на эти вопросы (область работы и тип опыта)?

КОНТЕКСТ ЭТОГО ВОПРОСА МОЖЕТ НАЙТИ НИЖЕ

nslookup A 

а также

nslookup A. 

оба дают следующий удовлетворительный результат

Server: localDnsServerName Address: 192.168.1.1  Name: A Address: 192.168.1.X 

Четное

ping A. 

дает удовлетворительный вывод ('.' добавляется к запрашиваемому имени хоста)

Pinging A [192.168.1.x] with 32 bytes of data: Reply from 192.168.1.X: byte=32 time<1ms TTL=128 Reply from 192.168.1.X: byte=32 time<1ms TTL=128 Reply from 192.168.1.X: byte=32 time<1ms TTL=128 Reply from 192.168.1.X: byte=32 time<1ms TTL=128  Ping statistics for 192.168.1.X: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 0ms, Maximum = 0ms, Average = 0ms 

Тем не менее, следующая команда

ping A 

дает неудовлетворительный вывод

Ping request could not find host A. Please check the name and try again. 

После дальнейшего исследования через Wireshark я вижу команды nslookup и «ping A.» команда приводит к успешным стандартным запросам с использованием протокола DNS.

Однако «ping A» приводит к стандартному запросу с использованием протокола LLMNR, который завершается неудачно.

С помощью RFC 4795, Аннотация для LLMNR:
«Цель разрешения многоадресных имен локальной связи (LLMNR) состоит в том, чтобы включить разрешение имен в сценариях, в которых обычное разрешение имен DNS невозможно. LLMNR поддерживает все текущие и будущие форматы DNS, типы, и классы, работая на отдельном порту от DNS и с отдельным кешем распознавателя. Поскольку LLMNR работает только на локальном канале, его нельзя считать заменой DNS ".

Дополнительный тег: 'llmnr'
Я бы официально добавил упомянутый дополнительный тег, но у меня нет репутации как минимум 300 для создания нового тега. Добавьте этот тег, если возможно пометить вопрос после его создания, отредактировав этот вопрос.

1
`nslookup` всегда запрашивает DNS, так что тестирование бессмысленно. Я не видел, чтобы вы упомянули операционную систему. Я думаю, это Windows ...? Daniel B 5 лет назад 0
@DanielB Я только что отредактировал вопрос, чтобы он касался операционной системы. Все устройства в локальной сети - Windows 10. Я включил ввод и вывод команды nslookup, потому что мне также любопытно, что именно происходит, когда и почему вы хотите добавить '.' на имя хоста. Hybr13 5 лет назад 0
Добро пожаловать в Супер пользователя. Я предполагаю, что Windows здесь также. Пожалуйста, отредактируйте ваш вопрос, чтобы включить вывод `ipconfig / all`. Кроме того, вы задаете слишком много вопросов в одном посте. Вы можете опубликовать несколько вопросов, ссылаясь на них, если это необходимо для обеспечения контекста. Twisty Impersonator 5 лет назад 0
@TwistyImpersonator Спасибо за совет. Я сделаю это своевременно (отправлять вопрос можно только раз в 40 минут). Hybr13 5 лет назад 0
У вас установлено какое-либо программное обеспечение Apple на этом ПК? Daniel B 5 лет назад 0
@DanielB Я нет. Hybr13 5 лет назад 0

1 ответ на вопрос

1
Johan Myréen

LLMNR предназначен для использования только в локальной ссылке для однокомпонентных имен (или, как особый случай, имен формы hostname.local, в которую преобразуется hostnameдо их разрешения). Хозяева отвечают своими именами; нет центрального сервера имен.

Why is LLMNR failing, when DNS doesn't? 

Возможно, потому что хост Aизвестен под другим именем, то есть имя Aизвестно через DNS, но hostnameкоманда возвращает что-то еще при запуске A. Или хост Aне выступает в качестве ответчика LLMNR.

Why does 'ping A' use LLMNR, while 'ping A.' uses DNS? 

Beacause A.- это не однокомпонентное имя, то есть имя без точек.

Is there any way to force nslookup to use LLMNR, instead of DNS, and why? 

nslookup - это инструмент для запросов к DNS. Программа не знает о LLMNR.

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

Учебное пособие по LLMNR см. В разделе « Разрешение имен многоадресной рассылки для локальной связи».

Прочитав ваш ответ, я решил попробовать команду «hostname» и понял, что «A» в моем вопросе было «именем устройства» (установленным созданным мной резервированием DHCP), а не именем хоста. Я сделал предположение, что когда вы создаете резервирование DHCP через настройки вашего маршрутизатора, «Имя устройства», установленное с резервированием, является новым именем хоста (по крайней мере, через DNS). Я не должен был делать это предположение. Имя хоста по-прежнему равно «Полное имя компьютера». Этот опыт дал мне дополнительное понимание таких вещей. Спасибо, Йохан! Hybr13 5 лет назад 0

Похожие вопросы