Existe uma maneira de fazer socat não abrir a conexão de destino até receber uma conexão de ouvinte?

1

Eu quero rodar o socat como um servidor - contra um alvo que sobe e desce intermitentemente (ambiente de microsserviço na nuvem).

Eu quero que socat ouça - e abra a porta quando tiver uma conexão de ouvinte. (Um servidor socat)

Minha pergunta é: Existe uma maneira de fazer com que a socat não abra a conexão de destino até receber uma conexão de ouvinte?

    
por hawkeye 17.10.2016 / 11:42

1 resposta

3

Este é o padrão, se eu entendi sua pergunta. O primeiro socket é aberto e bloqueia em listen. Somente quando uma conexão é feita, a conexão com o segundo nome será tentada. Você pode testar isso. Por exemplo. escute na porta 60127 e conecte à porta 60128 em um shell:

$ socat tcp-l:60127,reuseaddr tcp:localhost:60128

Ele irá bloquear a espera. Em outro shell, tente se conectar:

$ telnet localhost 60127
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Connection closed by foreign host.

Ele falha e o comando original também falha:

socat[30293] E connect(3, AF=2 127.0.0.1:60128, 16): Connection refused

Se, no entanto, você repetir a primeira socat, adicione outra na porta 60128 com:

$ socat tcp-l:60128,reuseaddr -

então o telnet funcionará. Então, claramente a primeira socat não tenta a segunda conexão até que seja necessária.

    
por 17.10.2016 / 16:12