Eu tenho dois processos (cliente e servidor) que se comunicam usando um soquete Unix /tmp/tm.ipc
. Ambos os processos (Cliente e Servidor) não suportam TCP.
Cliente -> /tmp/tm.ipc
-> Servidor
Agora, quero separar os dois processos para serem executados em duas máquinas diferentes que executam na mesma sub-rede. Portanto, quero construir uma espécie de ponte TCP intermediária.
Cliente -> /tmp/tm-machine1.ipc
-> porta TCP 15432 -> /tmp/tm-tm-machine2.ipc
-> Servidor
Eu estava pensando em usar o Socat, mas parece que cobre apenas a parte de escuta do servidor.
socat -d -d TCP4-LISTEN:15432,fork UNIX-CONNECT:/tmp/tm.ipc
Agora quero conectar o soquete Unix do cliente a essa porta. Como eu posso fazer isso?
OpenSSH de uma versão suficiente (OpenSSH 6.7/6.7p1 (2014-10-06) ou superior) pode fazer isso, se o SSH for iniciado do cliente para o sistema do servidor, pode-se escrever algo como
e então o cliente se conectaria
/path/to/client.sock
e o servidor escutaria em/path/to/server.sock
. Você provavelmente também precisará definir-o StreamLocalBindUnlink=yes
, consultessh_config(5)
.(E, por favor, não use
/tmp
; o uso indevido de/tmp
pode levar a falhas de segurança locais ou negações de serviço ou…)