为什么 Windows 机器可以解析本地名称而 Linux 不能?

Per*_*lmi 22 dhcp linux windows

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

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

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

为什么 Linux 机器不能按名称找到任何其他机器,而 Windows 找到 Linux 机器没有问题?

Mes*_*ion 39

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

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

  • 现代发行版中的 Linux 机器本身使用一种称为Avahi的协议,它也是一种独立于服务器的广播协议。本地网络的机器有一个后缀.local所以你可以用 ping 从 Linux 到 Linuxping hostname.local,或者用avahi-discoverpackage 来查看它们。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 提供了 Linux 机器与 Windows 的文件共享功能。无需为 Linux 机器编辑 /etc/nsswitch.conf 即可在 Nautilus 的“网络”部分中查看彼此和 Windows(反之亦然)的共享文件夹

我希望这有帮助!:D

  • 对于 `nsswitch.cong` 的事情:如果 `ping HOSTNAME` 给你一个系统错误,那就是需要 libnss-winbind 包的信号。 (2认同)

Eri*_*ger 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局域网内Windows机器的计算机名进行测试:

$ ping windowsbox

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

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


joe*_*rty 2

最有可能的是LLMNR

  • 虽然这从理论上可以回答这个问题,但[最好](​​http://meta.stackexchange.com/q/8259)在此处包含答案的基本部分,并提供参考链接。 (5认同)