Tengo un proveedor (A) que quiere enviarnos datos a través de una conexión TCP entrante. Desafortunadamente, el servicio consumidor (B) no puede recibir conexiones TCP entrantes. Además no tiene una IP estática, otro requisito.
Una forma de resolver esto sería un servicio que conecte el puerto TCP A entrante a otro puerto TCP B, de modo que el consumidor pueda hacer una conexión saliente a B.
Este no es un problema único [1] [2] , y con socat puedo hacer algo muy parecido a lo que quiero:
socat -d -d -d -u TCP4-LISTEN:PORT-A,reuseaddr TCP4-LISTEN:PORT-B,reuseaddr
Sin embargo, esto tiene los siguientes problemas:
- Si B se desconecta, no se puede volver a conectar. Con
TCP4-LISTEN:PORT-B,reuseaddr,fork
, se puede conectar pero no recibe datos. - B no puede conectarse antes de que A haya establecido una conexión (superable)
- Solo se puede establecer una conexión para
PORT-B
(superable)
¿Hay alguna manera de ajustar el comando para que se convierta en "permanente" y resistente a fallas?