Wir haben für solche Szenarien den RelayServer als Open-Source Lösung entwickelt:
https://github.com/thinktecture/relayserver
Zentral läuft irgendwo der RelayServer. Das kann auf einer gemieteten VM oder in der Cloud sein.
Bei den Endkunden vor Ort läuft jeweils ein Connector.
Der Connector verbindet sich mit einer ständigen Realtime-Verbindung mit dem Server.
Dann können HTTP-Requests an den RelayServer geschickt, und dabei ein Connector gezielt adressiert werden.
Der Request geht dann über die Realtime-Verbindung zum Connector, der macht den gleichen Request lokal gegen eine HTTP-
API und die Antwort wird dann wieder via dem RelayServer an den Client gesendet, der die ursprüngliche Anfrage geschickt hat.
Somit müssen am Ziel keine Firewalls konfiguriert, Portfreigaben eingerichtet und irgendwelche DynDNS-Sachen registriert werden. Es sind ausschliesslich die Endpunkte im lokalen Netz erreichbar, die explizit im Connector freigegeben sind und der Zugriff auf den RelayServer kann auch über so ziemlich alle gängigen Authentication-Methoden abgesichert werden.