我有一个连接到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 …