tcpdump てぃーしーぴーだんぷ
簡単に言うとこんな感じ!
ネットワークを流れるデータをリアルタイムで「盗み見」できるコマンドラインツールだよ!「どのパケットが届いてる?」「通信がどこで止まってる?」をターミナルから即確認できる、ネットワーク診断の定番ツールなんだ!
tcpdumpとは
tcpdump(ティーシーピーダンプ)は、ネットワークインターフェースを流れるパケット(通信データのかたまり)をリアルタイムでキャプチャ(捕捉)・表示するコマンドラインツールです。Linuxや macOS などのUnix系OSに標準搭載されており、追加インストール不要ですぐに使えます。名前の「dump」は「中身を吐き出す」という意味で、ネットワーク上のTCP/IP通信の内容を丸ごと表示することからこの名前がついています。
ネットワークのトラブルシュート(問題解析)において、「パケットが本当に届いているか」「どんな通信が発生しているか」をブラックボックスのまま推測するのではなく、実際の通信データを目で確認できる点が最大の強みです。システム発注後の動作検証、セキュリティ監査、障害原因の特定など、幅広いシーンで活躍します。
キャプチャ結果はターミナルにリアルタイム表示するだけでなく、pcapファイル(パケットキャプチャファイル)として保存し、GUIツールのWiresharkで後から詳細分析することもできます。「現場ではtcpdumpで素早く取得し、分析はWiresharkで」という使い分けが実務の定番です。
tcpdumpの基本構造と使い方
tcpdumpはコマンドラインで「何を・どこで・どのように」キャプチャするかを指定して使います。
| 構成要素 | 役割 | 例 |
|---|---|---|
| コマンド本体 | キャプチャの実行 | tcpdump |
| オプション | 動作の制御 | -i eth0(インターフェース指定) |
| BPFフィルタ | 対象パケットの絞り込み | port 80 |
| 出力先 | 表示 or ファイル保存 | -w capture.pcap |
よく使うオプション一覧
| オプション | 意味 | 使用例 |
|---|---|---|
-i <インターフェース> | 監視するNICを指定 | -i eth0 / -i any |
-n | 名前解決をしない(高速化) | -n |
-v / -vv / -vvv | 詳細度を上げる | -vv |
-w <ファイル> | pcapファイルに保存 | -w out.pcap |
-r <ファイル> | pcapファイルを読み込む | -r out.pcap |
-c <件数> | 指定件数で自動終了 | -c 100 |
-X | 16進数+ASCII で中身表示 | -X |
-A | ASCIIで本文表示(HTTP確認等) | -A |
BPFフィルタ(Berkeley Packet Filter)の書き方
BPF(Berkeley Packet Filter)フィルタは、膨大なパケットの中から必要なものだけを絞り込むための条件指定です。SQLのWHERE句のようなイメージです。
# 特定のIPアドレスとの通信だけ見る
tcpdump -i eth0 host 192.168.1.100
# HTTPトラフィックだけ見る(ポート80)
tcpdump -i eth0 port 80
# 特定IPからのSYNパケットだけ見る(TCP接続要求)
tcpdump -i eth0 'src 10.0.0.1 and tcp[tcpflags] & tcp-syn != 0'
# DNSクエリを見る(UDPポート53)
tcpdump -i any udp port 53 -n
# HTTPの本文まで確認(平文通信の確認)
tcpdump -i eth0 port 80 -A -n
# 結果をファイル保存してWiresharkで開く
tcpdump -i eth0 -w /tmp/capture.pcap
覚え方:tcpdumpの「3つのW」
| W | 意味 | オプション例 |
|---|---|---|
| Where(どこで) | どのNICを監視するか | -i eth0 |
| What(何を) | どのパケットを対象にするか | port 443 |
| hoW(どう保存) | 表示 or ファイル保存 | -w file.pcap |
歴史と背景
- 1987年 — Lawrence Berkeley National Laboratory(ローレンス・バークレー国立研究所)のVan Jacobson、Craig Leres、Steven McCanne の3名が開発。ネットワーク研究・デバッグ用ツールとして誕生
- 1990年代 — BSDやLinuxに標準搭載され、Unix系システム管理者の必携ツールに。同時期にBPFフィルタの概念が確立(1992年に論文発表)
- 1998年 — tcpdumpが使うパケットキャプチャライブラリ「libpcap」が独立したプロジェクトとして整備。以降、Wiresharkなど多くのツールがlibpcapを採用
- 2000年代 — Wireshark(当時Ethereal)の台頭でGUI分析が普及。tcpdumpは「現場でのキャプチャ取得役」として役割が明確化
- 2010年代以降 — クラウド・コンテナ環境(DockerやKubernetes)でも活用。
kubectl exec経由での利用や、eBPFを使った高度なキャプチャツール(Cilium等)の台頭でも、tcpdumpは基礎ツールとして健在
tcpdump・Wireshark・関連ツールの比較
ネットワーク解析ツールはtcpdumpだけではありません。目的と状況に応じて使い分けることが重要です。
| ツール | 操作方法 | 得意なこと | 不得意なこと |
|---|---|---|---|
| tcpdump | CLI(コマンド) | サーバー上での素早いキャプチャ・軽量 | 詳細なプロトコル解析・GUIなし |
| Wireshark | GUI | プロトコル解析・グラフ表示・フォロー | サーバー上では使いにくい |
| tshark | CLI | Wireshark相当の解析をCLIで | tcpdumpより重い |
| ngrep | CLI | パターンマッチング(grepライクな検索) | 低レイヤーの解析 |
| tcpflow | CLI | TCP通信の中身を再構築 | UDP非対応 |
tcpdumpとWiresharkの連携フロー
実務でよく使うシーン別コマンド
# ─────────────────────────────────
# 【シーン1】Webサーバーへの通信確認
# ─────────────────────────────────
sudo tcpdump -i eth0 port 80 or port 443 -n -c 50
# ─────────────────────────────────
# 【シーン2】特定サーバーとの疎通確認(ping相当)
# ─────────────────────────────────
sudo tcpdump -i any icmp and host 10.0.0.50 -n
# ─────────────────────────────────
# 【シーン3】DNSクエリが出ているか確認
# ─────────────────────────────────
sudo tcpdump -i any udp port 53 -n -A
# ─────────────────────────────────
# 【シーン4】TCP接続の確立(3-wayハンドシェイク)を確認
# ─────────────────────────────────
sudo tcpdump -i eth0 'tcp[tcpflags] & (tcp-syn|tcp-ack) != 0' -n
# ─────────────────────────────────
# 【シーン5】後でWiresharkで分析するためにファイル保存
# ─────────────────────────────────
sudo tcpdump -i eth0 -w /tmp/debug_$(date +%Y%m%d_%H%M%S).pcap
関連する規格・RFC
| 規格・RFC番号 | 内容 |
|---|---|
| RFC 1231 | IEEE 802.5トークンリング管理(BPFの動作基盤となるネットワーク層の仕様) |
| RFC 2839 | Internet Kermit Service(tcpdumpで解析されるプロトコルの一例) |
| RFC 791 | IP(Internet Protocol)— tcpdumpが最も多く扱うプロトコルの基本仕様 |
| RFC 793 | TCP(Transmission Control Protocol)— tcpdumpの名前の由来であるプロトコルの仕様 |
関連用語
- Wireshark — tcpdumpで保存したpcapファイルをGUIで詳細分析できるパケット解析ツール
- libpcap — tcpdumpが内部で使用するパケットキャプチャライブラリ。WinPcapのベースにもなっている
- BPFフィルタ — tcpdumpのフィルタ式の基盤となるBerkeley Packet Filterの仕様
- パケット — ネットワーク上を流れるデータの単位。tcpdumpが捕捉する対象
- TCP/IP — インターネット通信の基本プロトコル群。tcpdumpが解析する主な対象
- 3ウェイハンドシェイク — TCP接続確立の手順。tcpdumpでSYN/ACKフラグを確認することで可視化できる
- ポート番号 — tcpdumpのBPFフィルタで頻繁に使う絞り込み条件
- ネットワークインターフェース — tcpdumpの
-iオプションで指定する、監視対象のNIC