J'ai un fournisseur (A) qui souhaite nous envoyer des données via une connexion TCP entrante. Malheureusement, le service consommateur (B) ne peut pas recevoir de connexions TCP entrantes. De plus, il n'a pas d'adresse IP statique, une autre exigence.
Une façon de résoudre ce problème serait un service qui connecte le port TCP A entrant à un autre port TCP B, afin que le consommateur puisse établir une connexion sortante avec B.
Ce n'est pas un problème unique [1] [2] , et avec socat je peux faire quelque chose de très proche de ce que je veux:
socat -d -d -d -u TCP4-LISTEN:PORT-A,reuseaddr TCP4-LISTEN:PORT-B,reuseaddr
Cependant, cela présente les problèmes suivants:
- Si B se déconnecte, il ne peut pas se reconnecter. Avec
TCP4-LISTEN:PORT-B,reuseaddr,fork
, il peut se connecter mais ne reçoit pas de données. - B ne peut pas se connecter avant que A ait établi une connexion (surmontable)
- Une seule connexion peut être établie vers
PORT-B
(surmontable)
Existe-t-il un moyen d'ajuster la commande pour qu'elle devienne "permanente" et résistante aux pannes?