Criando uma ponte de soquete Unix via TCP

3

Eu tenho dois processos (cliente e servidor) que se comunicam entre si 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 executadas na mesma sub-rede. Portanto, quero construir uma espécie de ponte TCP entre eles.

Cliente - > /tmp/tm-machine1.ipc - > Porta TCP 15432 - > /tmp/tm-tm-machine2.ipc - > Servidor

Eu estava pensando em usar o Socat, mas parece que ele só cobre 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 posso fazer isso?

    
por mitchkman 30.01.2018 / 01:00

1 resposta

5

OpenSSH de uma versão suficiente (OpenSSH 6.7 / 6.7p1 (2014-10-06) ou superior) pode fazer isso, se o SSH é iniciado a partir do cliente para o sistema do servidor poderia escrever algo como

ssh -L /path/to/client.sock:/path/to/server.sock serverhost

e, em seguida, o cliente se conectaria a /path/to/client.sock e o servidor ouviria em /path/to/server.sock . Você provavelmente também precisará definir -o StreamLocalBindUnlink=yes , consulte ssh_config(5) .

(E, por favor, não use /tmp ; o uso indevido de /tmp pode levar a explorações de segurança locais ou recusas de serviço ou ...)

    
por 30.01.2018 / 01:26