在Linux中从IP地址解析MAC地址


39

我需要编写一个bash脚本,其中我必须创建一个文件,其中包含主机的IP地址以及它们与相应MAC地址的映射的详细信息。

当主机的IP地址可用时,是否可以找到任何(远程)主机的MAC地址?

Answers:


35

如果只想查找给定IP地址的MAC地址,则可以在arp对系统执行ping操作1次后使用该命令进行查找。

$ ping skinner -c 1
PING skinner.bubba.net (192.168.1.3) 56(84) bytes of data.
64 bytes from skinner.bubba.net (192.168.1.3): icmp_seq=1 ttl=64 time=3.09 ms

--- skinner.bubba.net ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 3.097/3.097/3.097/0.000 ms

现在在ARP表中查找:

$ arp -a
skinner.bubba.net (192.168.1.3) at 00:19:d1:e8:4c:95 [ether] on wlp3s0

ing

如果要扫描整个LAN的MAC地址,则可以使用命令行工具fing执行此操作。它通常没有安装,因此您必须去下载并手动安装。

$ sudo fing 10.9.8.0/24

    例子

参考文献


我知道这是个老答案,但是您对Fing的实施方式有何见解?我正在尝试了解网络的这一层及其监视工具。
akaphenom '16

1
@akaphenom如果您有新问题,请直截了当,评论并非旨在。
slm

8

您可以使用arp命令:

arp -an

但是您只能在LAN中使用此命令,如果您想找出任何远程主机的MAC地址,也许您必须使用某种工具来捕获数据包tcpdump并解析结果。


2
tcpdump(8)只会显示您的本地MAC(即最后一站路由器的MAC)。路由器剥离了输入数据包的MAC层标头,并将新的添加到输出数据包中。
vonbrand '16

5

这是我在Askubuntu中的问答

您可以使用以下命令

   sudo 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范围。用你的替换。


-sP用于“ scanPing”,它在从不显示nmap的版本中也是-sn。
meawoppl 2015年

4

Arping

arping -I <interface> -c 1 <host>

该命令应在响应中返回MAC地址。就像是,

$ arping -I eth0 -c1 192.168.1.2
ARPING 192.168.1.2 from 192.168.1.5 eth0
Unicast reply from 192.168.1.2 [08:01:27:38:EF:32]  0.746ms
Sent 1 probes (1 broadcast(s))
Received 1 response(s)

arpingiputils-arpingDebian上的软件包提供。


arping还需要告知带有该-I选项的使用哪个接口。
Stephen Kitt

您可以在第一次回复后使用arping -f退出。
瑞安·格里格斯
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.