通过 TCP 构建 Unix 套接字桥

通过 TCP 构建 Unix 套接字桥

我有两个进程(客户端和服务器)使用 Unix 套接字相互通信/tmp/tm.ipc。两个进程(客户端和服务器)都不支持 TCP。

客户端-> /tmp/tm.ipc->服务器

现在,我想将两个进程分开以在同一子网中运行的两台不同计算机上运行。因此,我想在两者之间建立某种 TCP 桥。

客户端 -> /tmp/tm-machine1.ipc-> TCP 端口 15432 -> /tmp/tm-tm-machine2.ipc-> 服务器

我本来想使用Socat,但这看起来它只涵盖了服务器监听部分。

socat -d -d TCP4-LISTEN:15432,fork UNIX-CONNECT:/tmp/tm.ipc

现在我想将客户端的 Unix 套接字连接到该端口。我怎样才能做到这一点?

答案1

开放SSH足够的版本(OpenSSH 6.7/6.7p1 (2014-10-06) 或更高版本)可以做到这一点,如果 SSH 从客户端启动到服务器系统,可以编写类似的内容

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

然后客户端将连接到/path/to/client.sock,服务器将侦听/path/to/server.sock。您可能还需要设置-o StreamLocalBindUnlink=yes,请参阅ssh_config(5)

(并且请不要使用/tmp;不当使用/tmp可能导致本地安全漏洞或拒绝服务或......)

相关内容