我家里的网络上有几台 Ubuntu 机器,但 DNS 是由 Windows 服务器 (2K) 提供的。当我从另一个 ssh 到它们时,如果我将它们作为“机器”连接到它们,我无法连接,但如果我作为“machine.local”连接,我可以连接。
我认为同样,我无法从 Windows 客户端(如腻子)连接。
这里发生了什么?- 这显然是一个 Ubuntu 的东西。
我家里的网络上有几台 Ubuntu 机器,但 DNS 是由 Windows 服务器 (2K) 提供的。当我从另一个 ssh 到它们时,如果我将它们作为“机器”连接到它们,我无法连接,但如果我作为“machine.local”连接,我可以连接。
我认为同样,我无法从 Windows 客户端(如腻子)连接。
这里发生了什么?- 这显然是一个 Ubuntu 的东西。
默认情况下,Ubuntu 包含 avahi。这是 zeroconf 的实现,它允许使用虚拟“.local”名称解析计算机主机名。每当您的计算机尝试连接到“hostname.local”时,avahi 将执行本地网络广播以查看是否有任何具有该主机名的计算机。其他运行 avahi(或兼容的东西)的计算机应该会回答。
如果您查看 /etc/nsswitch.conf,您会发现以下行:
mdns4_minimal 是使此重定向工作的配置设置。
您的问题实际上表明 avahi 运行成功,因为您说您可以使用“hostname.local”连接到您的 Ubuntu 计算机。但是,如果您尝试从另一台 Ubuntu 计算机或另一台 Windows 计算机连接,您并不清楚(“当我从另一台 ssh 到他们时,......”)。如果不安装 Bonjour 等其他软件,Windows 计算机将无法解析 zeroconf 样式的“hostname.local”名称。
要解决您的问题,您只需要 Avahi。这会将您的 Ubuntu 机器名称公布给 Windows 批次。
machinename.local
得益于另一个名为 Bonjour 的 zeroconf(Avahi 也是)实现,由 Apple 创建(IIRC)。它是默认安装的。我不知道为什么 Avahi 不是,但考虑到它引起人们的困惑,它可能应该是。维基百科上有更多关于此的内容:http ://en.wikipedia.org/wiki/.local