网关没有 ARP 响应

问题描述 投票:0回答:2

我正在开发一个嵌入式系统,它必须通过 10Base-T 以太网与外界通信。我已经构建了服务网页所需的所有功能,包括 ARP、IP、TCP、ICMP (ping)、HTTP 和部分 FTP。现在,我需要构建其余代码,这将允许我充当客户端。几个月来,从服务器的角度来看,所有上述协议都运行良好。

现在,我需要构建这些协议的客户端一半,以从其他服务器请求数据。第 1 步是通过 ARP 获取远程服务器的硬件地址。据我了解,由于服务器位于另一个网络上,因此我的网关应该使用其 MAC 地址进行响应,以便我知道将发往该 IP 的所有数据包传递到我的网关。问题来了:

我的设备(192.168.1.251,子网掩码 255.255.255.0)没有从我的网关(192.168.1.1)或网络外的任何机器获得 ARP 响应。但是,我的设备 (X.251) 确实从同一路由器下的笔记本电脑 (192.168.1.100) 收到了 ARP 响应。

我确定我的基本 ARP 以太网帧结构是正确的,因为我每次都正确回复 ARP 请求。不同之处在于 OPERATION 字段,它是 1 或 2,具体取决于 REQUEST 或 REPLY。


这是我的设备(192.168.1.251)对网关(192.168.1.1)的请求,没有得到响应:

FF FF FF FF FF <-- destination MAC - broadcast (also tried 0x00)

00 04 A3 7F C1 57 <-- source MAC - my device

08 06 <-- ARP

00 01 <-- ethernet

08 00 <-- IP

06 <-- 6 byte MAC addresses

04 <-- 4 byte IP addresses

00 01 <-- request (2 = reply)

00 04 A3 7F C1 57 <-- sender MAC - mine

C0 A8 01 FB <-- sender IP - mine = 192.168.1.251

00 00 00 00 00 00 <-- target MAC - unknown, reason for request

C0 A8 01 01 <-- target IP - gateway = 192.168.1.1

00 00 00 00 ..... 00 00 00 <-- trailer of 18 sets of 00 for padding


现在,我的设备 (192.168.1.251) 与我的笔记本电脑 (192.168.1.100) 几乎相同的请求得到了有效响应:

FF FF FF FF FF <-- destination MAC - broadcast (also tried 0x00)

00 04 A3 7F C1 57 <-- source MAC - my device

08 06 <-- ARP

00 01 <-- ethernet

08 00 <-- IP

06 <-- 6 byte MAC addresses

04 <-- 4 byte IP addresses

00 01 <-- request (2 = reply)

00 04 A3 7F C1 57 <-- sender MAC - mine

C0 A8 01 FB <-- sender IP - mine = 192.168.1.251

00 00 00 00 00 00 <-- target MAC - unknown, reason for request

C0 A8 01 64 <-- target IP - laptop = 192.168.1.100

00 00 00 00 ..... 00 00 00 <-- trailer of 18 sets of 00 for padding


可能重要也可能不重要的旁注:

  • 我的设备和网关都显示在我笔记本电脑的 ARP 表中。
  • 我的笔记本电脑运行的是 Win7.
  • 我的网关是 Linksys WRT54GL Wireless-G 宽带路由器。
  • 我已经通过 Wireshark 分析了数据包以提供上述结果。
  • 我的 DHCP 块涵盖 X.100 到 X.149,所以我的笔记本电脑被路由器分配了 X.100
  • 我的 X.251 设备 IP 是硬编码在设备中的。我看不到在路由器配置应用程序中设置此 IP 和我设备的 MAC 之间关系的方法。所有其他功能似乎都适用于我的设备作为服务器,所以我认为这不是问题。
  • 我已经尝试将远程服务器 (google = 173.194.43.33) 的 ARP 请求直接发送到服务器的 IP 和我的网关的 IP(希望它会意识到它需要成为代理。)
  • 我试过用头撞桌子,不幸的是,这有点帮助。
router gateway arp reply
2个回答
0
投票

如果我猜对了,你将你的 ARP 请求发布到你的笔记本上,而笔记本不允许回答该 ARP 请求。通常每个设备都只为自己负责。尝试为您的路由器输入目标 ip 192.168.1.1。那应该有用。

顺便说一句,您无法获取子网之外的任何设备的 MAC 地址。每个包都需要将目标 ip 地址发送到网关 mac 地址。


0
投票

我会尝试通过以下方式解决此问题:

使用 scapy 之类的工具,从您的笔记本电脑创建一个 ARP 请求,请求网关的 MAC,并将其发送到广播 MAC。看看是否回复了请求

然后,使用 scapy 在笔记本电脑上创建 ARP 请求,但将源 MAC 设置为设备的 MAC 地址,并向广播 MAC 发送网关 MAC 的请求。这实质上是在模拟您的设备在笔记本电脑上的发送。如果您可以暂时将笔记本电脑的 mac 更改为设备的 MAC,您应该会在笔记本电脑上收到回复。

如果上述步骤工作正常,那么您将在笔记本电脑上模拟了设备的确切行为,并且实际设备也将正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.