我有两个使用 Unix socket 相互通信的进程(客户端和服务器)/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 套接字连接到该端口。我怎样才能做到这一点?
足够版本的OpenSSH(OpenSSH 6.7/6.7p1 (2014-10-06) 或更高版本)可以做到这一点,如果 SSH 从客户端启动到服务器系统,则可以编写类似
然后客户端将连接到
/path/to/client.sock
,服务器将在/path/to/server.sock
. 您可能还需要设置-o StreamLocalBindUnlink=yes
,请参阅ssh_config(5)
。(请不要使用
/tmp
;不当使用/tmp
会导致本地安全漏洞或拒绝服务或......)