web-dev-qa-db-ja.com

TCP)を介してUnixソケットブリッジを構築する

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ソケットをそのポートに接続します。どうやってやるの?

3
mitchkman

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_を不適切に使用すると、ローカルセキュリティの悪用やサービス拒否につながる可能性があります...)

5
thrig