web-dev-qa-db-ja.com

コマンドのネットワークアクティビティをトレースする方法

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

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

Tcpdumpを使用してこれを行うことができると思います。試しましたが、システムのすべてのネットワークアクティビティを追跡しています。複数のネットワーク関連コマンドを実行していて、特定のコマンドネットワークアクティビティのみを追跡したい場合、その時点で正確な解決策を見つけるのは困難です。

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

更新:

ネットワークインターフェースで行われるすべてのことを追跡したくありません。コマンド(例:#yum install -y vim)のネットワークアクティビティを追跡したいだけです。到達しようとするサイトなど。

14
Buvanesh Kumar

簡略化のためのnetstat

netstatを使用し、PIDまたはプロセス名にgreppingを実行します。

# 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

straceツールを試したとのことですが、オプションtrace=networkを試しましたか?出力はかなり冗長になる可能性があるため、いくつかのgreppingが必要になる場合があることに注意してください。まず、「sin_addr」でgreppingを実行します。

 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
17
Gohu

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

出力は大きくなる可能性があるため、フィルターを作成する必要があります。最も基本的なフィルターのデフォルトページは非常にわかりやすいものです。

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

から Sysdigの例

ネットワーキング

ネットワーク帯域幅の使用に関して、上位のプロセスを確認する

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"
6
Rui F Ribeiro

新しい ネットワーク名前空間 を作成し、それを実際のネットワークにブリッジし、tcpdumpでブリッジを監視します。

5
Simon Richter

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

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

1
Ricard Molins