ホーム > ネットワーク管理 > tcpdump

tcpdump: ネットワークトラフィックのダンプと分析

tcpdumpは、ネットワークインターフェースを介して送受信されるTCP/IPおよびその他のパケットをキャプチャおよび分析するための強力なコマンドラインツールです。特定の条件に一致するパケットのみをフィルタリングしてリアルタイムで表示したり、ファイルに保存して後で分析したりできます。ネットワーク問題の診断、セキュリティ監査、アプリケーションデバッグなど、さまざまな用途に活用されます。

概要

tcpdumpはネットワークインターフェースを監視し、パケットヘッダーをキャプチャして解釈します。さまざまなフィルタリング式を使用して目的のトラフィックのみを選択的に表示したり、キャプチャされたデータを標準出力に表示したり、`.pcap`ファイルに保存したりできます。

主な機能

  • ネットワークインターフェースのリアルタイム監視
  • さまざまなプロトコル(TCP、UDP、ICMPなど)のパケットキャプチャ
  • 強力なフィルタリング式のサポート
  • キャプチャされたデータのファイルへの保存と読み込み
  • ネットワーク問題の診断とセキュリティ分析

主なオプション

tcpdumpは非常に多くのオプションを提供しており、キャプチャ動作、フィルタリング、出力形式を細かく制御できます。

キャプチャ制御

出力形式

フィルタリング式

生成されたコマンド:

コマンドを組み合わせてみてください。

説明:

`tcpdump` コマンドを実行します。

これらのオプションを組み合わせて、AIと一緒に仮想的にコマンドを実行してみてください。

使用例

tcpdumpのさまざまな活用方法を示す例です。ほとんどの場合、root権限が必要です。

全インターフェースでパケットキャプチャ(基本)

sudo tcpdump

すべての有効なインターフェースでパケットをキャプチャし、リアルタイムで表示します。`Ctrl+C`で停止します。

特定のインターフェースでキャプチャ

sudo tcpdump -i eth0

eth0インターフェースで発生するすべてのトラフィックをキャプチャします。

特定のホストのトラフィックをキャプチャ

sudo tcpdump host 192.168.1.100

IPアドレス192.168.1.100に関連するすべてのトラフィックをキャプチャします。

特定のポートのTCPトラフィックをキャプチャ

sudo tcpdump tcp port 80

Webサーバー(HTTP)トラフィックであるポート80のTCPパケットのみをキャプチャします。

送信元IPと宛先ポートの組み合わせフィルタリング

sudo tcpdump src host 192.168.1.50 and dst port 22

送信元IPが192.168.1.50で、宛先ポートが22(SSH)であるトラフィックをキャプチャします。

キャプチャしたパケットをファイルに保存

sudo tcpdump -i eth0 -c 100 -w capture.pcap

eth0インターフェースでキャプチャしたパケットを`capture.pcap`ファイルに保存します。`-c 100`で100個のパケットのみを保存します。

保存したファイルからパケットを読み込む

tcpdump -r capture.pcap

以前に保存した`capture.pcap`ファイルの内容を読み込んで表示します。

IPアドレスとポート番号のみ表示(名前変換なし)

sudo tcpdump -nn

ホスト名およびサービス名の変換を行わず、IPアドレスとポート番号のみを数値で表示して素早く確認します。

インストール

tcpdumpはほとんどのLinuxディストリビューションではデフォルトで提供されていないか、最小インストールに含まれていない場合があります。次のコマンドを使用してインストールできます。

Debian/Ubuntu

sudo apt update
sudo apt install tcpdump

APTパッケージマネージャーを使用してtcpdumpをインストールします。

CentOS/RHEL/Fedora

sudo yum install tcpdump  # または dnf install tcpdump

YUMまたはDNFパッケージマネージャーを使用してtcpdumpをインストールします。

ヒントと注意点

tcpdumpを効果的に使用するためのヒントと注意すべき点です。

権限の問題

ネットワークインターフェースをキャプチャするには、通常root権限が必要です。そのため、ほとんどのtcpdumpコマンドは`sudo`と共に実行する必要があります。

  • 常に`sudo tcpdump ...`の形式で実行
  • 特定のユーザーに`CAP_NET_RAW`権限を付与して`sudo`なしで実行することも可能ですが、セキュリティに注意が必要です

フィルタリングの重要性

トラフィックが多い環境でフィルタリングなしにtcpdumpを実行すると、膨大な量のデータが出力され、分析が困難になり、システムパフォーマンスに影響を与える可能性があります。常に必要なトラフィックのみをキャプチャするように、フィルタリング式を積極的に活用してください。

  • 不要なトラフィックは捨て、必要なトラフィックのみをキャプチャ
  • フィルタリングはキャプチャ開始前に適用されると効率的

ファイル保存と分析

リアルタイム分析が困難な場合や、後で詳細に分析する必要がある場合は、`-w`オプションを使用してパケットを`.pcap`ファイルに保存することをお勧めします。保存されたファイルは、WiresharkのようなGUIツールでより便利に分析できます。

  • 大量のトラフィックは`-w`で保存してから分析
  • Wiresharkは`.pcap`ファイル分析に最適化されたツール

パフォーマンスに関する考慮事項

tcpdumpはシステムリソースを多く消費する可能性があります。特に高帯域幅環境で全パケットをキャプチャしたり、複雑なフィルタを使用したりすると、CPUおよびディスクI/Oに負荷がかかる可能性があります。

  • `-s`オプションでキャプチャするパケット長を制限してリソースを節約
  • `-c`オプションでキャプチャするパケット数を制限

同じカテゴリのコマンド