tcpdump によるパケット監視
【目次】
tcpdump とは
tcpdumpは、Unix系オペレーティングシステムで使用されるコマンドラインベースのパケットキャプチャツールである。ネットワークインターフェース(パソコンとネットワークをつなぐ出入口にあたる装置や仮想的な機構)を通過するパケット(ネットワーク上をやり取りされるデータの小さなかたまり)をリアルタイムで取得・表示し、ネットワークのトラブルシューティングやセキュリティ監査に用いられる。
tcpdumpを使用することで、以下のことが可能になる。
- 通信内容の確認による接続障害の原因特定
- 不審な通信の検出
- アプリケーションが送受信するデータの検証
注意事項
tcpdumpの実行にはroot権限(システムの管理者権限)が必要である。また、他者の通信を許可なく傍受することは法律で禁止されているため、自身が管理するネットワークおよび機器でのみ使用すること。以下の例ではコマンド行頭の # は、root権限で実行することを示す慣習的な記号である(入力する文字ではない)。
基本的な使用例
以下に、tcpdump の基本的な使用例を示す。コマンド中の -X オプションは、各パケットの内容(リンク層ヘッダーを除く)を16進数とASCII文字の両方で表示する。
例1:すべてのパケットを監視する
フィルタ(監視対象を絞り込む条件)を指定しない場合、インターフェースを通過するすべてのパケットが対象になる。
# tcpdump -X
例2:特定のホスト(localhost)に関係するパケットを監視する
-i lo0 でループバックインターフェース(自分自身への通信に使用する仮想的なネットワークインターフェース)を指定し、host localhost で対象ホストを限定する。インターフェース名 lo0 はmacOSなどのBSD系での名称であり、Linuxでは lo を指定する。
# tcpdump -X -i lo0 host localhost
例3:特定のポート(ポート22)に関係するパケットを監視する
port 22 で対象ポートを限定する。ポート22はSSH通信(暗号化された遠隔ログイン)で使用されるため、SSH接続のパケットを確認する際に有用である。
# tcpdump -X -i lo0 port 22
例4:複数条件を組み合わせてパケットを監視する
複数の条件を組み合わせる場合は、and 演算子を使用する。以下の例では、localhostかつポート22に関係するパケットのみを対象とする。
# tcpdump -X -i lo0 host localhost and port 22