Je construis une application web (Serveur A) qui communique avec un serveur distant (Serveur B) qui est connecté à l'internet.
Le serveur B se trouve derrière un NAT et écoute les communications sur 3 ports non standard.
Dans un scénario typique, pour que je puisse déployer plusieurs serveurs distants sur différents réseaux et les faire communiquer avec l'application web mère (Serveur A), chacun de ces serveurs doit avoir les routeurs configurés manuellement pour transmettre les ports respectifs à une adresse IP statique dans laquelle le Serveur B est configuré.
Je cherche un moyen de résoudre ce problème qui consiste à devoir configurer chaque routeur individuellement et manuellement pour chaque déploiement. Le transfert de port doit être effectué car le serveur A doit communiquer avec le serveur B et doit initier la conversation.
Je demande s'il existe un moyen pour le serveur B d'initier la communication plutôt que l'inverse, de sorte que la redirection de port ne soit pas nécessaire.
Le serveur B n'aurait qu'à appeler la maison, ouvrir tous les sockets/ports nécessaires (c'est là que j'ai besoin de votre aide pour obtenir des informations) et toutes les communications se feraient via ces ports ouverts sans que le serveur A n'ait jamais besoin de connaître l'adresse IP du serveur B, ni de parler au routeur pour gérer la redirection.
Ce scénario est-il possible ?
Edita: J'ai ajouté quelques détails supplémentaires :
En gros, j'ai créé une application web (Serveur A) qui communique avec plusieurs serveurs d'impression 3D ayant une API REST exposée. Les serveurs API des serveurs d'impression écoutent tous sur un port non standard de 8721.
Pour l'instant, je configure manuellement sur mon application web pour pointer vers chaque serveur d'impression via leur adresse IP externe et leur port redirigé. Comme vous pouvez probablement le dire, cela va créer un tas de problèmes car la plupart de ces adresses IP externes vont changer car la plupart des réseaux domestiques/consommateurs n'ont pas d'IP statique.
Cela signifie que je dois trouver chaque fois que l'adresse IP est changée et modifier manuellement mes enregistrements sur mon application web.
J'imagine (et j'émets l'hypothèse) que l'une des meilleures façons de résoudre ce problème est de ne pas laisser l'application web se préoccuper de l'emplacement de chacun de ces serveurs d'impression, mais plutôt de laisser les serveurs d'impression eux-mêmes indiquer au serveur web où ils se trouvent.
J'essaie de résoudre deux problèmes :
- Les adresses IP externes sont dynamiques et non statiques (comme mentionné ci-dessus).
- Redirection de port/pare-feu imposé par les réseaux domestiques. Dans le cas où il y a plusieurs serveurs d'impression dans un réseau domestique, cela signifie que pour atteindre chaque serveur individuellement, le routeur domestique doit savoir comment acheminer chaque port unique qui doit être configuré à la fois du côté de la webapp et du routeur domestique vers le bon serveur d'impression (car ils écoutent tous sur 8721).
Désolé pour le long message. Je suis encore relativement nouveau dans le domaine de la programmation des prises et j'espère que quelqu'un pourra m'indiquer où je dois chercher pour trouver plus d'informations sur la façon de faire ce qui précède.