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


12

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

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返されません。

回答:


11

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

このsocatコマンドは、中間者を挿入します。/path/to/socksクライアントからのすべてのトラフィックをリッスンして転送します/path/to/socks.original(そして、プロセスにログインします-v)。

これは、ストリームタイプのソケット(データグラムソケットにUNIX-RECVFROM/ UNIX-RECVを使用)でのみ機能し、クライアントがこれらのソケットにのみアクセスし、補助データやその他の凝ったものではない場合にのみ機能します。read/write/send/recvsendmsg()

lsofリスニングプロセス(socatおよびリスニングソケットと受け入れられたソケットのサーバー)のみを報告します。通常、クライアントに接続されているソケットをソケットのパスにリンクすることはできません。

あなたはそれを行う場合は前にサーバを起動し、サーバーとしてその意志はない仕事をしようと聞く/path/to/socksととして失敗しsocat、すでにその上で待機しています。または、/path/to/sock.original代わりにリッスンするようにサーバーに指示する必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.