I have a problem with a product that I am currently developing. This product utilities a GPRS connection where a fixed IP address is provided on the 10.0.0.0 network with a netmask of 255.0.0.0. In addition to this an ethernet adapter is used, with a user definable IP address.
This issue occurs when the user requires the ethernet adapter to be used on a 10.x network. Data is collected from the local area network, processed and put into data structures then sent out over the GPRS network. The services bound to each of the bearers do not function when they are both operating in the same network range.
So:
GPRS 10.x.x.x
ETHER: 10.x.x.x
Under this configuration, I cannot communicate with either services on the GPRS or services on the ETHER bearer. I tried to explicitly bind everything to one of the bearers but it simply will not function in this mode.
You’re trying to route data between two interfaces that are on the same TCP/IP sub-network, and the IP stack routing code is getting confused about where to send data…
This is perfectly sane TCP/IP behaviour. Try to simulate your problem with a a PC (linux is easier to than Windows) with two network cards on the same subnet and use Wireshark to monitor the Ethernet and see what packets are doing.
In short, having two interfaces with in the same subnet is going to cause grief with your routing. The only fix is to move each interface into separate subnets.