コマンドのネットワークアクティビティを追跡する方法は?

コマンドのネットワークアクティビティを追跡する方法は?

コマンドのネットワークアクティビティを追跡したいのですが、tcpdumpとstraceを試しましたが、成功しませんでした。

たとえば、パッケージをインストールしたり、サイトにアクセスしようとするコマンドを使用している場合は、そのネットワークアクティビティ(アクセスしたいサイト)を確認したいと思います。

私の考えでは、tcpdumpを使ってこれを行うことができるようです。試してみましたが、私のシステムのすべてのネットワーク活動を追跡しています。複数のネットワーク関連コマンドを実行し、特定のコマンドネットワークアクティビティのみを追跡したい場合は、その時点で正確なソリューションを見つけるのが難しいでしょう。

これを行う方法はありますか?

修正する:

私はネットワークインターフェイスで何が起こっているのかを追跡したくありません。コマンド(例:#yum install -y vim)ネットワークアクティビティを追跡したいです。届きたいサイトのようなものです。

答え1

簡単にするためにnetstat

netstatPIDまたはプロセス名を見つけるには、およびgrepを使用します。

# netstat -np --inet | grep "thunderbird"
tcp        0      0 192.168.134.142:45348   192.168.138.30:143      ESTABLISHED 16875/thunderbird
tcp        0      0 192.168.134.142:58470   192.168.138.30:443      ESTABLISHED 16875/thunderbird

watch動的更新が利用可能です。

watch 'netstat -np --inet | grep "thunderbird"'

そして:

  • -n:シンボル化されたホスト、ポート、またはユーザー名を決定するのではなく、数値アドレスを表示します。
  • -p:各ソケットが属するプログラムのPIDと名前を表示します。
  • --inet:raw、udp、およびtcpプロトコルソケットのみが表示されます。

詳細な説明

ツールを試してみましたが、straceオプションを試してみましたかtrace=network?出力は非常に冗長である可能性があるため、grepを実行する必要があるかもしれません。 grep "sin_addr"で始めることができます。

 strace -f -e trace=network <your command> 2>&1 | grep sin_addr

または、すでに実行されているプロセスの場合は、PIDを使用してください。

 strace -f -e trace=network -p <PID> 2>&1 | grep sin_addr

答え2

新しくします。ネットワークネームスペース、物理ネットワークにブリッジし、監視ブリッジを使用しますtcpdump

答え3

sysdigネットワークアクティビティを含むがこれらに限定されず、システムで実行されているカーネルまたは複数のコマンドのすべてのアクティビティを監視できます。

出力が大きくなる可能性があり、フィルタを作成する必要があるため、最も基本的なフィルタの基本ページは理解しやすいです。

また、のようにアプリケーションラッパーとして使用されないという利点もあり、strace非常に強力です。

~からシステムマイニングの例

ネットワーキング

最も高いネットワーク帯域幅を使用するプロセスの表示

sysdig -c topprocs_net 

ホスト192.168.0.1と交換されたネットワークデータの表示

バイナリとして:

sysdig -s2000 -X -c echo_fds fd.cip=192.168.0.1   

ASCIIで:

sysdig -s2000 -A -c echo_fds fd.cip=192.168.0.1 

親ローカルサーバーポートの表示:

確立された接続の面で:

sysdig -c fdcount_by fd.sport "evt.type=accept"   

合計バイトの面で:

sysdig -c fdbytes_by fd.sport 

親クライアントIPの表示

確立された接続で判断

sysdig -c fdcount_by fd.cip "evt.type=accept"   

合計バイトの観点から

sysdig -c fdbytes_by fd.cip 

Apacheが提供しないすべての着信接続を一覧表示します。

sysdig -p"%proc.name %fd.name" "evt.type=accept and proc.name!=httpd"

答え4

Wiresharkを使用して、ネットワークインターフェイスのすべての入出力トラフィックをスニッフィングできます。 GUIなしでオプションが必要な場合は、tsharkを使用できます。

両方のオプションを使用すると、すべてのネットワークトラフィックを表示し、後で行われたすべての接続を分析するために保存できます。

関連情報