ネットワーク監視・トラブルシュート

tcpdump てぃーしーぴーだんぷ

パケットキャプチャネットワーク解析BPFフィルタWiresharkpcapファイルトラブルシュート
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
-X16進数+ASCII で中身表示-X
-AASCIIで本文表示(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年代以降 — クラウド・コンテナ環境(DockerKubernetes)でも活用。kubectl exec経由での利用や、eBPFを使った高度なキャプチャツール(Cilium等)の台頭でも、tcpdumpは基礎ツールとして健在

tcpdump・Wireshark・関連ツールの比較

ネットワーク解析ツールはtcpdumpだけではありません。目的と状況に応じて使い分けることが重要です。

ツール操作方法得意なこと不得意なこと
tcpdumpCLI(コマンド)サーバー上での素早いキャプチャ・軽量詳細なプロトコル解析・GUIなし
WiresharkGUIプロトコル解析・グラフ表示・フォローサーバー上では使いにくい
tsharkCLIWireshark相当の解析をCLIでtcpdumpより重い
ngrepCLIパターンマッチング(grepライクな検索)低レイヤーの解析
tcpflowCLITCP通信の中身を再構築UDP非対応

tcpdumpとWiresharkの連携フロー

サーバー現場 tcpdump CLIで素早くキャプチャ capture.pcap パケットデータ保存 -w capture.pcap オプションで保存 転送 SCP/SFTP 分析PC Wireshark GUIで詳細分析 プロトコル解析 HTTP/DNS/TLSを可視化 フロー追跡・統計 障害原因を特定 よくある用途 ✔ 疎通確認(ICMPが届くか) ✔ アプリ通信の確認 ✔ DNS解決の確認 ✔ 不審な通信の検出 ✔ 接続断の原因調査 ✔ ポート疎通テスト

実務でよく使うシーン別コマンド

# ─────────────────────────────────
# 【シーン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 1231IEEE 802.5トークンリング管理(BPFの動作基盤となるネットワーク層の仕様)
RFC 2839Internet Kermit Service(tcpdumpで解析されるプロトコルの一例)
RFC 791IP(Internet Protocol)— tcpdumpが最も多く扱うプロトコルの基本仕様
RFC 793TCP(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