“.local”有什么作用?

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

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

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

默认情况下,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计算机。 但是,如果您尝试从另一台Ubuntu计算机或另一台Windows计算机进行连接,则表示不清楚(“当我从另一个站点向他们发送时,…”)。 如果不安装Bonjour等其他软件,Windows计算机无法解析zeroconf样式的“hostname.local”名称。

要解决您的问题,您只需要Avahi。 这会将您的Ubuntu计算机名称发布到Windows批次。

 sudo apt-get install avahi-daemon 

machinename.local工作得益于zeroconf的另一个实现(其中也是Avahi)称为Bonjour,由Apple创建(IIRC)。 它默认安装。 我不知道为什么Avahi也不是,但鉴于它引起了人们的困惑,它可能是应该的。

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