Categories: linux

tcpdumpの使い方を徹底解説|ネットワークパケットをLinuxでキャプチャする基本と応用

Linuxでネットワークのトラブルシューティングやセキュリティ診断を行う際、強力なツールとなるのが「tcpdump」です。tcpdumpは、ネットワーク上を流れるパケットをリアルタイムでキャプチャし、中身を確認できる便利なコマンドラインツールです。GUIに頼らずに軽量で高性能な解析ができるため、システム管理者やセキュリティエンジニアには欠かせません。本記事では、tcpdumpの基本的な使い方から応用的なフィルタリング方法、ログ保存のテクニックまでを詳しく解説します。初心者の方でも読みながら実践できる内容を心がけていますので、ぜひ参考にしてください。


tcpdumpとは何か?

tcpdumpは、UNIX系のOSで利用できるネットワークパケットキャプチャツールです。コマンドラインから簡単にネットワークインターフェースを監視し、流れているパケットの情報を表示することができます。トラブルシューティング、セキュリティ調査、ネットワークの挙動確認など、幅広い用途に対応しており、シンプルながら非常に強力なツールです。

tcpdumpの大きな特長は、以下の通りです。

  • 軽量で高速なパケットキャプチャが可能
  • 詳細なパケット情報を表示
  • BPF(Berkeley Packet Filter)による柔軟なフィルタリング
  • 標準出力への表示やファイルへの保存が可能

tcpdumpは多くのLinuxディストリビューションで標準または簡単にインストールできます。


tcpdumpのインストール方法

多くのLinux環境ではtcpdumpがデフォルトでインストールされている場合もありますが、入っていない場合は以下のコマンドでインストールできます。

Debian/Ubuntu系

sudo apt update
sudo apt install tcpdump

Red Hat/CentOS系

sudo yum install tcpdump

Arch系

sudo pacman -S tcpdump

インストール後、tcpdump --version でバージョンを確認できます。


基本的な使い方

tcpdumpを実行するには、管理者権限(root権限)が必要です。以下は最も基本的な使用例です。

sudo tcpdump

このコマンドで、デフォルトのネットワークインターフェースに流れるすべてのパケットが表示されます。ただし、情報量が多いため、以下のようにオプションをつけて絞り込むのが一般的です。

インターフェースの指定

利用可能なインターフェースを確認する:

tcpdump -D

特定のインターフェース(例:eth0)でキャプチャ:

sudo tcpdump -i eth0

パケット数の指定

指定した数のパケットだけをキャプチャ:

sudo tcpdump -c 10 -i eth0

特定のプロトコルや通信のフィルタリング

tcpdumpの強みは、フィルター機能にあります。以下のように条件を指定して、必要なパケットだけを表示することができます。

IPアドレスで絞る

特定の送信元または宛先IP:

sudo tcpdump host 192.168.1.10

送信元IPだけを指定:

sudo tcpdump src 192.168.1.10

宛先IPだけを指定:

sudo tcpdump dst 192.168.1.10

ポート番号で絞る

特定のポート通信(例:HTTPの80番):

sudo tcpdump port 80

送信元または宛先ポートを指定:

sudo tcpdump src port 22
sudo tcpdump dst port 443

プロトコルで絞る

sudo tcpdump tcp
sudo tcpdump udp
sudo tcpdump icmp

複数条件の組み合わせ(AND/OR/NOT)も可能です:

sudo tcpdump 'tcp and port 80 and src 192.168.1.10'

出力結果の見方

tcpdumpの出力結果は1行ごとに1つのパケット情報を示します。

例:

15:02:18.123456 IP 192.168.1.10.56234 > 93.184.216.34.http: Flags [S], seq 123456789, win 29200, options [mss 1460], length 0

この行を分解すると以下の意味になります。

  • 15:02:18.123456:パケットのキャプチャ時刻
  • IP:プロトコル(IPv4)
  • 192.168.1.10.56234 > 93.184.216.34.http:送信元IPとポート > 宛先IPとポート
  • Flags [S]:TCPフラグ(ここではSYN)
  • seq:シーケンス番号
  • win:ウィンドウサイズ
  • length:データ長

パケットデータの保存と解析

パケットを後から解析したい場合は、ファイルに保存しておくことも可能です。

保存する

sudo tcpdump -i eth0 -w capture.pcap

この.pcapファイルは、WiresharkなどのGUIツールで開くこともできます。

保存したファイルを読み込む

tcpdump -r capture.pcap

フィルターをつけて読み込むこともできます。

tcpdump -r capture.pcap port 80

実用的な応用例

DNSの確認

sudo tcpdump -i eth0 port 53

HTTPS通信の確認(通信内容は暗号化されて見えない)

sudo tcpdump -i eth0 port 443

自分のPCが外部にどんな接続をしているか確認

sudo tcpdump -i eth0 and not src net 192.168.0.0/16

よく使うオプションまとめ

オプション内容
-iインターフェース指定
-cキャプチャするパケット数
-wファイルに書き出し
-r保存ファイルの読み込み
-nホスト名を解決しない(高速)
-nnホスト名+ポート名も解決しない
-v, -vv詳細な表示(vの数で情報量が変わる)

セキュリティに関する注意点

tcpdumpは非常に強力なツールである反面、通信内容を傍受することもできるため、使用には十分な注意が必要です。権限のあるユーザーのみが利用するべきであり、不要なデータの保存や共有は控えるべきです。また、社内ネットワークでの利用はポリシーを遵守しましょう。

upandup

Web制作の記事を中心に、暮らし、ビジネスに役立つ情報を発信します。 アフィリエイトにも参加しています。よろしくお願いいたします。