没有来自网关的ARP响应

时间:2012-09-14 20:26:55

标签: router gateway arp reply

我正在开发一种嵌入式系统,必须通过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字段,取决于REQUEST或REPLY,为1或2。


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

FF FF FF FF FF FF< - 目标MAC - 广播(也尝试过0x00)

00 04 A3 7F C1 57< - 来源MAC - 我的设备

08 06< - ARP

00 01< - ethernet

08 00< - IP

06< - 6字节MAC地址

04< - 4字节IP地址

00 01< - request(2 =回复)

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 00&lt; - 目标MAC - 未知,请求原因

C0 A8 01 01&lt; - 目标IP - 网关= 192.168.1.1

<00> 00 00 00 00 ... 00 00 00&lt; - 用于填充的18组00的预告片


现在,我的设备(192.168.1.251)对我的笔记本电脑(192.168.1.100)提出了几乎相同的请求,得到了有效的回复:

FF FF FF FF FF FF&lt; - 目标MAC - 广播(也尝试过0x00)

00 04 A3 7F C1 57&lt; - 来源MAC - 我的设备

08 06&lt; - ARP

00 01&lt; - ethernet

08 00&lt; - IP

06&lt; - 6字节MAC地址

04&lt; - 4字节IP地址

00 01&lt; - request(2 =回复)

00 04 A3 7F C1 57&lt; - sender MAC - mine

C0 A8 01 FB&lt; - sender IP - mine = 192.168.1.251

<00> 00 00 00 00 00 00&lt; - 目标MAC - 未知,请求原因

C0 A8 01 64&lt; - target IP - laptop = 192.168.1.100

<00> 00 00 00 00 ... 00 00 00&lt; - 用于填充的18组00的预告片


附注可能重要也可能不重要:

  • 我的设备和网关都显示在笔记本电脑的ARP表中。
  • 我的笔记本电脑正在运行Win7。
  • 我的网关是Linksys WRT54GL Wireless-G宽带路由器。
  • 我通过Wireshark分析了数据包,以提供上述结果。
  • 我的DHCP块涵盖X.100到X.149,所以我的笔记本电脑被路由器分配给X.100
  • 我的X.251设备IP在设备中进行了硬编码。我认为没有办法在路由器配置应用程序中设置此IP与我的设备的MAC之间的关系。所有其他功能似乎都可以作为服务器使用我的设备,所以我认为这不是问题。
  • 我尝试将远程服务器的ARP请求(google = 173.194.43.33)直接发送到服务器的IP和我的网关的IP(希望它能够实现它需要成为代理。)
  • 我试着把头撞在桌子上,遗憾的是,这有点帮助了。

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

使用像scapy这样的工具,从您的笔记本电脑发出请求网关MAC的ARP请求,然后将其发送到广播MAC。看一下请求是否被回复。

然后,使用scapy在笔记本电脑上创建ARP请求,但将源MAC设置为设备的MAC地址,并向网关MAC的广播MAC发送请求。这基本上模拟了设备在笔记本电脑上的发送。如果您可以暂时将笔记本电脑的Mac更改为设备的MAC,则应在笔记本电脑上获得回复。

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