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
ローカルセキュリティが脆弱になったりサービス拒否が発生する可能性があります。)