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


82

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


6
重要的是要了解,一旦您经历了第3级网络层设备,将无法获得该设备后面的MAC和ip
Kiwy 2014年

为什么要放在!问号后面?这不是必需的,仅在问题被大喊或非常重要的情况下使用。
kiri 2014年

@ minerz029感谢您澄清
Maythux 2014年

1
sudo tail -f /var/log/messages,然后拔下并重新插入您要查找其MAC地址的设备,或者grep / read through消息以查找该设备。
IceArdor

Answers:


63

您可以为此使用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)

此选项告诉Nmap在发现主机后不要进行端口扫描,而仅打印出响应该扫描的可用主机。这通常称为“ ping扫描”,但您也可以请求运行traceroute和NSE主机脚本。

默认情况下,此步骤比列表扫描更具干扰性,通常可以用于相同目的。它允许对目标网络进行轻侦察,而不会引起太多关注。

与每个IP地址和主机名的列表扫描所提供的列表相比,知道多少台主机对攻击者更有价值。

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

默认情况下,完成的主机发现-sn包括ICMP回显请求,对端口443的TCP SYN,对端口80的TCP ACK和ICMP时间戳记请求。

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

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

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

在以前的Nmap版本中,-sn称为-sP


它不工作
Maythux

4
这将需要进行调整,以便192.168.1.0/24更改为用户的IP地址范围。
kiri 2014年

@ minerz029当然,我确实更改了IP
Maythux 2014年

我不知道这是不是原因,但是在Linux上,我nmap -sP 192.168.1.0/24用于ping扫描。
tiktak 2014年

2
您知道为什么需要root特权才能从网络读取MAC地址吗?
Michael Aquilina 2015年

45

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是一个很棒的工具(尤其是下一步可能需要进行端口扫描的工具),但是对于此问题来说仍然有点笨拙(有点慢)。而且不要叫我雪莉。

1
如果我使用mac changer更改了MAC ID,它可以显示原始内容吗?
rɑːdʒɑ

2
@BYEAskUbuntu(如果使用MAC转换器),则将MAC设置为MAC。对于所有网络用户来说,其来源通常是未知的,因此不可以。
Ruslan 2014年

3
@Ruslan那只是让我把它们给遮掩了。
奥利(Oli)

9
我对这个答案感到惊讶。“ arp”不显示本地网络上活动MAC地址的列表。“ arp”显示与正在与其运行的计算机进行交互的计算机相对应的MAC地址列表。如果最近在本地计算机和网络上的另一台计算机之间没有通信,则该计算机将不会显示在“ arp”列表中。
davidcl 2014年

5
我只是在网络上进行了快速测试,而arp仅显示了现有设备的25%。如果运行arp的计算机尚未从其他设备接收到数据包,则该数据包不会在arp列表中。我想了解更多有关nmap无法在您的网络上检测到的设备的信息;有一些方法可以对nmap进行隐藏,但是我发现默认的nmap扫描非常有效。就是说,没有故障保险的答案,因为如果设备不产生流量并且不响应请求,则它是不可见的-但是大多数设备将响应某种类型的请求。
davidcl 2014年

36

我用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

1
如果您想指定网络接口(例如无线),请使用此命令sudo arp-scan -l -I wlan0
HarlemSquirrel 2014年

是的,arp-scan确实是“最好的工具”。
mivk 2014年

这对我不起作用...设备由于某种原因没有响应。
安德鲁·瓦格纳

要使arp扫描正常工作,我必须brew install arp-scan在OSX El Capitan中进行。
jamescampbell'8

16

您可以使用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

1
这找不到没有IP的设备...
Andrew Wagner 2015年

9

图形用户界面

您可以尝试avahi-discover安装avahi-discover

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

    sudo apt-get install avahi-discover
    
  2. 运行的avahi零配置浏览器avahi-discover从终端。
  3. 您应该看到一个窗口,其中列出了本地网络上的设备。
    MAC地址将是方括号中的字符串。

命令行

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

avahi-browse -a -t -d local

默认情况下已安装。


1
这是否可以显示未运行任何类型服务的计算机的MAC地址?
伊利亚·卡根

3
就我而言,这不适用于网络上的所有设备。它非常整洁,但是如果没有avahi / upnp服务,它不会显示出愚蠢的客户。
奥利(Oli)

5
  1. 首先使用nmap -sn 1.2.3.4/24或扫描网络以查看哪些主机可访问/在线fping -g 1.2.3.4/24

  2. 然后使用来查询与IP地址相对应的MAC地址arping。前面的伪代码:

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



2

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

我编写了一个Shell脚本,该脚本arp使用awk语句来解析输出并生成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"

它有助于nmap首先在LAN上执行扫描,因此您在ARP表中具有条目。希望格式可以翻译。您可以将其简化为表格格式的文本。


2

经过一些工作和搜索后,我发现了以下命令:

nmap -sP -PE -PA21,23,80,3389 192.168.1.*

nmap: 网络探索工具和安全性/端口扫描程序

-sP(跳过端口扫描)。此选项告诉Nmap在发现主机后不要进行端口扫描,而仅打印出响应该扫描的可用主机。这通常称为“ ping扫描”,但您也可以请求运行traceroute和NSE主机脚本。默认情况下,此步骤比列表扫描更具干扰性,通常可以用于相同目的。它允许对目标网络进行轻侦察,而不会引起太多关注。与每个IP和主机名的列表扫描所提供的列表相比,知道多少台主机对攻击者更有价值。

-PE; -PP; -PM (ICMP Ping类型)。除了前面讨论过的异常的TCP,UDP和SCTP主机发现类型外,Nmap还可以发送由无处不在的ping程序发送的标准数据包。Nmap将ICMP类型8(回声请求)数据包发送到目标IP地址,期望从可用主机返回类型0(回声应答)。不幸的是,对于网络浏览器,许多主机和防火墙现在阻止了这些数据包,而不是响应RFC 1122 [2]要求。因此,针对Internet上未知目标的纯ICMP扫描很少具有足够的可靠性。但是对于监视内部网络的系统管理员来说,它们可以是一种实用且有效的方法。使用-PE选项启用此回显请求行为。

-A(激进扫描选项)。此选项启用其他高级和主动选项。

21,23,80,3389 搜索端口

192.168.1.* IP范围。用你的替换



0

您可以使用arp

这将向您显示MAC和IP。


这仅适用于已连接(例如通过ping)的那些设备。
彼得·莫滕森
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.