有没有办法获取 Linux 网络上的计算机列表?

有没有办法获取 Linux 网络上的计算机列表?

在 Windows 网络上,我习惯使用“查看工作组计算机”来浏览我的工作组。

现在我处于一个仅 Linux 的网络上。我现在可以使用 Samba 并执行相同的操作,但是有没有办法在不依赖 Microsoft Wins/浏览器协议的情况下实现相同的操作?

是否有任何 Linux 软件可用于维护计算机列表,即使它们位于不同的子网?

谢谢您的回答。

答案1

在 Linux 上进行网络映射的最佳方式是使用“nmap”,其字面意思是网络映射器。

您可以通过两种方式之一进行操作。第一种是 ping 扫描,它只会向 IP 发送 ping 并报告响应的 IP。例如:

msimmons@msimmons-laptop:~$ nmap -sP 192.168.1.1-254

Starting Nmap 4.53 ( http://insecure.org ) at 2009-12-12 07:52 EST   
Host Wireless_Broadband_Router.home (192.168.1.1) appears to be up.
Host 192.168.1.3 appears to be up.
Host 192.168.1.4 appears to be up.
Host msimmons-laptop.home (192.168.1.8) appears to be up.
Host 192.168.1.100 appears to be up.
Nmap done: 254 IP addresses (5 hosts up) scanned in 0.869 seconds

这种方法效果很好,但是很多机器都设置了防火墙来阻止传入的 ICMP 数据包,因此不会回复 ping 请求。

如果是全 Linux 网络,则可以扫描端口 22,即 ssh 端口。操作如下:

root@msimmons-laptop:~# nmap -sS -p 22 192.168.1.1-254 | grep -B3 open | grep ports

Interesting ports on 192.168.1.4:
Interesting ports on 192.168.1.5:
Interesting ports on msimmons-laptop.home (192.168.1.8):

您可能注意到,我已经通过 grep 解析了几次 nmap 输出。默认情况下,输出是详细的,并且 nmap 会报告它找到的每个主机,无论端口是否打开。由于我只关心具有该开放端口的主机,因此只有当结果是端口打开时,我才会 grep 出报告 IP 的行。

另外,我执行了“syn”扫描,它只启动了组成TCP 握手协议。这意味着它能够识别开放、关闭和过滤的端口。它还需要 root 权限来创建执行此类扫描所需的原始套接字。

完成此操作后,转到物理开关并检查灯。如果亮起的灯比响应的主机多,请按照电缆进行调查。

答案2

您可以使用avahi-browsemdns-scan列出所有正在avahi-daemon运行的计算机(Avahi 是 Apple 的 Bonjour 多播 DNS 的开源实现)。

相关内容