Unixソケットを使用して相互に通信する2つのプロセス(クライアントとサーバー)があります/tmp/tm.ipc
。両方のプロセス(クライアントとサーバー)はTCPをサポートしていません。
クライアント-> /tmp/tm.ipc
->サーバー
ここで、両方のプロセスを分離して、同じサブネットで実行される2つの異なるマシンで実行したいと思います。したがって、その間にある種の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
_を不適切に使用すると、ローカルセキュリティの悪用やサービス拒否につながる可能性があります...)