![“.local” 起什么作用?](https://linux22.com/image/1074402/%E2%80%9C.local%E2%80%9D%20%E8%B5%B7%E4%BB%80%E4%B9%88%E4%BD%9C%E7%94%A8%EF%BC%9F.png)
我家里的网络上有几台 Ubuntu 机器,但 DNS 由 Windows 服务器 (2K) 提供。当我从另一台机器 ssh 到它们时,如果我以“machine”的身份 ssh 到它们,则无法连接,但如果我以“machine.local”的身份连接,则可以连接。
我也有类似的想法,我无法从 Windows 客户端(如 Putty)进行连接。
这是怎么回事? - 这显然是 Ubuntu 的事情。
答案1
默认情况下,Ubuntu 包含 avahi。这是 zeroconf 的一个实现,允许使用虚拟“.local”名称解析计算机主机名。每当您的计算机尝试连接到“hostname.local”时,avahi 都会执行本地网络广播,以查看是否有任何计算机具有该主机名。运行 avahi(或兼容程序)的其他计算机应该会做出响应。
如果你查看 /etc/nsswitch.conf,你会发现以下行:
hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4
mdns4_minimal 是使此重定向工作的配置设置。
您的问题实际上表明 avahi 正在成功运行,因为您说您可以使用“hostname.local”连接到您的 Ubuntu 计算机。但是,您没有明确说明(“当我从另一台计算机 ssh 到它们时...”)您是尝试从另一台 Ubuntu 计算机还是从另一台 Windows 计算机进行连接。如果不安装 Bonjour 等其他软件,Windows 计算机将无法解析 zeroconf 样式的“hostname.local”名称。
答案2
要解决您的问题,您只需要 Avahi。这会将您的 Ubuntu 机器名称公布给 Windows 批次。
sudo apt-get install avahi-daemon
machinename.local
得益于 zeroconf 的另一个实现(Avahi 也是),名为 Bonjour,由 Apple 创建(如果我没记错的话)。它是默认安装的。我不知道为什么 Avahi 不是,但考虑到它给人们带来的困惑,它应该是默认安装的。
维基百科上有更多相关内容:http://en.wikipedia.org/wiki/.local