Networking
通過 TCP 建構 Unix 套接字橋
我有兩個使用 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 從客戶端啟動到伺服器系統,則可以編寫類似
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
會導致本地安全漏洞或拒絕服務或……)