如何从远程主机的以太网地址获取IP地址?

问题描述:

我正在寻找一些Linux代码来查找以太网地址的IP地址。我想我必须做一些反ARP欺骗,但我没有找到任何例子...如何从远程主机的以太网地址获取IP地址?

+0

你的意思是你想要一个来自MAC的IP吗? – pablochan

+0

@Fred:当你说“Linux代码”时,你是指编程语言中的代码吗?什么语言? –

+0

以太网地址是一个MAC地址,所以是的 - 你需要使用ARP/RARP来转换MAC和IP地址。 –

http://compnetworking.about.com/od/networkprotocolsip/f/convertipmacadd.htm

尝试发送一个IP广播(例如ping 192.168.1.255如果你的子网是192.168.1.0/24),以总理的ARP缓存,其次是arp -a吐一切。

对于已与之通信的计算机,您可以查看其arp条目。例如,这在/proc/net/arp中以文本格式提供。找到一个你知道但没有与之通信的MAC地址是非常困难的。最接近的匹配,协议明智的,将是RARP,但很少使用,所以你不可能得到回应。

您可以随时扫描您的本地子网,以确保您在arp表中获得完整视图。例如,请参阅fping以了解执行此操作的有效方法。请注意,主机实际上并不需要响应有问题的ping出现在ARP表中,所以即使在本地防火墙等情况下,此功能也很有用。

+0

@calmh好,所以没有其他的办法。使用ping或fping发送ICMP数据包还是使用类似arping的东西更好? – Fred

+0

Arping会更有效率,因为它避免了ICMP步骤对于您的目的不必要的步骤。但总的来说,fping可能会更快,因为它并行化更多,并且实际上是为了快速扫描子网而制作的。 最好的可能是自己快速发送arp问题,比如arping。使一个线程尽可能快地发送请求(或者具有合理的速率限制),另一个线程监听传入的响应。这样你几秒钟就可以获得/ 24子网的完整图像。 –