Unixドメインソケットを移動すると、socatはどのようにトラフィックを監視できますか?

Unixドメインソケットを移動すると、socatはどのようにトラフィックを監視できますか?

socatUnix ドメインソケットのトラフィックを監視するために使用できます。

sudo mv /path/to/sock /path/to/sock.original
sudo socat -t100 -x -v UNIX-LISTEN:/path/to/sock,mode=777,reuseaddr,fork UNIX-CONNECT:/path/to/sock.original

私はこのメカニズムがどのように機能するのかよく理解していないので、誰かがそれを説明できることを願っています。特に、プロセスがすでに聞いている場合、ソケットファイルの移動はどのように機能しますか?また、移動後:どちらも結果を返しませlsof /path/to/sock/path/to/sock.original

答え1

監視するサーバーが現在リッスンしている間は、これらのコマンドを実行する必要があります/path/to/sock。その後、名前を変更すると、/path/to/sockサーバーは影響を受けません。

このsocatコマンドは仲介者を挿入します。/path/to/socksクライアントからのすべてのトラフィックを受信して​​転送します/path/to/socks.original(そしてプロセスに記録します-v)。

これは以下にのみ適用されます。小川アウトレットタイプ(使用UNIX-RECVFROM/UNIX-RECVデータグラムソケット)、クライアントがセカンダリデータやその他のクールなものを使用するread/write/send/recvのではなく、そのソケットのみを使用している場合にのみ可能です。sendmsg()

lsof受信プロセス(socatおよびソケット受信および受け入れサーバー)のみが報告されます。通常は接続できません。接続済みクライアントのソケット間のパス。

そうすれば今後サーバーを起動すると、サーバーが試行されるため動作しません。聞くすでに聞いていた/path/to/socksので点灯して失敗しました。socatまたは、サーバーに受信するように指示する必要があります/path/to/sock.original

関連情報