当前位置: 首页>>技术教程>>正文


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

,

问题描述

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

最佳解决方法

您可以使用Nmap实用程序。 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即可。

或者像nmap那样说:

sudo nmap -sn 192.168.1.0/24

这里是手册页nmap(1)的一个小引用:

-sn (No port scan) 

This option tells Nmap not to do a port scan after host discovery, and only print out the available hosts that responded to the scan. This is often known as a “ping scan”, but you can also request that traceroute and NSE host scripts be run.

这是默认情况下比列表扫描更加侵入的一个步骤,并且通常可以用于相同的目的。它可以轻松侦察目标网络,而不会引起太多注意。

知道有多少主机对攻击者来说比列表扫描每个单一IP地址和主机名所提供的列表更有价值。

Systems administrators often find this option valuable as well. It can easily be used to count available machines on a network or monitor server availability. This is often called a ping sweep, and is more reliable than pinging the broadcast address because many hosts do not reply to broadcast queries.

The default host discovery done with -sn consists of an ICMP echo request, TCP SYN to port 443, TCP ACK to port 80, and an ICMP timestamp request by default.

当由非特权用户执行时,仅向目标上的端口80和443发送SYN数据包(使用connect调用)。

当特权用户尝试扫描本地以太网网络上的目标时,除非指定了--send-ip,否则将使用ARP请求。 -sn选件可以与任何发现探头类型(-P*选件,不包括-Pn)结合使用,以获得更大的灵活性。

如果使用这些探测器类型和端口号选项中的任何一个,则覆盖默认探测器。如果运行Nmap的源主机和目标网络之间存在严格的防火墙,则建议使用这些高级技术。否则,当防火墙丢弃探测器或其响应时,可能会丢失主机。

In previous releases of Nmap, -sn was known as -sP.

次佳解决方法

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

否则,你的路由器应该能够让你了解有源设备(大部分都是这样)。


编辑Per 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是一个很棒的工具(特别是对于你可能要做的下一步的端口扫描),但对于这个问题它仍然有点笨拙(而且有点慢)。别叫我雪莉。

第三种解决方法

我为此使用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

第四种方法

您可以使用arp-scan

使用此命令安装:

sudo apt-get install arp-scan

要列出所有IP地址和关联的MAC地址,请使用:

sudo arp-scan --interface=eth0 --localnet

输出将如下所示:

Interface: eth0, datalink type: EN10MB (Ethernet)
Starting arp-scan 1.8.1 with 16777216 hosts (http://www.nta-monitor.com/tools/arp-scan/)
192.168.1.3 38:60:77:29:31:36   (Unknown)
192.168.1.8 4c:72:b9:7c:bb:7e   (Unknown)
192.168.1.110   00:15:17:5f:d2:80   Intel Corporate
192.168.1.111   00:ff:88:5f:fd:f0   (Unknown)
192.168.1.153   00:15:17:5f:d2:82   Intel Corporate
192.168.1.180   52:54:00:70:04:02   QEMU
192.168.1.199   52:54:00:fe:7f:78   QEMU

第五种方法

GUI

你可以试试avahi-discover。

networking,ubuntu

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

    sudo apt-get install avahi-discover
    
  2. 从终端运行Avahi Zeroconf浏览器或avahi-discover

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

命令行

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

avahi-browse -a -t -d local

它是默认安装的。

第六种方法

  1. 首先使用nmap -sn 1.2.3.4/24fping -g 1.2.3.4/24扫描网络以查看哪些主机可到达/联机

  2. 然后使用arping查询与IP地址对应的MAC地址。 Pseudo-code提前:

    for i in $(cat list-of-reachable-hosts)
    do 
        arping $i
    done
    
  3. Cheatery:请咨询本地交换机的arp-cache;这应该给你一个很好的概述…

第七种方法

如果支持NetBIOS protocol,我宁愿使用

nbtscan 192.168.1.1-192.168.1.255

第八种方法

我对这篇文章很感兴趣。我有这个需要。

我编写了一个shell脚本,使用awk语句分析arp输出并生成HTML输出。如果您执行该脚本并将输出重定向至HTML文件,则剩下的HTML文件将显示IP,完整的MAC地址以及指向IEEE OUI查找页面的链接。这有助于通过NIC制造商确定客户端。

printf "<html>\n<title>LAN IPs and their MACs</title>\n<body>\n"
arp -a | awk '{print $2,$4}' | awk -F'[().: ]' '{print $2"."$3"."$4"."$5,$6,$7":"$8":"$9":"$10":"$11":"$12,"<a href=\"http://standards.ieee.org/cgi-bin/ouisearch?"$7$8$9"\">IEEE OUI Lookup "$7"-"$8"-"$9"</a><br>"}'
printf "\n</body>\n</html>\n"

它有助于首先在您的LAN上执行nmap扫描,以便在ARP表中有条目。希望格式翻译。你可以修改它以使表格格式的文本。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/1013.html,未经允许,请勿转载。