【问题标题】:ARP packet using target MAC使用目标 MAC 的 ARP 数据包
【发布时间】:2013-01-26 12:05:50
【问题描述】:

我向某些 IP 地址发送 ARP 请求,但如您所知,主机并不总是具有相同的 IP 地址。我想首先发送 ARP 请求并保存回复的主机的 MAC 地址,然后发送 arp 包MAC地址,不是IP。我设法向所有主机发送ARP数据包并保存回复的主机的MAC地址,但我不知道如何使用目标MAC地址而不是目标IP地址发送ARP数据包.你有什么建议吗?如果你想放一些代码告诉我

【问题讨论】:

  • ARP 的全部意义在于它找出一个你不知道的基于你的 IP 的 MAC 地址。
  • 我知道,但我需要使用 ARP 包持续监控主机,有时主机没有相同的 IP,所以我问是否有办法使用 MAC 地址发送数据包
  • 我建议arpwatch,它解决了这个问题,虽然是被动的,而不是主动的。 ARP 仅在您知道 IP 时起作用,当查询的 IP 地址不是自己的 IP 地址时,客户端将忽略 ARP 请求。 (您要查找的是 RARP 的变体,但 RARP 需要 RARP 服务器,因此它也不起作用。)

标签: c ip arp


【解决方案1】:

我认为你在混淆一些东西。 ARP 在 OSI 第 3 层上工作,MAC 地址与 OSI 第 2 层上的以太网相关。要在 OSI 第 3 层上发送包(如 IP),您必须知道以太网的正确 MAC 地址。因此,您向所有站点发出广播(ARP 请求),您将得到一个带有正确 MAC 地址的答案(每个 usiccast)。比您可以发送带有该 MAC 地址的 IP 包。

【讨论】:

  • 我想要类似 Inverse Arp 的东西
  • @EmilGrigore 抱歉,我错过了您的评论,您需要什么?也许命令 arp -a 会帮助你。
  • @Flexo:RARP 不是逆向 ARP,InARP 是逆向 ARP,尽管它几乎只在 ATM 上使用。
【解决方案2】:

直接通过 ARP 通信很困难,因为没有用于发送 ARP 消息的简单 API。在 Linux 上,您必须使用原始套接字(请参阅 man 7 raw)并自己实现 ARP 协议。

【讨论】:

    【解决方案3】:

    ARP 主要用于将 IP 地址转换为 MAC 地址,而不是相反。尽管存在逆向 ARP 规范(将 MAC 地址转换为 IP 地址),但默认情况下,Linux、FreeBSD 或 Windows 机器都不会支持它。

    如果您尝试跟踪经常更改 IP 地址的机器并且您拥有对其的管理访问权限,则可以查看 mDNS(适用于 Linux 或 FreeBSD)或适用于 Windows 的 LLMNR。这两种协议都允许您通过询问主机名来查询本地链接网络上的机器。通过链接本地版本的 DNS 解析 IP 地址,从 IP 地址解析 MAC 地址,然后进行通信。

    【讨论】:

      【解决方案4】:

      我正确理解了您的问题,您需要一个简单的解决方案,通过它您希望将 ARP 消息发送到特定主机而不是 ARP 请求广播。

      AFAIK,有一个名为“arping”的工具可以做到这一点,但它有两个版本 1. arping(iputils 库的一部分) 2. Thomas Habets 的 arping(这允许您将 APR 消息直接发送到 dest.MAK 地址)

      默认情况下,大多数 Linux 都有 arping 工具(不是 Thomas Habets 的 arping),但您可以从 Internet 获取 Thomas Habets 的 arping 并使用它,唯一的问题是在系统上同时使用两种 arping 实现可能会引入冲突。

      所以要让它正常工作,前一个必须删除,NetworkManager 也将被删除,因为它需要 iputils arping。

      希望对你有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-03-14
        • 2012-08-07
        • 2012-12-16
        • 1970-01-01
        • 1970-01-01
        • 2011-11-15
        • 1970-01-01
        相关资源
        最近更新 更多