为什么Linux无法解析Windows机器的本地名称?


18

我有一个小型网络,其中Windows和Linux计算机连接到D-Link DIR-825路由器。

网络上的Windows计算机可以按名称访问所有其他计算机,而Linux计算机只能通过IP地址访问其他计算机。

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

为什么Windows找不到Linux机器时,Linux机器为什么不能按名称找到其他任何机器?


2
您的姓名解析如何完成?DNS?您是否配置了搜索后缀?
Shane Madden

所有计算机都使用DHCP,并连接到D-Link路由器上,它们似乎在其中进行注册,这对于Windows查找所有计算机而言可能已经足够。但是Linux机器是否真的需要路由器以外的本地DNS服务器?
Per Salmi 2012年

不确定该特定路由器,但大多数消费者路由器不会将DHCP客户端集成到其内部DNS服务中。乔的答案很可能是您的罪魁祸首。
Shane Madden

然后,Linux机器会响应LLMNR消息,但不自己使用它来查找其他机器吗?
Per Salmi 2012年

Answers:


32

我不是网络专家,我也在研究很多有关此主题的答案。我目前的发现是:

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

  • 现代发行版中的Linux机器本机使用称为Avahi的协议,它也是与服务器无关的广播协议。本地计算机的后缀为.local因此您可以使用ping从Linux到Linuxping hostname.local,也可以通过avahi-discover软件包查看它们。Gnome中的某些应用使用avahi列出网络中的计算机(例如,远程桌面查看器)

  • 在Linux机器上安装SAMBA将为其分配一个NetBIOS名称(或更确切地说,将使Linux机器在其广播请求中使用其NetBIOS名称(默认情况下为其主机名)来宣传自己),并允许Windows机器查找Linux一个

  • 陷阱:尽管具有Samba的Linux计算机将响应NetBIOS协议请求,但在发行版(如Ubuntu)中使用默认设置,它不会使用NetBIOS作为解析名称的方法,这就是Linux计算机无法相互“看到”或Windows的原因。机器。为此,您需要编辑/etc/nsswitch.conf文件并添加wins到此行的列表中:

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

  • 可能需要安装winbind(如果没有自动安装,则libnss-winbind)软件包才能使上述程序正常工作。

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

  • 至于文件共享,Samba在Windows中提供了Linux机器的文件共享功能。无需在Linux机器上编辑/etc/nsswitch.conf即可在Nautilus的“网络”部分中查看彼此和Windows的共享文件夹(反之亦然)

希望对您有所帮助!:D


2
原因nsswitch.cong:如果ping HOSTNAME给您系统错误,则表明需要libnss-winbind软件包。
迈克尔·斯托姆

18

默认情况下,在没有DNS服务器的情况下,Windows可以使用NetBIOS(Microsoft名称解析协议)来发现其网络本地的其他Windows系统的名称。如本答案所述,您似乎需要在Linux端设置SAMBA(或至少是winbind)。这是一组基本说明

要从Linux计算机启用Windows netbios名称解析,请确保已安装Samba(尽管smb服务不需要运行)。Samba套件包括winbind,它可以解析Windows主机名。然后编辑/etc/nsswitch.conf并更改此行:

hosts: files dns

对此:

hosts: files dns wins

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

$ ping windowsbox

顺便说一句,这与WINS直接无关。WINS是一台NetBIOS服务器,通常用于较大的网络中,以减少广播流量,提供传统的集中式名称解析平台,并最终使不同网络上的系统能够知道彼此的NetBIOS名称到IP映射。

SAMBA的替代方法是设置DNS服务器,并确保配置了动态DNS更新,或者确保DHCP可以注册DNS记录。


3

最有可能是LLMNR


1
那么,这将使Windows计算机使用路由器DHCP注册信息找到Linux机器吗?但是Linux不支持使用路由器注册名称来查找内容吗?
Per Salmi 2012年

3
虽然从理论上讲这可以回答问题,但最好在此处包括答案的基本部分,并提供链接以供参考。
马克·亨德森

看起来LLMNR不能解释Windows为什么可以找到Linux机器的原因,而不能相反。如果Linux不使用LLMNR,它将导致Windows找到Windows,而不是Linux?
Per Salmi 2012年

2

您可能只需要设置Avahi / mDNS解析。它的确与Windows上的LLMNR相同。


0

Linux可以解析本地名称,尽管默认情况下未安装必需的软件...

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

apt-cache搜索dnsmasq ...

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.