我正在寻找一些 Linux 代码来从以太网地址中找到 IP 地址。我想我必须做一些反向 ARP 技巧,但我没有找到任何例子......
3 回答
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 查找 IP 地址要困难得多。在协议方面,最接近的匹配是 RARP,但它几乎从未使用过,因此您不太可能得到响应。
您可以随时扫描您的本地子网,以确保在您的 arp 表中获得完整的视图。参见例如fping
一个有效的方法来做到这一点。请注意,主机实际上不需要响应相关 ping 来出现在 ARP 表中,因此即使在存在本地防火墙等情况下这也很有用。
看看 Thomas Habet 的Arping。我没有尝试过,但基本思想是使用 IP 标头中的广播目标 IP 地址将 ICMP Ping 网络数据包发送到相关 MAC 地址。只有具有指定 MAC 地址的主机才会回复,并且回复将(通常)包含其 IP 地址。它并不总是有效,但它可能对你来说已经足够了。有关限制,请参阅项目自述文件。