列出我的本地网络 (LAN) 中的所有 MAC 地址及其关联的 IP 地址

列出我的本地网络 (LAN) 中的所有 MAC 地址及其关联的 IP 地址

我如何列出所有MAC 地址及其相关IP 地址连接到我的本地网络 (LAN) 的机器?

答案1

您可以使用网络地图实用程序。Nmap 是一款免费的网络扫描实用程序。

尝试一下:

sudo nmap -sn 192.168.1.0/24

请替换您的网络标识符和子网掩码。

如何查找网络 ID 和子网掩码

使用命令ip a

bash~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host valid_lft forever preferred_lft forever
2: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether c4:85:08:94:ee:9a brd ff:ff:ff:ff:ff:ff
    inet 192.168.3.66/24 brd 192.168.3.255 scope global wlan0
    inet6 fe80::c685:8ff:fe94:ee9a/64 scope link valid_lft forever preferred_lft forever

在第 2 点,我有wlan0设备。它显示inet 192.168.3.66/24 brd 192.168.3.255 scope global wlan0,IP 地址:192.168.3.66,子网掩码:24。网络 ID 是192.168.3.0,只需将最后一个数字替换为 0 即可。

或者如man nmap所说:

sudo nmap -sn 192.168.1.0/24

以下是手册页中的一小段引文,nmap(1)

-sn (No port scan)

此选项告诉 Nmap 在发现主机后不要进行端口扫描,而只打印出响应扫描的可用主机。这通常称为“ping 扫描”,但您也可以请求运行 traceroute 和 NSE 主机脚本。默认情况下,这比列表扫描更具侵入性,并且通常可用于相同目的。它允许对目标网络进行轻度侦察而不会引起太多注意。知道有多少主机处于启动状态对攻击者来说比通过列表扫描每个 IP 地址和主机名提供的列表更有价值。

系统管理员也经常发现此选项很有价值。它可以轻松用于计算网络上的可用机器或监控服务器可用性。这通常称为 ping 扫描,比 ping 广播地址更可靠,因为许多主机不回复广播查询。

默认主机发现完成-sn默认情况下,由 ICMP 回显请求、TCP SYN 到端口 443、TCP ACK 到端口 80 和 ICMP 时间戳请求组成。当由非特权用户执行时,仅发送 SYN 数据包(使用connect调用)到目标上的端口 80 和 443。当特权用户尝试扫描本地以太网上的目标时,除非--send-ip已指定。-sn选项可以与任何发现探针类型结合使用(-P*选项,不包括-Pn) 以获得更大的灵活性。如果使用任何这些探测类型和端口号选项,则默认探测将被覆盖。当运行 Nmap 的源主机和目标网络之间有严格的防火墙时,建议使用这些高级技术。否则,当防火墙丢弃探测或其响应时,可能会错过主机。

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

答案2

arp将要慢慢地返回活动 MAC 地址和 IP 列表或它们的主机名(如果有)。如果您希望它运行得更快,您可以使用arp -n它来跳过 DNS 查找。如果您需要将其解析为某些内容,arp -an则会跳过固定宽度的列。

$ arp
Address                  HWtype  HWaddress           Flags Mask            Iface
10.10.0.11               ether   00:04:ff:ff:ff:d0   C                     eth0
10.10.0.16               ether   00:04:ff:ff:ff:a6   C                     eth0
raspbmc.local            ether   00:1f:ff:ff:ff:9c   C                     eth0
10.10.0.19               ether   00:04:ff:ff:ff:c9   C                     eth0
10.10.0.12               ether   bc:f5:ff:ff:ff:93   C                     eth0
10.10.0.17               ether   00:04:ff:ff:ff:57   C                     eth0
10.10.0.1                ether   20:4e:ff:ff:ff:30   C                     eth0
HPF2257E.local           ether   a0:b3:ff:ff:ff:7e   C                     eth0
10.10.0.15               ether   00:04:ff:ff:ff:b9   C                     eth0
tim                      ether   00:22:ff:ff:ff:af   C                     eth0
10.10.0.13               ether   60:be:ff:ff:ff:e0   C                     eth0

否则,您的路由器应该能够让您了解活动设备(大多数都可以)。


编辑根据 davidcl 的评论,这个答案并不像我最初希望的那样完美。

arp依赖于某种先前的联系才能工作。然而,在我看来,现代设备在广播级别上都非常健谈(你真的应该看看 wireshark — 这是一种教育),以至于设备不太可能在没有至少回复广播的情况下出现在网络上。(为确保万无一失,你可以先使用 10.10.0.255 ping 网络上的所有设备,然后你可能会得到 90% 以上的设备。)

为了让您了解我的意思,上面的 10.10.0.16 是我们的 PVR。我的 PC 和 PVR 之间没有直接交互,并且 PVR 上没有运行任何服务(也没有 UPNP/DLNA)。

只是为了快速地讨论一下论点……

  • 但是我的网络中的黑客怎么办?!1
    它们还可以阻止 ICMP ping。它们可以阻止对每种扫描类型的所有响应。
  • 哦,但肯定nmap仍然是最好的解决方案
    在这里运行时,它仍然漏掉了四个设备。四个在网络上处于活动状态的设备。要么它们没有响应 ping,要么 nmap 没有等待足够长的时间让它们响应……我不知道。nmap是一个很棒的工具(特别是对于您可能想要接下来执行的端口扫描),但对于这个问题来说它仍然有点笨拙(而且有点慢)。别叫我雪莉。

答案3

我用arp-scan它来做这个:

$ sudo arp-scan -l
Interface: eth0, datalink type: EN10MB (Ethernet)
Starting arp-scan 1.8.1 with 256 hosts (http://www.nta-monitor.com/tools/arp-scan/)
192.168.2.1     ec:1a:59:61:07:b2       (Unknown)
192.168.2.50    90:59:af:3d:6d:bc       (Unknown)
192.168.2.51    3c:97:0e:48:22:12       (Unknown)
192.168.2.52    00:18:31:87:8f:b0       Texas Instruments

4 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.8.1: 256 hosts scanned in 1.282 seconds (199.69 hosts/sec). 4 responded

答案4

图形用户界面

你可以试试avahi-发现安装 avahi-discover

  1. 使用此命令(或单击上面的链接)安装它:

     sudo apt-get install avahi-discover
    
  2. 跑步Avahi Zeroconf 浏览器avahi-discover从终端。

  3. 您应该会看到一个窗口,其中列出了本地网络上的设备。MAC
    地址将是方括号中的字符串。

命令行

您可以在终端中使用此命令:

avahi-browse -a -t -d local

它是默认安装的。

相关内容