tcpdump でネットワークトラフィックを解析する

Tips

はじめに

業務でアプリの開発をしていた際、アプリが通信する先の UTM(統合脅威管理)でアクセス過多が検知されました。
どこからどれだけのリクエストが飛んでいるのかを確認する必要があり、同僚に相談したところ tcpdump コマンドを教えてもらいました。
本記事はその備忘録です。

tcpdump とは

tcpdump は Linux で利用できる CLI のパケットキャプチャツールです。
ネットワークインターフェースを流れるパケットをリアルタイムで表示・記録できます。

インストール

コマンドが入っていない場合は以下のコマンドでインストールします。

sudo apt update
sudo apt install tcpdump

基本的な使い方

パケットをキャプチャ

sudo tcpdump

何もオプションを指定しない場合、デフォルトのネットワークインターフェースのパケットを表示します。

インターフェースを指定

sudo tcpdump -i eth0

-i オプションでキャプチャするインターフェースを指定します。
利用可能なインターフェースを確認するには以下のコマンドを使います。

表示件数を制限

sudo tcpdump -c 100

-c オプションで取得するパケット数の上限を指定できます。
大量に流れる環境では指定しておくと便利です。

特定の IP を指定してキャプチャ

今回の調査で実際に使ったのがこの方法です。

送受信どちらかに特定の IP が含まれるパケットを表示

-n オプションは DNS 逆引きを無効化するもので、IP アドレスをそのまま表示させるために使用しています。

sudo tcpdump -n host 192.168.1.100

host キーワードに続けて IP アドレスを指定すると、その IP との通信だけをフィルタリングできます。

送信元 IP を指定する

sudo tcpdump -n src host 192.168.1.100

src host とすることで、その IP からの送信パケットのみに絞り込めます。

宛先 IP を指定する

sudo tcpdump -n dst host 192.168.1.100

dst host とすることで、その IP 宛てのパケットのみに絞り込めます。

ポートも絞り込む

sudo tcpdump -n host 192.168.1.100 and port 443

and で条件を組み合わせられます。HTTPS トラフィックに限定したい場合や、Dockerでコンテナのポートを指定している場合などに便利です。

まとめ

今回使用した主なオプションをまとめます。

オプション説明
-i <インターフェース>キャプチャするインターフェースを指定
-c <数>キャプチャするパケット数の上限を指定
-nDNS 逆引きを無効化
host <IP>特定の IP との通信に絞る
src host <IP>送信元 IP で絞る
dst host <IP>宛先 IP で絞る
port <番号>ポート番号で絞る
-w <ファイル>pcap 形式で保存
-r <ファイル>pcap ファイルを読み込む

より詳細なオプションは man tcpdump で確認できます。

コメント

タイトルとURLをコピーしました