This question is very similar to this one:
Linux is sending ARP requests to hosts in other subnets?
Main problem - Ubuntu Linux server is sending ARP requests asking for a MAC address of a host on a different subnet.
One router has four different Class C networks attached physically. No VLAN or any other separation.
The router has an IP address in each of the four Class C subnets. That is what allows routing between the four subnets.
Ubuntu Linux server has IP address x.x.250.2.
When a ping is done to one of the different subnets (x.x.249.x), SOME requests are successful and others are not. For those that are not, Wireshark (packet sniffer running in the Ubuntu Linux server) shows it is sending out ARP packets ("Who has IP x.x.249.x?")
Why is this occurring? No ARP packets should be sent from the server destined for something not on it's same subnet.
Network config on the server is x.x.250.2. Subnet mask is 255.255.255.0. Gateway is x.x.250.1. Set statically.
Routing table has not been modified and is just the default for this:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 x.x.250.1 0.0.0.0 UG 0 0 0 eth0
x.x.250.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
The arp cache on the Linux server shows many MAC addresses for systems in the x.x.249.x and also the x.x.250.x network. Again, this should not be happening.
Now - A Windows XP computer was used for testing purposes. Put into the same subnet as the Linux server. It can ping those addresses in the x.x.249.x subnet that the Linux server cannot.
There must be some kind of potential bug in the TCP stack of Ubuntu/Linux. Sending out ARP packets to other networks/subnets should not be happening.