tcpdumpの使い方を5ステップ解説【インストール~パケットキャプチャ実践】

記事サムネイル

「ネットワークの勉強を始めたけど、パケットがどう流れているのかイメージが湧かない…」そんな風に感じていませんか?tcpdumpは、そんなあなたのための強力なツールです。コマンドラインで少し難しそうに見えますが、基本さえ押さえれば誰でも使えます。

この記事では、セキュリティ学習を始めたばかりの初心者の方でも安心して学べるように、tcpdumpの基本から実践的な使い方までを5つのステップに分けて丁寧に解説します。

この記事を読み終えれば、あなたもネットワークの”中身”を覗けるようになるハズ!

誰でも無料で参加できるハッキング体験会の参加者募集中!!

セキュ塾のハッキング体験会告知チラシ

tcpdumpとは?ネットワークを流れるデータを見る魔法のコマンド

ネットワークを見る特殊な虫眼鏡

tcpdumpを一言で説明すると、「ネットワーク上を行き交うデータを、リアルタイムで捕まえて表示するコマンド」です。コンピュータがインターネットを見たり、メールを送ったりするとき、データは「パケット」という小さな荷物に小分けされて、ネットワークという道路を通って相手に届けられます。tcpdumpは、その道路を流れるパケットを捕まえて、「どこからどこへ、どんな荷物が送られているのか」を見せてくれる、いわば特殊な虫眼鏡のようなものです。

これを使うことで、Webサイトが正しく表示されない原因を調査したり、自分のPCが意図しない通信をしていないかチェックしたりと、様々な場面で役立ちます。


Step 1: tcpdumpを準備しよう(インストール方法)

多くのLinuxやmacOSには最初から入っていますが、もし「command not found」と表示されたら、以下のコマンドでインストールしましょう。基本的に管理者権限(sudo)が必要です。

Linux (Ubuntu/Debian系) の場合

sudo apt update
sudo apt install tcpdump

Linux (CentOS/Red Hat系) の場合

sudo yum install tcpdump

macOSの場合

標準でインストールされていますが、もしなければHomebrewを使ってインストールすると使えるようになります。

brew install tcpdump

Step 2: tcpdumpの基本的な使い方と必須オプション

インストールできたら、さっそく基本的な使い方を見ていきましょう。

まずはそのまま動かしてみよう

ターミナルを開いて、以下のコマンドを実行してみてください。パスワードを求められます。

sudo tcpdump

すると、たくさんの文字列が滝のように流れてくるはずです。これが、今あなたのPCで行われている全ての通信です。情報が多すぎて何が何だか分かりませんね。止めるにはキーボードの Ctrl + C を押します。

これだけは覚えたい!3つの必須オプション

このままでは使いにくいので、出力を制御するための「オプション」を使います。初心者のうちは、まず以下の3つを覚えれば十分です。ただし、ChatGPT等のAIに使い方きくのもあり。

  • -i [インターフェース名]: どの通信経路を監視するか指定します。「どの道路を見るか」を決めるイメージです。(例: -i eth0
  • -n: IPアドレスなどを、PCが分かりやすい名前(例: google.com)に変換せず、数字のまま表示します。表示がスッキリして速くなります。
  • -c [回数]: 指定した回数のパケットを捕まえたら自動で終了します。(例: -c 10 で10回分キャプチャ)

実践!google.co.jpへの通信を覗いてみよう (3ステップ)

それでは、今覚えたオプションを使って、実際にブラウザで「google.co.jp」にアクセスしたときの通信だけを捕まえてみましょう。

Step 3: どの通信経路(インターフェース)を監視するか確認する

自分のPCがどの経路でインターネットに繋がっているかを確認します。以下のコマンドを実行すると、利用可能なインターフェースの一覧が表示されます。

sudo tcpdump -D

有線LANなら eth0、Wi-Fiなら wlan0en0 といった名前が見つかるはずです。この画像ではens33。

Step 4: Googleとの通信だけに絞り込んでみる

次に、「google.co.jp との通信だけ」という条件(フィルター)を追加します。先ほど確認したインターフェース名を -i の後につけてください。

# 例: インターフェースがens33の場合 あらかじめdigでgoogleのipアドレスみておく。
sudo tcpdump -i ens33 -n host 142.251.222.35

このコマンドを実行したまま、ブラウザでgoogle.co.jpを開いてみてください。先ほどより情報が絞られ、google.co.jpとの通信だけが表示されるようになったはずです。

Step 5: Webアクセスの通信(HTTPS)を特定する

最後に、Googleとの通信の中でも、Webアクセスで使われる通信(HTTPS、ポート番号443)だけにさらに絞り込みます。

# 「google.co.jp」との通信で、かつ「ポート番号443」の通信のみ。今回もdigで前もってipアドレス調べておいた:142.251.42.170
sudo tcpdump -i ens33 -n host 142.251.42.170 and port 443

これで、ブラウザでGoogleにアクセスした際の通信だけをピンポイントで捕まえることができました!これがtcpdumpを使った実践的なパケットキャプチャです。


tcpdumpの出力が”呪文”に見える?読み解き方のコツ

読み解くコツ

tcpdumpの出力は、慣れないと暗号のように見えます。でも、構造は意外とシンプルです。例えば、以下のような一行があったとします。

22:10:30.123456 IP 192.168.1.10.54321 > 172.217.25.99.443: Flags [S], ...

これは、以下のような意味に分解できます。

  • 22:10:30.123456: パケットを捕まえた時刻(タイムスタンプ)
  • IP: 通信の種類(プロトコル)。ここではIP通信。
  • 192.168.1.10.54321: 送信元。「IPアドレス . ポート番号」の形式。
  • >: 通信の方向。左から右へ送られたことを示す。
  • 172.217.25.99.443: 宛先。「IPアドレス . ポート番号」の形式。
  • Flags [S], …: 通信の状態を示すフラグ。ここでは接続を開始しようとしている合図(SYNフラグ)。

いつ、誰が、誰に、どんな通信をしたか」という基本構造さえ分かれば、もう呪文には見えません。まずは「>」の左右にあるIPアドレスに注目することから始めましょう。

しかし、便利なChatGPT等を利用しないのはもったいない!こういったAIの補助から解読することも強く薦める。


まとめ

今回は、tcpdumpの基本的な使い方を5つのステップで解説しました。

  1. インストール方法を確認する
  2. 基本的なオプション(-i, -n, -c)を覚える
  3. 通信経路(インターフェース)を確認する
  4. hostフィルターで特定の相手との通信に絞る
  5. portフィルターで特定のサービス(アプリ)の通信に絞る

tcpdumpは、ネットワークの世界を目に見える形にしてくれる強力なツールです。最初は難しく感じるかもしれませんが、今回のように簡単な使い方から試していけば、必ずあなたの力になります。
全ての使い方や出力の見方を憶える必要はありません。
AI等の補助を十分に活用してください。
まずは自分のPCで色々なサイトにアクセスしてみて、どんな通信が行われているのかを観察することから始めてみてください!

誰でも無料で参加できるハッキング体験会の参加者募集中!!

セキュ塾のハッキング体験会告知チラシ