“.local”有什么作用?

Mar*_*arc 30 networking dns hostname

我家里的网络上有几台 Ubuntu 机器,但 DNS 是由 Windows 服务器 (2K) 提供的。当我从另一个 ssh 连接到它们时,如果我将它们作为“机器”连接到它们,则无法连接,但是如果以“machine.local”连接,则可以连接。

我认为同样,我无法从 Windows 客户端(如腻子)连接。

这里发生了什么?- 这显然是 Ubuntu 的事情。

小智 37

默认情况下,Ubuntu 包含 avahi。这是 zeroconf 的一个实现,它允许使用虚拟“.local”名称解析计算机主机名。每当您的计算机尝试连接到“hostname.local”时,avahi 将执行本地网络广播以查看是否有任何具有该主机名的计算机。其他运行 avahi(或兼容的东西)的计算机应该会回答。

如果您查看 /etc/nsswitch.conf,您会发现以下行:

hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4
Run Code Online (Sandbox Code Playgroud)

mdns4_minimal 是使此重定向工作的配置设置。

您的问题实际上表明 avahi 运行成功,因为您说您可以使用“hostname.local”连接到您的 Ubuntu 计算机。但是,如果您尝试从另一台 Ubuntu 计算机或另一台 Windows 计算机进行连接,则没有明确说明(“当我从另一台 ssh 连接到它们时,...”)。如果不安装 Bonjour 等其他软件,Windows 计算机将无法解析 zeroconf 样式的“hostname.local”名称。


Oli*_*Oli 14

要解决您的问题,您只需要 Avahi。这会将您的 Ubuntu 机器名称宣布给 Windows 批次。

sudo apt-get install avahi-daemon
Run Code Online (Sandbox Code Playgroud)

machinename.local工作归功于 zeroconf 的另一个实现(Avahi 也是),称为 Bonjour,由 Apple 创建(IIRC)。它是默认安装的。我不知道为什么 Avahi 不是,但考虑到它给人们带来的混乱,它可能是。

维基百科上有更多相关内容:http : //en.wikipedia.org/wiki/.local

  • 不,avahi 使用 `.local`,这是 mDNS 规范所要求的。 (7认同)