忘记你所读过的关于 Windows 主机名解析的一切,因为它在处理 LAN(非限定)主机名时是错误的。无论我怎么尝试,Windows将不会联系已配置的 DNS 服务器来解决这些问题。我在 Wireshark 中检查过,Windows 将使用 NetBIOS (UDP)、mDNS、LLMNR 等,但绝不会使用普通的旧端口 53 DNS。
我试过所有的技巧:禁用 TCP 上的 NetBIOS(这无关紧要,因为它默认使用 UDP),告诉我的路由器的 dnsmasq 通告禁用 NetBIOS,将.
后缀附加到不合格的名称解析列表,注册表黑客禁用多播名称解析等。所有这些操作都是为了禁用 LAN 主机的 NetBIOS、mDNS、LLMNR 等中的一个或多个解析没有启用 DNS。
唯一似乎有效的方法是.
在输入主机名时手动将其附加到主机名。
我知道这可能是某种安全问题,但到 2021 年,大多数家用路由器肯定都会提供通过 DHCP 公布的自己的 DNS 服务。
我是否遗漏了什么?
编辑:作为一种解决方法,我在路由器上启用了 Samba,并启用了 DNS 代理和 WINS。这似乎在 DNS 和 NetBIOS 之间建立了一座桥梁。
编辑 2:在对 Wireshark、Avahi、wsdd2、Samba 等进行广泛研究后,我发现,除了 Windows 10 简单地拒绝对不合格的主机名使用常规 DNS 之外,它还会等待其 LLMNR 查询超时,然后才能完成不合格的主机名解析 - 即使它已收到 NetBIOS和mDNS 响应。如果它获得 LLMNR 响应(例如,当 ping 另一台 Windows 10 计算机或运行启用了 LLMNR 的 wsdd2 的 Linux 计算机时),解析将立即完成。
编辑 3:已确认 - 我按照说明禁用了 Windows 10 中的“多播名称解析”,这实际上禁用了 mDNS 和 LLMNR,同时保持 NetBIOS 启用。Windows 10 现在立即接受来自我的路由器的 Samba 服务器的 NetBIOS 应答作为权威应答。https://www.blackhillsinfosec.com/how-to-disable-llmnr-why-you-want-to/