tcpdumpコマンドの基本的な使用方法

仮想環境の構築

Mininetを使用してネットワーク仮想環境を構築します。

mn --topo=tree,depth=1,fanout=3 --mac

ホスト間接続テスト

ホストh1からh6へのpingテストを実行します。

h1 ping -c 6 h6

tcpdumpコマンドの基本構文

tcpdump [ -DenNqvX ] [ -c count ] [ -F file ] [ -i interface ] [ -r file ]
        [ -s snaplen ] [ -w file ] [ expression ]

キャプチャオプション:
-c:キャプチャするパケット数を指定します。指定された数の条件に合致したパケットが取得されるまで処理が続行されます。例えば"-c 10"と指定すると、条件に合致した10個のパケットを取得しますが、実際には100個以上のパケットが処理される可能性があります。
-i interface:tcpdumpが監視するインターフェースを指定します。このオプションが指定されない場合、システムからループバックインターフェースを除く最も小さい番号の構成済みインターフェースが自動的に選択されます。'any'キーワードを使用するとすべてのネットワークインターフェースを対象とします。
-n:アドレスを数値形式で表示し、ホスト名解決を行いません。
-nn:ポート番号を数値形式で表示し、サービス名ではなく数値そのものを表示します。
-N:ホスト名のドメイン部分を表示しません。例えば'tcpdump'は'nic.ddn.mil'ではなく'nic'と表示されます。
-P:キャプチャするパケットの方向(流入、流出、両方)を指定します。指定可能な値は"in"、"out"、"inout"で、デフォルトは"inout"です。
-s len:キャプチャするパケットの長さをバイト単位で指定します。指定しない場合、デフォルトで65535バイトになります。大きなパケットをキャプチャする場合、長さが不十分だとパケットが切り捨てられ、出力行に"[|proto]"のマークが表示されます(protoには実際のプロトコル名が表示されます)。しかし、長さを長くするとパケット処理時間が長くなり、tcpdumpが保持できるパケット数が減少するため、パケットロスの原因となります。

出力オプション:
-e:各行にデータリンク層のヘッダ情報(ソースMACと宛先MAC)を含めます。
-q:簡潔な出力形式で、プロトコル関連情報を最小限に表示します。
-X:パケットヘッダデータを16進数とASCIIの両方で出力します。
-XX:パケットヘッダデータを16進数とASCIIの両方で、より詳細に出力します。
-v:解析と印刷時に詳細な出力を生成します。
-vv:-vより詳細な出力を生成します。
-vvv:-vvよりさらに詳細な出力を生成します。

その他の機能オプション:
-D:キャプチャに使用可能なインターフェースを一覧表示します。インターフェースの数値番号と名前が表示され、いずれも"-i"オプションで使用できます。
-F:ファイルからキャプチャ式を読み込みます。このオプションを使用すると、コマンドラインで指定された他の式は無視されます。
-w:キャプチャデータを標準出力ではなくファイルに出力します。"-G time"オプションと組み合わせると、time秒ごとに自動的に出力ファイルが切り替わります。"-r"オプションでこれらのファイルを読み込み、分析や印刷が可能です。
-r:指定されたパケットファイルからデータを読み込みます。"-"を指定すると標準入力から読み込みます。

tcpdumpでのパケットキャプチャ

# s1-eth1インターフェースでのフローをキャプチャ
tcpdump -enn -vvv -i s1-eth1
# s1-eth1インターフェースでのフローをファイルに保存し、後でWiresharkで分析
tcpdump -enn -vvv -i s1-eth1 -w tcpdump.pcap

キャプチャファイルの分析

生成されたtcpdump.pcapファイルをローカルにダウンロードし、Wiresharkツールを使用してフローを分析します。

タグ: tcpdump ネットワークキャプチャ パケット分析 mininet

6月2日 17:00 投稿