在 Linux 中显示局域网上的计算机列表

在 Linux 中显示局域网上的计算机列表

我是一名 Web 开发人员,正在尝试更好地处理安全问题。我试图找出一种方法(在基于 Linux/Debian 的发行版上)来列出我的上网本所在的同一 LAN 上的所有计算机。我尝试了“arp -n”,但我觉得这不是一个完整的列表,因为我的 iPhone 和上网本在同一个 Wi-Fi 路由器上,而且没有出现。有没有更好的方法来获取共享同一网关的所有机器的完整列表?

答案1

得到nmap。它是《黑客帝国》中使用的 Trinity 程序,您可以进行扫描来查找连接到您所在的 LAN 的所有设备等等。

这里是參考指南。

答案2

我使用的就是 nmap,以及使用要扫描的网络 CIDR 块表示法的地址。首先,您需要安装 nmap,因为它可能未随您的发行版预装。在 Ubuntu 上:

sudo apt-get install nmap

接下来使用 ifconfig 找出你的网络地址:

ifconfig

我想要扫描的接口的 ifconfig 输出:

wlan1     Link encap:Ethernet  HWaddr 00:1f:3b:03:d2:bf  
          inet addr:192.168.1.104  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::21f:3bff:fe03:d2bf/64 Scope:Link
          ...

使用 inet addr 和 Mask 找出 CIDR 表示法中的网络地址,有关 CIDR 的更多信息这里。 地址是:

192.168.1.0/24

使用 -sP 参数运行 nmap,它只会扫描检查主机是否在线:

sudo nmap -sP 192.168.1.0/24

nmap 输出将会像这样:

Starting Nmap 5.21 ( http://nmap.org ) at 2014-12-09 10:52 EST
Nmap scan report for 192.168.1.1
Host is up (0.013s latency).
MAC Address: -MAC ADDRESS- (Cameo Communications)
...
Nmap done: 256 IP addresses (5 hosts up) scanned in 3.26 seconds

就是这样,如果你需要更多有关 nmap 的帮助,请参阅nmap 官方文档,或者运行:

nmap --help 

答案3

arp -n仅显示您的 LAN 上已与您的计算机通信过的计算机。您可以通过 ping 广播和所有主机多播地址来更好地填充该列表:

“全 1”(二进制)广播地址。请注意,大多数 IP 堆栈会将其转换为您所连接的所有子网的子网广播地址:

ping 255.255.255.255

当前子网的子网广播地址。假设您位于 192.168.1.0/24:

ping 192.168.1.255

“所有主机”多播地址。我非常喜欢这个地址,因为它更有可能找到为其他 IP 子网配置的主机,这些主机恰好与您连接到同一个以太网 LAN:

ping 224.0.0.1

请注意,此方法以及迄今为止我在其他答案中看到的其他方法仅查找当前网络上的 IP 可访问主机。这可能就是您需要关心的全部内容,但攻击者有可能在不通过 IP 可见的情况下窥探网络或对网络进行恶意攻击。

答案4

nmap 扫描

要扫描一系列 IP 地址的状态,这很简单:

sudo nmap -sn 192.168.1.2-20

在哪里:

         -sn: Ping Scan - disable port scan

笔记:

  • 在 Nmap 的早期版本中,-sn被称为-sP

我在 Mac OS X(基于 BSD)上执行了此操作。我不确定 Linux 版本是否有任何差异。

相关内容