如何查找远程计算机的MAC地址?


34

我知道自己局域网中主机的IP地址。使用它,如何找到其MAC地址(而无需物理访问它)?

Answers:


46

如果您使用的是Windows计算机,请打开ping目标计算机的命令框(Start ... Run ... cmd),以便与它建立联系,然后发出命令arp -a以查看本地ARP表,该列表将列出IP地址及其对应的MAC地址,例如

C:\Users\L3K> arp -a

Interface: 192.168.200.128 --- 0xb
  Internet Address      Physical Address      Type
  192.168.200.1         00-50-7f-c3-5c-88     dynamic
  192.168.200.2         00-50-7f-d1-e1-40     dynamic
  192.168.200.6         00-80-77-dd-a8-6b     dynamic

如果您使用的是基于Linux的系统,请安装该arp-scan实用程序,然后从命令行中请求扫描网络-在我的情况下:

sudo arp-scan 192.168.200.0/24

如果您使用的接口不是以太网,例如无线接口,则需要指定该接口,例如

sudo arp-scan -I wlan0 192.168.200.0/24

如果您不知道使用的是什么接口,只需使用下面的相应命令。

ifconfig  (For Debian based OS such as Ubuntu)
ip link   (For OS like Arch Linux)

14
仅当其他主机在同一LAN网段上时才能工作。
AnonymousLurker

@ Linker3000,ping之前有arp -a什么意义?
和平者

4
@Pacerier-arp命令显示地址解析协议缓存的内容,该缓存将IP地址映射到硬件(mac)地址。如果您尚未联系目标IP地址,则该地址不会在缓存中。Ping是联系它以将其添加到缓存的一种简单方法。您可以使用任何网络命令,只是ping是一个简单的命令。
凯文·琼斯

19

该命令arpingiputilslinux 上的软件包一起提供。指定要ping的IP地址,即使在LAN上的交换机和子网之间(至少在我们的LAN上也是如此),它会返回MAC地址。

# arping -c 1 -I eth0 10.100.10.11
ARPING 10.100.10.11 from 10.100.10.25 eth0
Unicast reply from 10.100.10.11 [00:22:68:88:F3:90]  0.594ms
Sent 1 probes (1 broadcast(s))
Received 1 response(s)

1
在Debian中,有2个软件包:arpingiputils-arping。该arping程序包对我iarping -c 1 -i eth0 10.100.10.11
有用

8

尝试

getmac /s hostname

要么:

getmac /s IP

您需要对计算机具有管理员权限才能执行此操作。


为什么不使用arp -a不需要管理员访问权限的工具呢?
和平者

2

如果您拥有一台管理型交换机,或者您的路由器允许您查看其ARP表,则可以从那里获取。

如果您拥有IP的计算机在线,则可以对其进行ping操作,并从本地ARP表中获取其MAC。

出于其他原因,请注意以下一般事项:由于在这种情况下将第3层协议用于寻址和传递,因此无法获得位于不同LAN上的机器的MAC地址。


真的没有给他任何有关“如何”执行此操作的指示。
GregD

2
在路由器上查看时,您只需转到Web界面并四处寻找即可。不能比这更加具体,因为每个路由器的Web管理员都有不同的布局和页面集。对我来说似乎是苛刻的-1,尤其是因为我提供的信息比MaQleod还要多。
imoatama 2011年

2

只需使用类似:

nmap -n -sP 192.168.146.0/24

在将参数调整为您的设置后,这将扫描您的整个子网,从而提供IP和MAC地址



1

如果您的计算机和目标计算机都在同一子网中,则可以对其进行ping操作,以使其IP⟷MAC关联通过地址解析协议(ARP)注册。

ping -c1 $IP
arp -n | grep $IP

例如,如果我想查找IP 10.1.135.150

# ping -c1 10.1.135.150
PING 10.1.135.150 (10.1.135.150) 56(84) bytes of data.
64 bytes from 10.1.135.150: icmp_seq=1 ttl=64 time=1.88 ms

--- 10.1.135.150 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 1.883/1.883/1.883/0.000 ms

然后查询ARP表

# arp -n | grep 10.1.135.150
10.1.135.150             ether   8c:ae:4c:f4:4d:e1   C                     eth0

因此10.1.135.150的MAC为 8c:ae:4c:f4:4d:e1


0

只要没有网关在计算机之间路由流量,任何嗅探器都会为您提供此信息。


感谢您的回答Ofir。作为子问题,如果有问题的主机宕机,有没有办法做到这一点?是的,我可以查询自己主机的ARP缓存,但是很遗憾,它目前不包含我感兴趣的IP。因此,我想知道是否有某种方法可以提取中间路由器的ARP缓存并在其中查找?
弗雷德里克(Frederick)2010年

0

您始终可以在路由器上查阅arp表(在某些情况下,路由器将arp和dhcp租用表结合在一起)。


正是我在寻找什么,但是哪些工具或命令将帮助我做到这一点?
弗雷德里克(Frederick)2010年

但是,请稍等,我在同一局域网中,因此不会有任何路由器吗?
弗雷德里克(Frederick)2010年

典型的局域网将至少有一个路由器。根据路由器的不同,您有不同的选择方式。您需要使用Web界面访问大多数家用路由器才能找到该信息,更复杂的路由器将使您可以通过telnet登录或通过控制台端口进行查询以获取该信息。
MaQleod

0

另一种方法是:

nbtstat -a 192.168.1.1

(替换192.168.1.1为所需的地址)


另外,如果getmac在非Windows计算机上使用,则会得到:

错误:RPC服务器不可用。

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.