LLMNR与DNS - 为什么'ping'使用llmnr而不是dns,除非我附加'。' 到主机名,为什么llmnr不工作?


1

我在一个从互联网上关闭的局域网上运行,有一些设备(A,B,C,......)通过以太网电缆连接到一台路由器,使这个局域网成为可能。所有设备上的操作系统:Windows 10。

问题:

  • 当DNS没有时,为什么LLMNR失败?
  • 为什么'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的声誉来创建新标签。如果可以在创建问题后标记问题,请添加此标记,方法是编辑此问题。


nslookup总是查询DNS,因此测试毫无意义。我没有看到你提到操作系统。我想这是Windows ......?
Daniel B

@DanielB我刚编辑了这个问题,以便它解决操作系统问题。局域网上的所有设备都是Windows 10.我包含了nslookup命令输入和输出,因为我也很好奇究竟发生了什么时候以及为什么要添加'。'。到主机名。
Hybr13

欢迎来到超级用户。我也在这里假设Windows。请编辑您的问题以包含输出ipconfig /all。另外,你在一篇文章中提出了太多问题。您可以发布多个问题,如有必要,可以链接回此问题以提供上下文。
Twisty Impersonator

@TwistyImpersonator感谢您的建议。我会及时做到这一点(每40分钟只能发一次问题)。
Hybr13

你在这台特定的PC上安装了Apple软件吗?
丹尼尔B

Answers:


1

LLMNR仅用于单标签名称的本地链接(或者,作为特殊情况,表单的名称,在解析它们之前hostname.local转换为hostname)。主持人以自己的名字回应; 没有中央名称服务器。

Why is LLMNR failing, when DNS doesn't?

可能是因为主机A已知其他名称,即ADNS已知该名称,但该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用于LAN,因此您不需要本地DNS服务器提供本地名称。DNS用于解析Internet上的名称。

有关LLMNR的教程,请参阅链接本地多播名称解析


在阅读完答案之后,我想我会尝试'hostname'命令并意识到我的问题中的'A'是“设备名称”(由我创建的DHCP保留设置),而不是主机名。我假设当您通过路由器设置创建DHCP预留时,使用预留设置的“设备名称”是新主机名(至少通过DNS)。我不应该做出这样的假设。主机名仍然等于“完整计算机名”。这次经历让我对这些类型的事物有了更多的了解。谢谢约翰!
Hybr13
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.