为什么 D-Link 路由器的 DNS 不返回本地主机名?

为什么 D-Link 路由器的 DNS 不返回本地主机名?

我有一台 D-Link DIR-600。您可以在此处查看其部分配置:

D-Link 配置截图

如您所见,我设置了两个固定主机名,“wilson”和“sheldon”。但是,如果我尝试通过名称访问它们,无论从 LAN 中的哪台计算机,无论是 Ubuntu 还是 Windows,都无法正常工作:

$ nslookup wilson
Server:     192.168.178.1
Address:    192.168.178.1#53

** server can't find wilson: NXDOMAIN

$ nslookup wilson.local
Server:     192.168.178.1
Address:    192.168.178.1#53

** server can't find wilson.local: NXDOMAIN

$ nslookup stackexchange.com
Server:     192.168.178.1
Address:    192.168.178.1#53

Non-authoritative answer:
Name:   stackexchange.com
Address: 69.59.197.21

除了将这些主机名添加到 /etc/hosts 之外,还有其他方法可以获取这些主机名吗?

答案1

在两个 matchine 上使用 Linux,请尝试getent hosts wilson.local,或者简单地ping wilson.local。这假设您已经安装了 avahi-daemon 和 nss-mdns,通常情况如此。

nslookup 和 dig 等特定 DNS 工具不会自动支持 MDNS(多播 DNS)上的 .local。它们会绕过标准 C 库进行名称解析,并且不会与 avahi-daemon 本身集成。

我还尝试在 /etc/resolv.conf 中设置“搜索本地”/要求 NetworkManager 使用“本地”作为本地域。即允许ping wilson不使用 .local。但看起来 nss-mdns 没有实现它。

我没有 Windows 的说明。最简单的方法可能是使用 Apple 的 Bonjour。

这是 Linux 采用的 Apple 衍生系统。还有一个基于 Windows 的替代方案。Linux 可以使用 samba 中的“winbind”守护程序集成到其中。我也没有这方面的说明 :)。


我认为我的 Netgear DG834 也不会返回本地 DNS 名称。有趣的是,我认为如果他们愿意的话,他们可以返回。我的路由器和其他路由器使用 dnsmasq,并且默认dnsmasq 配置已返回本地 DNS 名称。我已经亲自测试过 - 我在 Linux 服务器上运行 dnsmasq,并禁用/忽略路由器的 DHCP/DNS 服务。

相关内容