どーも!marusukeです!
この記事では
- tcpdumpでできること
- tcpdumpの使用例
- tcpdumpのオプション
をわかりやすく解説します!
tcpdumpコマンドでできること
tcpdump [オプション] [フィルタ式]
tcpdumpは、ネットワークを流れるパケット(通信データ)をキャプチャして内容を確認できるコマンドです。主にネットワークのトラブルシューティングや通信の解析に使われます。
例えば「どのIPと通信しているか」「どんなプロトコルが使われているか」などをリアルタイムで確認できます。
また、フィルタ式を使うことで「特定の通信だけ」を効率よく確認することができます。
※専門用語解説:
パケットとは、ネットワーク上で送受信されるデータの小さな単位のこと。通信はこのパケットの集合で成り立っています。
※専門用語解説:
フィルタ式とは、tcpdumpで「どの通信だけを表示するか」を指定する条件のこと。不要な通信を除外して、見たい通信だけを絞り込めます。
tcpdumpコマンドの使用例
sudo tcpdump -i eth0 port 80
tcpdump: listening on eth0, link-type EN10MB (Ethernet)
12:34:56.789 IP 192.168.1.10.54321 > 93.184.216.34.80: Flags [S], seq 123456789, length 0
12:34:56.790 IP 93.184.216.34.80 > 192.168.1.10.54321: Flags [S.], seq 987654321, ack 123456790, length 0
この例では、eth0インターフェースでポート80(HTTP通信)のパケットだけをキャプチャしています。
👉「port 80」の部分がフィルタ式で、特定の通信だけを表示するための条件です。
出力結果の見方
12:34:56.789 IP 192.168.1.10.54321 > 93.184.216.34.80: Flags [S], seq 123456789, length 0
12:34:56.789→ パケットを受信した時刻IP→ 使用しているプロトコル192.168.1.10.54321→ 送信元IPとポート番号>→ 通信の向き(左から右へ)93.184.216.34.80→ 宛先IPとポート番号Flags [S]→ TCPフラグ(Sは接続開始を意味)seq→ シーケンス番号(通信の順番管理)length→ データの長さ
👉この情報を見ることで、「誰がどこに通信しているか」を詳細に把握できます。
よく使うフィルタ式の例
# 特定のIPアドレスとの通信
tcpdump -i eth0 host 192.168.1.1
# TCP通信のみ取得
tcpdump -i eth0 tcp
# UDP通信のみ取得
tcpdump -i eth0 udp
# 送信元IPを指定
tcpdump -i eth0 src 192.168.1.1
# 宛先IPを指定
tcpdump -i eth0 dst 192.168.1.1
# ポート443(HTTPS)
tcpdump -i eth0 port 443
# 複数条件(AND)
tcpdump -i eth0 host 192.168.1.1 and port 22
# 複数条件(OR)
tcpdump -i eth0 port 80 or port 443
# 除外(NOT)
tcpdump -i eth0 not port 22
👉このようにフィルタ式を使うことで、必要な通信だけを効率よく確認できます。
tcpdumpコマンドのオプション
| オプション | 説明 |
|---|---|
| -i インターフェース | 監視するネットワークインターフェースを指定 |
| -n | IPアドレスやポート番号を名前解決せずそのまま表示 |
| -c 数 | 指定した数のパケットを取得したら終了 |
| -w ファイル名 | キャプチャ結果をファイルに保存 |
| -r ファイル名 | 保存したキャプチャファイルを読み込んで表示 |
| -A | パケット内容をASCII形式で表示 |
| -X | 16進数とASCIIの両方で表示 |
以上です!
ここまで読んでいただきありがとうございました!

コメント