使用任意源MAC发送ARP回复

时间:2012-09-03 08:25:29

标签: c networking arp

这是我之前提问的后续问题:ARP reply packet does not update ARP cache on Ubuntu。事实证明,我的问题是我使用任意MAC地址作为我的源MAC(即我的网络中不存在的MAC,例如aa:bb:cc:dd:ee:ff)。只要我的源MAC与我的NIC的MAC匹配,我就可以发送ARP回复来中毒我的缓存没有问题。我试图手动设置我的NIC有一个任意的MAC地址,然后使用它作为我的ARP数据包的源MAC发送ARP回复 - 也工作。

我想知道是否有人知道这个的内部运作方式。是否有某种检查可以防止发送源MAC不匹配的数据包?它是以太网帧的源MAC与ARP数据包的源MAC之间的检查吗?为了我正在运行的实验,有没有办法绕过这个限制?

JY

2 个答案:

答案 0 :(得分:0)

  

可以使ARP更有效地进行各种优化。   首先,一旦机器运行ARP,它就会缓存结果   它需要很快联系同一台机器。下一次会   找到它自己的缓存映射,从而消除了对a的需求   第二次广播。在许多情况下,主机2(接收器)将需要发送   回复一个回复,强制它也运行ARP来确定发送者的回复   以太网地址。拥有发件人可以避免这种ARP广播   包括ARP数据包中的IP到以太网映射。

引自Tanenbaum的计算机网络,第五版p486-487

所以看起来您的接收器无法解析发送方的MAC。 Tanenbaum向您提供了一个解决方案,以避免这种失败。

答案 1 :(得分:0)

  

是否有某种检查可以防止数据包不匹配   来源MAC被发送?它是源MAC之间的检查   以太网帧与ARP数据包的源MAC相比?

你提到Ubuntu。在Linux中,您可以发送任何以太网帧(see examples),因此内部没有任何此类检查。但是您没有告诉您如何尝试发送欺骗性ARP消息;也许这样做的方式是限制你对源MAC地址的选择。