it-swarm.cn

“ .local”有什么作用?

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

我认为类似地,我无法从Windows客户端(如PuTTY)连接。

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

26
Marc

默认情况下,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计算机进行连接,则无法明确说明(“当我从另一台ssh到它们时,...”)。如果不安装Bonjour之类的其他软件,Windows计算机将无法解析Zeroconf样式的“ hostname.local”名称。

32
user8979

要解决您的问题,您只需要Avahi。这会向Windows公告您的Ubuntu计算机名称。

Sudo apt-get install avahi-daemon

machinename.local的工作归功于Apple创建(IIRC)的Bonifour的零配置(Avahi也是)的另一种实现。默认情况下已安装。我不知道为什么Avahi也不是,但考虑到它引起人们的困惑,很可能会成为现实。

Wikipedia上还有更多相关信息: http://en.wikipedia.org/wiki/.local

13
Oli