Eu tenho um provedor (A) que deseja nos enviar dados através de uma conexão TCP de entrada. Infelizmente, o serviço consumidor (B) não pode receber conexões TCP de entrada. Também não possui um IP estático, outro requisito.
Uma maneira de resolver isso seria um serviço que conecta a porta TCP A de entrada a outra porta TCP B, para que o consumidor possa fazer uma conexão de saída com B.
Este não é um problema único [1] [2] , e com o socat eu posso fazer algo muito próximo do que eu quero:
socat -d -d -d -u TCP4-LISTEN:PORT-A,reuseaddr TCP4-LISTEN:PORT-B,reuseaddr
No entanto, isso tem os seguintes problemas:
- Se B desconectar, ele não poderá se reconectar. Com
TCP4-LISTEN:PORT-B,reuseaddr,fork
, ele pode se conectar, mas não recebe dados. - B não pode conectar-se antes que A estabeleça uma conexão (superável)
- Somente uma conexão pode ser estabelecida para
PORT-B
(superável)
Existe uma maneira de ajustar o comando para que ele se torne "permanente" e resistente a falhas?