我有一个小型网络,其中Windows和Linux计算机连接到D-Link DIR-825路由器。
网络上的Windows计算机可以按名称访问所有其他计算机,而Linux计算机只能通过IP地址访问其他计算机。
我可以在路由器Web管理员界面的DHCP客户端状态列表中看到列出所有带有名称及其DHCP分配地址的机器。
为什么Windows找不到Linux机器时,Linux机器为什么不能按名称找到其他任何机器?
我有一个小型网络,其中Windows和Linux计算机连接到D-Link DIR-825路由器。
网络上的Windows计算机可以按名称访问所有其他计算机,而Linux计算机只能通过IP地址访问其他计算机。
我可以在路由器Web管理员界面的DHCP客户端状态列表中看到列出所有带有名称及其DHCP分配地址的机器。
为什么Windows找不到Linux机器时,Linux机器为什么不能按名称找到其他任何机器?
Answers:
我不是网络专家,我也在研究很多有关此主题的答案。我目前的发现是:
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
nsswitch.cong
:如果ping HOSTNAME
给您系统错误,则表明需要libnss-winbind软件包。
默认情况下,在没有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记录。
最有可能是LLMNR。