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

May*_*hux 97 networking

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

c0r*_*0rp 70

您可以为此使用Nmap实用程序。Nmap 是一个免费的网络扫描仪实用程序。

试试吧:

sudo nmap -sn 192.168.1.0/24
Run Code Online (Sandbox Code Playgroud)

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

如何查找网络 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
Run Code Online (Sandbox Code Playgroud)

在第 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
Run Code Online (Sandbox Code Playgroud)

这是手册页nmap(1) 中的一小段引述:

-sn (No port scan)
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

  • 这需要进行调整,以便将“192.168.1.0/24”更改为用户的 IP 地址范围。 (4认同)
  • 您知道为什么需要 root 权限才能从网络中读取 MAC 地址吗? (2认同)

Oli*_*Oli 47

arp慢慢地向您返回活动 MAC 地址和 IP 的列表,或者它们的主机名(如果有的话)。如果你想让它运行得更快,你可以使用arp -nwhich 应该跳过 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
Run Code Online (Sandbox Code Playgroud)

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


编辑根据 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”不显示本地网络上的活动 MAC 地址列表。“arp”显示了与运行它的机器交互的机器对应的 MAC 地址列表。如果最近本地机器和网络上的另一台机器之间没有通信,那台机器将不会出现在“arp”列表中。 (11认同)
  • 我刚刚在我的网络上做了一个快速测试,arp 只显示了大约 25% 的现有设备。如果运行 arp 的计算机没有收到来自其他设备的数据包,它就不会出现在 arp 列表中。我有兴趣了解更多有关 nmap 未能在您的网络上检测到的设备的信息;有很多方法可以隐藏 nmap,但我发现默认的 nmap 扫描非常有效。也就是说,没有故障安全答案,因为如果设备不产生流量并且不响应请求,则它是不可见的——但大多数设备会响应某种类型的请求。 (5认同)
  • @Ruslan 那只是偏执我把它们排除在外……我敢肯定,一个人对它们做任何事情都相当困难,但你永远不知道谁在跟踪你。 (3认同)
  • @BYEAskUbuntu 如果你使用 MAC 转换器,你的 MAC 就是你设置的。对于所有网络用户来说,它的来源通常是未知的,所以不,它不能。 (2认同)

小智 42

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
Run Code Online (Sandbox Code Playgroud)

  • 如果你想指定网络接口,比如无线,那么使用这个命令`sudo arp-scan -l -I wlan0` (2认同)

小智 18

您可以使用arp-scan.

使用以下命令安装:

sudo apt-get install arp-scan
Run Code Online (Sandbox Code Playgroud)

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

sudo arp-scan --interface=eth0 --localnet
Run Code Online (Sandbox Code Playgroud)

输出将如下所示:

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
Run Code Online (Sandbox Code Playgroud)


kir*_*iri 9

图形用户界面

你可以试试avahi-discover安装 avahi-discover.

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

     sudo apt-get install avahi-discover
    
    Run Code Online (Sandbox Code Playgroud)
  2. 运行Avahi Zeroconf Browseravahi-discover从终端运行。

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

命令行

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

avahi-browse -a -t -d local
Run Code Online (Sandbox Code Playgroud)

它是默认安装的。

  • 就我而言,这不适用于网络上的每个设备。它非常整洁,但它不会显示没有 avahi/upnp 服务的愚蠢客户端。 (3认同)

小智 5

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

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

    for i in $(cat list-of-reachable-hosts)
    do 
        arping $i
    done
    
    Run Code Online (Sandbox Code Playgroud)
  3. 欺骗:查阅你本地交换机的arp-cache;这应该给你一个很好的概述......