为什么Linux机器不能在Windows机器上parsing本地名?

我有一个连接到D-Link DIR-825路由器的Windows和Linux机器的小型networking。

networking上的Windows机器可以通过名称到达所有其他机器,而Linux机器只能通过IP地址到达其他机器。

我可以在路由器Webpipe理界面的DHCP客户端状态列表中看到所有列出的名称和DHCP分配地址的机器。

为什么Linux机器不能通过名称find任何其他机器,而Windows没有findLinux机器的问题呢?

我不是networking专家,我也在研究这个主题的答案。 我目前的发现是:

  • Windows使用NetBIOS名称,而这种协议是一种广播协议,它允许它们在没有任何中央服务器的情况下find彼此。

  • 现代发行版的Linux机器本身使用一种称为Avahi的协议,它也是一种独立于服务器的广播协议。 本地networking机器有一个后缀.local所以你可以使用ping hostname.local从Linux到Linux ,或使用avahi-discover包查看它们。 Gnome中的一些应用程序使用avahi来列出networking中的机器(例如,远程桌面查看器)

  • 在Linux机器上安装SAMBA将为其分配一个NetBIOS名称(或者更为技术上讲,将使Linux机器以其NetBIOS名称(这是默认的主机名称)在广播请求中进行自我宣传),并允许Windows机器findLinux那些

  • 问题:虽然Linux Samba机器会回复NetBIOS协议请求, 但是像Ubuntu 这样的发行版默认设置不会使用NetBIOS作为parsing名称的方法,这就是为什么Linux机器无法“看到”彼此或Windows机器 。 为此,您需要编辑/etc/nsswitch.conf文件并将wins添加到此行中的列表中:

    hosts: files mdns4_minimal [NOTFOUND=return] dns wins mdns4

  • 可能需要安装winbind软件包才能正常工作。

  • 因此,对于可见性问题,您可以在所有Linux机器上安装Samba(还可以编辑/etc/nsswitch.conf来启用NetBIOS名称parsing),或者在Windows机器上安装Avahi支持。

  • 至于文件共享,Samba提供Linux机器与Windows的文件共享function。 无需为Linux机器编辑/etc/nsswitch.conf以在Nautilus的“networking”部分查看对方和Windows(反之亦然)的共享文件夹

我希望这有助于! :d

默认情况下,如果没有DNS服务器,Windows可以使用NetBIOS(Microsoft名称parsing协议)来发现其networking本地的其他Windows系统的名称。 如上所述,看起来你需要在Linux端设置SAMBA(或者至lesswinbind)。 这里有一套基本的说明 :

要从Linux计算机启用Windows netbios名称parsing,请确保安装了Samba(尽pipesmb服务不需要运行)。 Samba套件包含winbind,它可以解决Windows主机名称。 然后编辑/etc/nsswitch.conf并更改这一行:

hosts: files dns

对此:

hosts: files dns wins

然后通过ping LAN上的Windows机器的计算机名称进行testing:

$ ping windowsbox

顺便说一下,这与WINS直接无关。 WINS是一个NetBIOS服务器,通常在较大的networking中使用,以减less广播stream量,提供传统的集中式名称parsing平台,最终使不同networking上的系统能够了解彼此的NetBIOS名称到IP映射。

SAMBA的替代scheme是设置DNS服务器,并确保configuration了dynamicDNS更新,或者DHCP可以注册DNSlogging。

最有可能的是LLMNR 。

您可能只需要设置Avahi / mDNS分辨率。 它和Windows上的LLMNR类似。

尽pipe没有安装必要的软件,Linux可以parsing本地名称。

大多数Linux发行版都不会推荐关于内核之外的软件需求。Debian参考DNSMasq

apt-cache search dnsmasq …