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
。
答え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
。