tcpdump は ネットワークのパケットをリアルタイムでキャプチャ(取得)するツール です。
Wireshark のようなGUIツールと違い、軽量・高速・SSH越しでも使えるため、Linuxサーバーのトラブルシューティングでは必須のコマンドです。
📌 1. tcpdump の基本
目次
■ インストール確認
多くのLinuxに標準搭載されています。
tcpdump --version
無い場合:
sudo apt install tcpdump
sudo yum install tcpdump
📌 2. 基本構文と最小限の使い方
tcpdump [オプション] [フィルタ]
例:ネットワーク全体のパケットを表示
sudo tcpdump
⚠️ root権限が必要
パケットキャプチャは特権操作のため、sudo を忘れずに。
📌 3. よく使う基本オプション
| オプション | 意味 |
|---|---|
-i eth0 | インターフェース指定 |
-n | ホスト名を解決しない(高速になる) |
-nn | IP・ポート番号も解決しない |
-v -vv -vvv | 詳細度の上昇 |
-c 100 | 100パケットのみ取得 |
-w file.pcap | ファイルに保存(Wiresharkで解析可) |
-r file.pcap | 保存したパケットを読み込み |
📌 4. 実務で役立つ基本例
■ インターフェースを指定してキャプチャ
sudo tcpdump -i eth0
■ DNS逆引き不要で高速化(必須)
sudo tcpdump -i eth0 -nn
■ 100個のパケットだけ見る
sudo tcpdump -i eth0 -c 100
📌 5. プロトコル別フィルタ例
tcpdumpは BPFフィルタ を使って高度な抽出ができます。
■ TCP だけを取得
sudo tcpdump tcp
■ UDP だけ
sudo tcpdump udp
■ ICMP だけ(ping の確認)
sudo tcpdump icmp
📌 6. IPアドレス/ポートのフィルタリング
■ 特定IPだけ
sudo tcpdump -nn host 192.168.1.10
■ 送信元IPを指定
sudo tcpdump -nn src host 192.168.1.10
■ 宛先IPを指定
sudo tcpdump -nn dst host 192.168.1.1
■ 特定ポート(例:80)
sudo tcpdump -nn port 80
■ TCPの送信元ポート80
sudo tcpdump -nn tcp src port 80
■ UDPの宛先ポート53(DNS)
sudo tcpdump -nn udp dst port 53
📌 7. 組み合わせフィルタ
BPFの論理演算子を使う:
andornot
■ 例:特定IP かつ port 80
sudo tcpdump -nn host 192.168.1.10 and port 80
■ 例:特定IP 以外の通信
sudo tcpdump -nn not host 192.168.1.5
■ 例:複数条件
sudo tcpdump -nn 'tcp and (port 80 or port 443)'
📌 8. HTTP/HTTPS の確認(ハンドシェイク含む)
HTTPSなので中身は読めませんが、通信の流れは確認可能。
■ HTTP(平文)
sudo tcpdump -nn -A port 80
-A … ASCII 文字列を表示する(データの中身を確認)
■ HTTPS の接続確認(ポート443)
sudo tcpdump -nn tcp port 443
■ TCPハンドシェイク確認
sudo tcpdump -nn 'tcp[tcpflags] & (tcp-syn|tcp-ack) != 0'
📌 9. 特定のネットワーク帯をフィルタ
■ 192.168.1.0/24 のパケット
sudo tcpdump -nn net 192.168.1.0/24
📌 10. 出力形式を見やすくする
■ タイムスタンプ付き
sudo tcpdump -nn -tttt
■ パケットの長さ表示
sudo tcpdump -nn -v
■ もっと詳細なパケット解析
sudo tcpdump -nn -vvv
📌 11. パケットをファイル保存(実務で必須)
■ Wireshark形式で保存
sudo tcpdump -i eth0 -w capture.pcap
■ 保存したファイルを読む
tcpdump -r capture.pcap

コメント