Windows 2008r2 DNS 服务器无法解析本地主机名

Windows 2008r2 DNS 服务器无法解析本地主机名

我正在以非域(工作组)角色运行 Windows 2008r2 服务器。它是 LAN 的 DNS 服务器和 DHCP 服务器。

DNS 服务对于外部 Internet 地址运行良好,但本地主机名无法解析(大多数情况下 - 有关详细信息,请参阅下文)。

DHCP 服务器在其租约列表中列出了 LAN 上所有设备的正确主机名,但 DNS 服务器似乎并未意识到这一点。

我已配置 DHCP 作用域设置,让客户端注册其 DNS。DHCP 作用域属性中的 DNS 选项卡已勾选

  • “启用 DNS 动态更新”
  • “始终动态更新 DNS A 和 PTR 记录”。
  • “删除租约时丢弃 A 和 PTR 记录”,
  • “为未请求更新的客户端动态更新 DNS A 和 PTR 记录...”

作为示例,我将展示 4 个主机的名称解析结果

  1. sun——Windows 2008r2 服务器(DNS、DHCP)
  2. mars——Windows 10 客户端
  3. uranus——Linux Ubuntu 16.04 客户端
  4. PiZeroW——Raspberry Pi Zero,Raspbian

我尝试了带有和不带有 .local 后缀的主机名。

来自 Sun:

Ping mars           works (mars.local also works)
Ping Uranus         works
Ping Uranus.local   host not found      
Ping PiZeroW        host not found (same result for .local)

从火星出发:

ping sun             works     (sun.local also works)
ping uranus          works     (uranus.local also works)
Ping PiZeroW         host not found (same result for .local)

来自天王星:

ping sun          unknown host (same result for .local)
ping mars         unknown host (same result for .local)
Ping PiZeroW      unknown host
Ping PiZeroW.local  works

来自 PiZeroW:

ping sun             unknown host   (same result for .local)
ping mars            unknown host   (same result for .local)
ping uranus          unknown host   
ping uranus.local    works 

有人能解释一下为什么我得到的结果不一致吗?这里有没有什么模式可以提供线索?有没有关于本地 LAN DNS 配置的好教程?

答案1

您的计算机在不同程度上实现了链路本地多播名称解析 (LLMNR)。此机制无需中央服务器即可实现对等工作,因此主机会报告其名称以响应在本地 LAN 上以多播数据报形式发送的查询。具有匹配名称的主机会向查询主机发送响应。名称是单标签名称,如“mars”,没有任何后缀。为方便起见,Windows 客户端接受 .local 后缀,该后缀在执行查询之前会被删除。

要使此机制发挥作用,查询主机和响应主机都必须启用 LLMNR。如果查询计算机未实施 LLMNR,它将仅依赖其他机制,如 DNS 或 /etc/hosts 中的静态主机条目。被查询的主机必须启用响应器。

多播 DNS(mDNS)是一种类似的机制,但在 Windows 计算机上很少使用。

相关内容