为什么我没有收到此请求的 ARP 回复?

为什么我没有收到此请求的 ARP 回复?

使用pcap_sendpacketC,我手动发送以下数据包wlan0(我遗漏了一些字段,但我认为它们是正确的):

(Ethernet layer)
eth src:  <wlan0 MAC address>
eth dest: <wireless router MAC address>
(ARP request layer)
opcode: 1 (Request)
sender_hw: <wlan0 MAC address>
sender_proto: 192.168.1.3 (IP of wlan0)
target_hw: 0 (per usual)
target_proto: 173.194.46.72 (Google.com)

使用 Wireshark 监听wlan0,我期望看到 ARP 回复,其中包含 Google 服务器的 MAC 地址。但是,我没有看到任何ARP 回复包含 Google 的任何 IP。

需要注意的一点是,我通过拦截发送到虚拟网络接口的 ARP 请求(当我ping在虚拟网络空间内使用该命令时生成该数据包)来构建此数据包,然后重写该数据包并将其注入wlan0使用pcap,以便我稍后可以获取 ARP 回复并将其转发回虚拟网络。这就是为什么我相对确信数据包中的其他字段是正确的,因为我真的没有修改它们。

有人知道这里可能是什么问题吗?我注意到的一件事是,我的路由器的 IP 地址 (192.168.1.1) 在该数据包的任何地方都没有;我不确定我是否需要它。

答案1

你是_不是_得到 ARP 答复,因为在你的广播域[1] (又名:您的本地 [W]LAN 网段)_不是_一个 IP 地址为您正在 ARPing 的主机 (173.194.46.72)。

为了更详细地说明,让我补充一点:

  • ARP 是一个第 2 层协议 [2],因此,正如佐尔达什:”...ARP 没有跨越路由器...“。ARP 请求通常通过“广播”以太网帧发送。这就是为什么它不能跨越本地...广播域;

  • 尽管你可以对任何你喜欢的 IP(包括谷歌的 173.194.46.72)进行 ARP 请求,但你_不是_将会收到任何 ARP 应答(除非“...Google 在你的 LAN 上...”,如汉普顿评论以上),因为在这种情况下:

    • 您的 LAN 上的每台主机都将物理接收并处理由您的 ARP 请求生成的广播帧。因此...
    • ...每台主机都会发现它包含针对 173.194.46.72 的 ARP 请求。因此...
    • ...因为您的 LAN 上的每个主机都配置了不同的IP地址(除非,再次强调,是你的“Google”);
    • 没有主机会发送 ARP 应答

不幸的是,我不清楚你到底想解决什么问题。无论如何,你可能会发现进行简单的调查很有用:

  • 免费ARP“[3],它遵循与您正在测试的常见 ARP-Request=>Arp-Reply 相关的反向模式;

  • ARP 欺骗/中毒“ [4],关于“拒绝服务“ / ”中间人“ / ”会话劫持“你可能正在遭受的攻击;

  • ARP 平移“[5],这是发送 ARP 请求和检查 ARP 答复的一种非常简单的方法。在其他情况下,这非常有用:

    • 测试网络连接(对于连接到本地网络的主机),即使在远程主机上配置了 IP 防火墙(换句话说:即使 Windows 防火墙处于活动状态,您也可以对本地连接的 Windows 主机进行 ARP ping);

    • 获取违规主机的 MAC 地址,当这些主机配置了相同的 IP 地址时(您将发送ARP 请求并返回多种的ARP应答);

  • 埃特卡普“[6]”,...一套全面的中间人攻击套件。它具有实时连接嗅探、动态内容过滤和许多其他有趣的技巧。它支持对许多协议的主动和被动解析,并包含许多用于网络和主机分析的功能...


[1]http://en.wikipedia.org/wiki/Broadcast_domain

[2]http://en.wikipedia.org/wiki/Address_Resolution_Protocol

[3]http://en.wikipedia.org/wiki/Address_Resolution_Protocol#ARP_announcements

[4]http://en.wikipedia.org/wiki/ARP_spoofing

[5]http://en.wikipedia.org/wiki/Arping

[5]http://ettercap.github.io/ettercap/

答案2

Google 不在您的局域网中,因此您无法获得答案。
您必须使用 DNS 从地址获取 IP,然后才能 ping 它。

相关内容