![有没有办法获取 Linux 网络上的计算机列表?](https://linux22.com/image/500739/%E6%9C%89%E6%B2%A1%E6%9C%89%E5%8A%9E%E6%B3%95%E8%8E%B7%E5%8F%96%20Linux%20%E7%BD%91%E7%BB%9C%E4%B8%8A%E7%9A%84%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%88%97%E8%A1%A8%EF%BC%9F.png)
在 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-browse
或mdns-scan
列出所有正在avahi-daemon
运行的计算机(Avahi 是 Apple 的 Bonjour 多播 DNS 的开源实现)。