如何在网络上通过MAC地址查找IP ?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在网络上通过MAC地址查找IP ?相关的知识,希望对你有一定的参考价值。

如题,已知一MAC地址,通过在因特网上另外一台电脑,已知要查找电脑的MAC,能不能够查找出其IP呢?

mac地址仅限局域网内使用,internet用的是网络协议ip地址,而且互联网允许存在mac地址相同而ip地址不同主机,只要他们不在同一个物理网段。

方法一:用ARP -A 查询
这种方法只能查到与本机通讯过(20分钟内)的主机MAC地址和IP地址。可在远程主机所属网段中的任一台主机上运行此命令,这样可查出IP欺骗类病毒的主机。

方法二:用专用软件查,如nbtscan
命令方式是:nbtscan -r 网络号/掩码位,这种方法可查询某网段的所有IP与MAC对应关系,但装有防火墙的主机则禁止查询。

方法三: 如果所连交换机有网管功能,可用ARP SHOW 命令显示交换机的arp缓存信息,这种方式基本可查询所有的IP 与MAC地址,但只有网管才有这个权限。

方法四:用sniffer类的嗅探软件抓包分析,packet中一般都含用IP地址与MAC地址。

方法五:用solarwinds类软件中的MAC ADDRESS DISCOVERY查询,但这个工具好象不能跨网段查询。
参考技术A 除非在同一局域网内,如果隔了路由器就查不到了,路由器会把2层信息终结掉 参考技术B 基本思路就是rarp 就是MAC地址反向解析。win下单纯用命令好象不行。但用抓包工具可以实现。本回答被提问者采纳

C/C++ Linux,如何在不使用 IP 的情况下在网络上查找邻居(仅限 MAC)

【中文标题】C/C++ Linux,如何在不使用 IP 的情况下在网络上查找邻居(仅限 MAC)【英文标题】:C/C++ Linux, How to find neighbors on a network Without Using IP (MAC Only) 【发布时间】:2014-01-13 16:35:22 【问题描述】:

在一个小型网络中,比如说 20 个节点或更少,我的程序在测试仪器上需要知道“谁在外面?”通过 MAC 而不是 IP。我将插入随机网络,并且需要能够做到这一点,而不必知道网络中的任何地址、MAC 或其他地址,并且知道我不能依赖 DHCP。 DHCP 服务器可能已关闭并且节点没有 IP 地址和/或我无法获得 IP 地址是完全合理的。说实话,我不需要IP,我们的测试协议是MAC层,不是IP。

那么,如何确定我的仪器邻居的 MAC 地址?这听起来很像 LLDP,但倒过来了,即“谁在外面”,而不是“我在这里,我可以做到……”。我必须假设没有分配给端点的 IP,所以没有 ARPing、没有 NMAP 等。

注意我要补充一下,这是有线网络。

【问题讨论】:

打开wireshark,抓包,查看所有源和目的mac地址。在C++中,以混杂模式打开网络接口,捕获所有数据包,并解析得到源和目标mac地址 还有网络拓扑? @Vardhan 可能只有一个其他节点(实际上很可能是这种情况)。我发送什么(广播?让其他 MAC 说出我可以捕获的内容?或者是否有一些 MAC 协议规定所有 MAC 时不时会说“你好”? 有广播 ping 等 .. 但有些操作系统可能会选择不响应广播 .. 因为这是一个安全问题.. 这里已经回答了这个问题:serverfault.com/questions/245136/… 【参考方案1】:

在一般情况下,没有 MAC 级别的协议可供您发送并保证网络上每台机器的响应(我假设您在这里使用以太网,因为我相信 WLAN 上的情况有所不同)。 IE 在 MAC 层没有广播(甚至是 IIRC 单播),主机可以保证响应。将 IP 放在上面,您可以进行 IP 广播并检查 ARP 缓存。

(在我看来)最好的方法是使用交换机/学习网桥在以太网上的工作方式,即在混杂模式下被动地监听数据包并记下它们的 MAC 地址。您不会发现完全静默的主机,但在它发送数据包之前也不会发现交换机。根据定义,无论如何都无法发现完全沉默的主机。

【讨论】:

+1 如果不幸的话,那真是天赐良机。你知道我可以复制并编译到测试仪器中的数据包嗅探器吗?在我的开发设置中,使用 wearshark 有点困难。太多的 MS Windows 和太多的虚拟机。 当然。使用 libpcap。如果这是一个好的答案,也许你想接受它:-) 我很擅长接受答案。我通常会等到第二天,这样我就可以给“夜间工作人员”一个回答的机会。

以上是关于如何在网络上通过MAC地址查找IP ?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过mac地址查询ip

查找连接到同一个 Wifi 网络的所有设备的 MAC 地址

思科交换机根据MAC IP地址查找对应端口

C/C++ Linux,如何在不使用 IP 的情况下在网络上查找邻居(仅限 MAC)

通过IP查找交换机端口(CISCO)

如何在 Android 上以编程方式从 Mac 地址获取 IP 地址?