我刚刚进入 Ubuntu 世界进行管理。我发现了类似的线程,只是,我可以 ping 我自己主机名和 IP 地址,我的 Windows 可以 ping 我的 Linux 主机名,但 Ubuntu 无法 ping Windows 主机名。
问题:
- 我有 4 台 Windows 电脑和 1 台 Ubuntu 电脑
- 我的 Windows 计算机可以通过主机名和 IP 地址 ping Ubuntu 计算机。此外,Net View(cmd 提示符)显示 Ubuntu 计算机的主机名。
- Ubuntu 计算机只能通过 IP 地址进行 Ping,而不能通过主机名进行 Ping。我也安装了 Samba。
- Ubuntu 计算机可以通过 IP 地址和主机名 ping 自己
- 我可以使用 arp 命令并将显示网络上所有计算机的 IP,但仅通过 IP 地址。
为什么我只能通过 IP 地址 ping 通 Windows 计算机,而不能通过主机名 ping 通?但是 Ubuntu 可以通过 IP 地址和主机名 ping 通自己,而 Windows 计算机也可以通过主机名 ping 通 Ubuntu?
答案1
这里描述的问题可能根本与 DNS 无关。
您必须知道,Windows 可以通过标准 DNS 以外的其他机制将 Windows 主机名解析为其 IP:NetBIOS 查找、WINS……
正如您所说,您的 Ubuntu 上安装了 Samba,这可能是正在发生的事情。在您的所有 Windows 机器上,都可以开箱即用地将 Windows 名称解析为其 IP 地址。由于 Samba 安装在 Ubunut 上,对于您的 Windows PC,它们会将 Ubuntu PC 视为 Windows PC,并且可以进行相同的解析。
您说您net view
在 Windows 上运行,并且您看到了您的 Ubuntu PC,所以 NetBIOS 名称已经在您的网络上发布,所以它可以在 Windows 上运行。
要在 Ubuntu 上实现与 Windows 相同的行为,您必须安装和配置其他软件。您需要添加一个查找库,以便 Ubuntu 将 NetBIOS 名称转换为 IP。此库包含在库nss-winbind包裹。
与任何其他 Ubuntu 软件包一样,您可以通过执行以下操作来安装它sudo apt-get install libnss-winbind
。该库可能已安装,您可以通过执行以下操作来检查它是否存在dpkg -l|grep libnss-winbind
。
安装库后,您必须在文件中启用它/etc/nsswitch.conf
。此文件是 NSS 的配置文件(名称服务交换机),它定义了 Linux 能够从哪些源解析主机名、用户名、组名等。
在此文件中,您已经有一行以 开头的行hosts:
,可能看起来像这样
hosts: files dns
这会告诉您的系统首先查看文件/etc/hosts
,然后查看配置的 DNS 来解析主机名。
您必须按如下方式进行修改:
hosts: files dns wins
注意单词的顺序文件,域名系统和胜利很重要。首先,系统将检查本地文件以进行解析,然后询问 DNS 服务器,最后,如果尚未找到,将执行 NetBIOS 查找。
更新后,为了正常运行,您还需要温宾服务正在运行。包含它的包是库nss-winbind,所以它已经沿着它安装了。
执行service winbind start
以激活它。
答案2
在下列情况下,可能会发生主机名到 IP 的转换:
-您在 /etc/hosts 文件中声明它们(不推荐)
-您从 DNS 服务器获取它。
我想说您的问题可能是您的网络接口配置没有 DNS 服务器或使用的不是 Windows 机器使用的 DNS 服务器。如果它们使用 DHCP 接口配置,则通常会包含 DNS 配置,如果您的网络上有 Windows 域服务器,则它们很可能将其用作主 DNS。
在命令行中尝试“nslookup some_machine_name”以查看会发生什么。它会告诉您正在使用哪个服务器(如果有)。
高血压