Scenario
- Multiple IoT devices, owned by different customers, running behind different NAT LANs.
- Customers wanting to remotely access their IoT devices.
- IoT devices have an onboard hand-rolled web server.
- Customers currently remotely access their IoT devices via temporarily allocated (as in per connection) WAN non-CGNAT IPv4 addresses (which only one cellular carrier in the country provides).
Constraints
- IoT devices are running bare metal firmware on minimal hardware (~8MB flash) and hence cannot run any client software (other than absolutely necessary firmware modifications).
- IPv6 is not feasibly supported by the firmware.
- Many of the devices are in quite remote locations and hence adding another physical device (e.g. to run something like Ngrok) is not really feasible.
Question
How do we escape the vendor lock-in of the single cellular provider, while still providing our customers remote access to their IoT devices?
Ideally we would set up a centralised reverse proxy for our customers to use, but typically reverse proxies require known upstream host addresses. In our case our upstreams would be IoT devices behind NAT LANs.
Is there an existing software/service that functions as a reverse proxy, but where the upstreams dynamically "present themselves" (to the reverse proxy)?