TCPによるUnixソケットブリッジの構築

TCPによるUnixソケットブリッジの構築

Unixソケットを使用して互いに通信する2つのプロセス(クライアントとサーバー)があります/tmp/tm.ipc。プロセス(クライアントまたはサーバー)はどちらもTCPをサポートしていません。

クライアント-> /tmp/tm.ipc->サーバー

今、私は同じサブネット上で実行されている2つの異なるコンピュータで実行されるように、2つのプロセスを分離したいと思います。したがって、私は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ソケットをそのポートに接続したいと思います。どうすればいいですか?

答え1

SSHを開く十分なバージョン(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ローカルセキュリティが脆弱になったりサービス拒否が発生する可能性があります。)

関連情報