LLMNR vs DNS - Por que é 'ping' usando llmnr em vez de dns, a menos que eu acrescente um '.' para o nome do host, e por que o llmnr não está funcionando?

1

Estou operando em uma LAN fechada a partir da Internet, e há alguns dispositivos (A, B, C, ...) conectados via cabo ethernet a um único roteador, tornando esta LAN possível. Sistema operacional em todos os dispositivos: Windows 10.

Perguntas:

  • Por que o LLMNR está falhando, quando o DNS não funciona?
  • Por que o 'ping A' usa o LLMNR, enquanto o 'ping A.' usa DNS?
  • Existe alguma maneira de forçar o nslookup a usar o LLMNR, em vez do DNS, e por quê?
  • O que exatamente está acontecendo quando adiciono um '.' para o nome do host, para 'ping' e 'nslookup'?
  • Como você sabe as respostas a essas perguntas (campo de trabalho e tipo de experiência)?

O CONTEXTO DESTA PERGUNTA PODE SER ENCONTRADO ABAIXO

nslookup A

e

nslookup A.

ambos produzem o seguinte resultado satisfatório

Server:  localDnsServerName
Address: 192.168.1.1

Name:    A
Address: 192.168.1.X

Mesmo

ping A.

produz uma saída satisfatória ('.' é anexada ao nome do host que está sendo consultado)

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

No entanto, o seguinte comando

ping A

produz um resultado insatisfatório

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

Após uma investigação mais aprofundada, via Wireshark, vejo os comandos nslookup e 'ping A.' comando resultam em consultas padrão bem-sucedidas usando o protocolo DNS.

No entanto, o 'ping A' resulta em uma consulta padrão usando o protocolo LLMNR, que falha.

Por meio do RFC 4795 , Resumo para o LLMNR:
"O objetivo da resolução de nomes de multidifusão local (LLMNR) é ativar a resolução de nomes em cenários nos quais a resolução de nomes DNS convencional não é possível. LLMNR suporta todos os formatos, tipos e classes DNS atuais e futuros, enquanto opera em uma porta separada do DNS, e com um cache de resolvedor distinto. Como o LLMNR opera somente no link local, ele não pode ser considerado um substituto para o DNS. "

Tag adicional: 'llmnr'
Eu teria adicionado a tag adicional mencionada oficialmente, mas não tenho uma reputação de pelo menos 300 para criar uma nova tag. Por favor, adicione esta tag, se for possível marcar uma pergunta depois de criada, editando esta questão.

    
por Hybr13 07.05.2018 / 17:49

1 resposta

1

O LLMNR deve ser usado somente no link local para nomes de rótulo único (ou, como um caso especial, nomes do formulário hostname.local , que é convertido em hostname antes de resolvê-los). Hosts respondem com seus próprios nomes; não há servidor de nomes central.

Why is LLMNR failing, when DNS doesn't?

Possivelmente porque o host A é conhecido por algum outro nome, ou seja, o nome A é conhecido pelo DNS, mas o comando hostname retorna outra coisa quando executado em A . Ou o host A não está atuando como um respondedor LLMNR.

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

Beacause A. não é um nome de rótulo único, ou seja, um nome sem pontos.

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

nslookup é uma ferramenta para consultar o DNS. O programa não está ciente do LLMNR.

DNS e LLMNR são projetados para se complementarem. O LLMNR é usado na LAN, portanto, você não precisa ter um servidor DNS local servindo nomes locais. O DNS é usado para resolver nomes na Internet.

Para um tutorial sobre o LLMNR, consulte Resolução de nomes de multidifusão de link local

    
por 07.05.2018 / 20:01