title: No ARP response from gateway
body: <p>I'm developing an embedded system that has to communicate with the outside world over 10Base-T ethernet.  I have built all functions required to serve web pages, including ARP, IP, TCP, ICMP (ping), HTTP and portions of FTP.  Now, I need to build the rest of the code, which will allow me to act as a client.  All the above-mentioned protocols have been working well from the server standpoint for several months.</p>
  
  <p>Now, I need to build the client half of these protocols, to request data from other servers.  Step 1 is to ARP for the hardware address of the remote server.  As I understand it, since the server is on another network, my gateway should respond with its MAC address so that I know to pass all packets destined for that IP to my gateway.  Here's the problem:</p>
  
  <p>My device (192.168.1.251, on subnet mask 255.255.255.0) doesn't get an ARP response from my gateway (192.168.1.1) or any machine outside of the network.  However, my device (X.251) does get an ARP response from my laptop (192.168.1.100) which is under the same router.</p>
  
  <p>I'm certain that my basic ARP ethernet frame structure is correct, because I reply to ARP requests correctly every time.  The difference is in the OPERATION field, which is either a 1 or 2 depending on REQUEST or REPLY.</p>
  
  <hr>
  
  <p>Here's my device's (192.168.1.251) request to the gateway (192.168.1.1), which gets no response:</p>
  
  <p>FF FF FF FF FF FF &lt;-- destination MAC - broadcast (also tried 0x00)</p>
  
  <p>00 04 A3 7F C1 57 &lt;-- source MAC - my device</p>
  
  <p>08 06 &lt;-- ARP</p>
  
  <p>00 01 &lt;-- ethernet</p>
  
  <p>08 00 &lt;-- IP</p>
  
  <p>06 &lt;-- 6 byte MAC addresses</p>
  
  <p>04 &lt;-- 4 byte IP addresses</p>
  
  <p>00 01 &lt;-- request (2 = reply)</p>
  
  <p>00 04 A3 7F C1 57 &lt;-- sender MAC - mine</p>
  
  <p>C0 A8 01 FB &lt;-- sender IP - mine = 192.168.1.251</p>
  
  <p>00 00 00 00 00 00 &lt;-- target MAC - unknown, reason for request</p>
  
  <p>C0 A8 01 01 &lt;-- target IP - gateway = 192.168.1.1</p>
  
  <p>00 00 00 00 ..... 00 00 00 &lt;-- trailer of 18 sets of 00 for padding</p>
  
  <hr>
  
  <p>Now, my device's (192.168.1.251) nearly identical request to my laptop (192.168.1.100), which gets a valid response:</p>
  
  <p>FF FF FF FF FF FF &lt;-- destination MAC - broadcast (also tried 0x00)</p>
  
  <p>00 04 A3 7F C1 57 &lt;-- source MAC - my device</p>
  
  <p>08 06 &lt;-- ARP</p>
  
  <p>00 01 &lt;-- ethernet</p>
  
  <p>08 00 &lt;-- IP</p>
  
  <p>06 &lt;-- 6 byte MAC addresses</p>
  
  <p>04 &lt;-- 4 byte IP addresses</p>
  
  <p>00 01 &lt;-- request (2 = reply)</p>
  
  <p>00 04 A3 7F C1 57 &lt;-- sender MAC - mine</p>
  
  <p>C0 A8 01 FB &lt;-- sender IP - mine = 192.168.1.251</p>
  
  <p>00 00 00 00 00 00 &lt;-- target MAC - unknown, reason for request</p>
  
  <p>C0 A8 01 64 &lt;-- target IP - laptop = 192.168.1.100</p>
  
  <p>00 00 00 00 ..... 00 00 00 &lt;-- trailer of 18 sets of 00 for padding</p>
  
  <hr>
  
  <p>Side notes that may or may not be important:</p>
  
  <ul>
  <li>Both my device and the gateway show up in my laptop's ARP table.</li>
  <li>My laptop is running Win7.</li>
  <li>My gateway is a Linksys WRT54GL Wireless-G broadband router.</li>
  <li>I have analyzed packets via Wireshark to provide the results above.</li>
  <li>My DHCP block covers X.100 to X.149, so my laptop is assigned X.100 by the router</li>
  <li>My device IP of X.251 is hard-coded in the device.  I see no means of setting a relationship between this IP and my device's MAC in the router config app.  All other functions seem to work with my device as a server, so I assume this is not a problem.</li>
  <li>I have tried sending the ARP request for remote servers (google = 173.194.43.33) both directly to the server's IP and to my gateway's IP (hoping it would realize its need to be a proxy.)</li>
  <li>I have tried banging my head on the desk, which, sadly, helped a little.</li>
  </ul>