Networking

通過 TCP 建構 Unix 套接字橋

  • January 30, 2018

我有兩個使用 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會導致本地安全漏洞或拒絕服務或……)

引用自:https://unix.stackexchange.com/questions/420543