単一アプリケーションのネットワークトラフィックをダンプする(straceのような)


11

アプリケーションによって生成されたネットワークデータのpcapをダンプする方法を探しています。同様の方法で、syscallをstraceダンプします。例:

net-strace somecommand -args

somecommandネットワークを介して何かを実行し、net-straceそのアプリによって生成されたすべてのトラフィック(+応答および関連トラフィック)のpcapダンプを保存します。

これは達成できますか?


問題は、アプリケーションがパケット(pingのようなrawソケットを使用するものを除く)を送信せず、カーネルに代わってパケットを送信(および関連するパケットを受信)させるネットワークAPIを使用することです。
ステファンChazelas

はい。ただし、すべてのアプリケーションデータをプロキシ経由で実行するアプリケーション(例:proxychains-proxychains.sourceforge.net)があります。彼らはそれをどのように行うのかわからないが、彼らはそれを取り込んでプロキシを介して送信することができる。おそらく、pcapをダンプできる単純なプロキシ(ローカルで実行)がある場合は、proxychains + proxyコンボを使用してダンプを取得できます。
gesti 14

パケットよりも(LD_PRELOADを使用して)APIをハイジャックしている可能性があります。そうは言っても、いくつかのsetsockopt(SO_MARK)をアプリケーションに挿入し、netfilterを使用してパケットをulogに記録することができます。
ステファンChazelas

3
アプリケーションの新しいネットワーク名前空間を作成し、そこにあるすべてのトラフィックをキャプチャします。一部のユースケースでも、許容できるアプローチになる場合があります。
ステファンChazelas

回答:


3

strace自体を使用するのはどうですか?

strace -f -e trace=network -o output_file -s 10000 somecommand -args

指定したコマンドラインは、DNS要求のみを表示しているようです。straceの-eオプションでは、実際に必要なものが選択されないことがよくあります。
ロビングリーン

2

さまざまな方法でアプリケーションが生成したトラフィックをダンプできます。

アプリケーションが使用しているポートがわかっている場合は、これらのポートに特定のフィルタリングルールを指定してtcpdumpまたはWiresharkを実行できます。

それがオプションでない場合は、プロセスの所有者と一致するiptablesルールを使用してアプリケーションパケットをマークできます。プロセスを完全に分離するには、新しいユーザーアカウントを作成する必要がある場合があります。次に、ルールにのみ一致するトラフィックをキャプチャできます。

この関連トピックの詳細については、https//askubuntu.com/questions/11709/how-can-i-capture-network-traffic-of-a-single-processをご覧ください。

また、前のトピックで述べたように、このプログラムtracedumpが興味深いかもしれません。http://mutrics.iitis.pl/tracedump

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