PR

第2回 tcpdumpを使いこなす!

tcpdumpで使用できるコマンドオプション

 TCPDUMP(http://www.tcpdump.org/)、MicroOLAP TCPDUMP for Windows(http://www.microolap.com/products/network/tcpdump/)で共通で使用できるコマンドオプションは以下の通りです。

tcpdump [-adeflnNOpqRStvxX][-c count][-F file]
[-i interface][-r file][-s snaplen][-T type][-w file]
[expression]

 ここでは、これらのうち、tcpdumpでよく使用されるコマンドオプションについて記述します。

 1つ目が-lです。-lオプションは、tcpdumpの出力結果をパイプ(|)を通じてほかのプログラムへ渡す際に必要となるオプションです。

 2つ目が-nです。tcpdumpは、デフォルトの状態ではホストのIPアドレスやポート番号を名前に変換して出力しようとします。-nオプションを指定するとそれらの名前への変換が行われず、IPアドレスやポート番号のまま出力されるようになります。

 3つ目が-xです。tcpdumpは、通常は各プロトコルのヘッダ情報のみを出力しますが、-xオプションを指定するとすべてのパケットの内容を出力するようになります。-xオプションは、パケットの内容を16進数で出力します。これに対して、-X(大文字)オプションはパケットの内容を16進数に加えてASCII文字でも出力します。パケットのデータ部分の内容を確認したいときに使用されます。

コマンドオプションの使い方

 4つ目が-cです。-cオプションは、[-c <count>]で出力するパケット数の上限を指定するためのオプションです(<>内は任意の値、また指定時に<>は不要、以降のオプションについても同様)。-cオプションが指定された場合、tcpdumpは<count>で指定した個数のパケットの情報を出力するとプログラムを終了します。

 5つ目が-iです。-iオプションは、監視するNetwork Interface Card(以下、NIC)を指定するためのオプションです。「第1回:tcpdumpでネットワーク状況を知る!」でも述べたように、tcpdumpは一度に1つのNICしか監視しません。そのため、コンピュータに複数のNICが接続されている場合には、どのNICを監視対象にするのかを起動時に指定する必要があります。[-i <interface>]の形式で<interface>に番号(例:1、2)またはNICの名前(例:eth0、eth1)を指定します。

 6つ目が-wです。tcpdumpは、受信したパケットを解析し、解析結果を人間が確認しやすい書式に整形して出力します。しかし、-wオプションを指定するとtcpdumpは解析を行わずに受信したパケットの情報をそのまま書き出します。[-w <file>]の形式で、出力するファイルを<file>に指定します。-wオプションを指定して取得したパケット情報は、Wireshark(http://www.wireshark.org/)などのGUIベースのプログラムでも読み込むことができます。そのため、パケットの収集のみtcpdumpで行い、解析などそれ以外の作業はGUIで行うと言った使い方もできます。

 7つ目が-rです。-rオプションは、-wオプションを指定して作成されたファイルを読み込んで解析し、その結果を出力します。[-r <file>]の形式でファイルを指定します。

 8つ目が-Fです。[-F <file>]のように指定すると、tcpdumpは出力をフィルタリングするための条件式を<file>から読み込むようになります。なお、-Fオプションが指定されている場合は、コマンドラインから後述する[expression]の個所にフィルタリングの条件式を与えても無視されます。

 また出力をフィルタリングする条件式については[expression]で指定します。フィルタリングの条件式については、次ページで解説します。

この記事の著者

津川 知朗

大阪大学
大阪大学 大学院情報科学研究科。研究の専門分野はTCP/IPネットワークで、C++プログラマー。現在の主な活動としては、オープンソースソフトウエアとして、ネットワーク関連のC++ライブラリの実装、公開を行っている。http://sourceforge.jp/projects/clxcpp/ http://d.hatena.ne.jp/tt_clown/

連載「パケット解析で何がわかる?」の記事一覧