I am making an embedded device with two processors, a “gateway” processor which is connected to external ethernet, and a “webServer” processor, which is only connected to the gateway via a second MAC on the gateway (MAC-to-MAC connection).
The key requirement is that this device should look like one device from the outside. One IP address, etc.
So I set up the two on their own embedded subnet so they can talk to each other. Then I set up the gateway to port-forward packets on port 80 to the webServer so it can service them, and setup the webServer to use the gateway as, well, a gateway. Thus, to the user, it looks like one device with one IP address regardless of whether they are using http or a different function serviced directly by the gateway.
This all works great, but I have been using IP address combinations that I know don’t conflict. That is to say, I know that I am not plugging my device into a subnet that overlaps with the embedded one. In the real world, I don’t have that luxury. The end user can assign just about any IP address/subnet they want to the device (except multicast, broadcast, loopback etc.), and it is supposed to work.
So then I thought I’ll just address hop the internal subnet. I’ll put it on 10.0.0.0/4 and if the user assigns a 10.X.X.X address I’ll have them hop the internal addresses over to 184.108.40.206/4. But then I thought, well, this device could be placed on a 10.X.X.X subnet, but could get accessed by a 176.16.X.X device through a gateway, which could still lead to address conflicts that wouldn’t happen in a one-processor device.
So my question is, is there a standard practice for assigning IP addresses to an subnet inside an embedded device? Do you normally address hop between private subnet ranges? Or do you just pick a set of assigned public addresses and hope your users are sensible enough not to use them in their private network?