Windows TIPS
[Network]
  Windows TIPS TOPへ
Windows TIPS全リストへ
内容別分類一覧へ

netcapコマンドでネットワーク・パケットをキャプチャする

解説をスキップして操作方法を読む

デジタルアドバンテージ
2003/05/17
 
対象OS
Windows XP Professional
Windows XP Home Edition
ネットワークのトラブル・シューティングでは、パケットをキャプチャして解析すれば素早く問題を解決することができる。
Windows XP Professionalでは、パケットをキャプチャするためのnetcapコマンドが利用できる。
キャプチャしたパケットはServerに付属するネットワーク・モニタなどで解析することができる。
 
解説

 ネットワークに関するトラブルが発生した場合、トラブル・シューティングの方法にはさまざまな手段がある。だが、最も確実で素早く原因を特定し、対策を行うことができる手法としては、ネットワーク・ケーブル上を流れるパケットをキャプチャしてそれを解析するという方法があげられるだろう。例えば通信ができなくなった2台のコンピュータ間の通信をキャプチャすれば、その原因が、(どちらかの事情による)タイムアウト待ちなのか、それとも接続要求が相手側から拒否されているのか、もしくはまったく異なる相手と通信しようとしているのか、などが簡単に分かるからだ。通信の内容も細かく調べることができるので、相手に渡そうとしているデータや応答の内容が不正であるなども直ちに分かるだろう。

 だがネットワークをキャプチャするためには、「ネットワーク・パケット・アナライザ」と呼ばれる専用のハードウェア、もしくはWindows OSなどの上で使用できるアプリケーションが必要となる(プロトコルに関する知識も必要であるが、それについてはここでは触れない)。Windows 2000 Serverならば「ネットワーク・モニタ」という管理ツールが付属しており、これを使ってネットワーク・パケットのキャプチャ、解析が行える。ただし自分自身のホストに対する通信(自分自身から発信されるパケットと、自分自身に向けて送信されているユニキャストとブロードキャストの通信)しかキャプチャできない。

 これに対し、Microsoft Systems Management Server(SMS)にはこのネットワーク・モニタのフル機能バージョンが含まれており(Windows 2000 Serverのネットワーク・モニタは、これのサブセットとなっている)、ネットワーク・ケーブル上を流れるほかのホスト同士の通信もキャプチャして解析することができる。ただしスイッチング・ハブを使っていると、自ホストに関係のない通信は届かないのでキャプチャすることができず、必要ならば非スイッチング・ハブ(いわゆるリピータ・ハブ)を使うなどの工夫が必要である。なおSMS版のネットワーク・モニタは、リモートのネットワークをキャプチャする機能も持っているので、必要ならばこれを使って遠くのコンピュータ上のパケットをキャプチャすることもできる。この場合、キャプチャを実際に行うコンピュータには「ネットワーク モニタ ドライバ」というエージェントを導入しておく。このエージェントは、クライアントOSであるWindows 2000 ProfessionalやWindows XP Professionalにも導入することができる。

 ネットワーク上のパケットをキャプチャして解析するためには、通常はこのような専用のアプリケーションなどが必要になるが、Windows XP Professional/Home Editionなら、パケットのキャプチャに限定すれば単体でも実行することができる。Support Toolsに用意されているnetcap.exeというコマンドを使うのである。このコマンドライン・ツールを使ってキャプチャしたパケットは、Windows 2000 ServerやWindows Server 2003のネットワーク・モニタもしくは、SMSのネットワーク・モニタ・ツールに取り込んで解析することができる。ネットワーク上の別のマシンからパケットをキャプチャするのと違って、直接そのマシンに対して送受信されているパケットを取り込むことができるので、正確にすべてのパケットをキャプチャできる。また、ネットワーク・モニタなどがインストールされているマシンがない環境や、客先などで急遽ネットワークのキャプチャを行う必要が生じた場合、telnet経由でしかシステムにアクセスできないような場合でも、このコマンドだけならば約50Kbytesと非常にサイズが小さいので、簡単にインストールして実行することができる。


操作方法

Support Toolsのインストール

 Support Toolsとは、Windows XP ProfessionalおよびWindows XP Home EditionのインストールCD-ROMにある、\SUPPORT\TOOLS中に用意されている各種の補助ツールのことを指す。この中にnetcap.exeというツールが含まれている。同フォルダの中にあるSETUP.EXEを実行すると、デフォルトでは「C:\Program Files\Support Tools」に各種ツール類がインストールされ、環境変数PATHにもこのフォルダが追加される。そのため、コマンド・プロンプトを開いてnetcapと入力すれば、すぐに実行することができる。

netcapの事前設定

 netcapを使うためには、最初に、ネットワーク・インターフェイスの指定方法とキャプチャしたデータを格納するためのフォルダの指定方法について知っておく必要がある。

 まずはコマンド・プロンプトを起動して、「netcap /?」と入力してみる。実行するフォルダはどこでもよい。これにより、netcapの使い方を示す簡単な表示が得られるが、最後の部分に注意していただきたい。この部分だけは環境ごとに異なるメッセージが表示されている。

C:\>netcap /? ……使い方を表示させる

Microsoft Network Monitor capture utility

Usage: NetCap.exe [/B:#] [/T <Type> <Buffer> <HexOffset> <HexPattern>]
                   [/F:<filterfile.cf>] [/C:<capture file>] [/N:#]
                   [/L:HH:MM:SS] [/TCF:<Folder Name>]

Example: NetCap /B:20 /N:2 /T BP 100 0a ff1f /F:d:\IPFilter.CF

/B:# - Buffer, capture size to take, from 1MB to 1000MB default is 1Mb

/T   - Trigger, stop capturing when the given buffer and/or pattern is reached
        If no trigger is given, the capture will stop when the buffer is full
        Use "/T N" to continue capturing even if the buffer fills
        Oldest frames in capture will be over written once the buffer is full
        Note: With "/T N" you will have to hit space bar to stop capturing

       <Type>      - 'B' = buffer, 'P' = Pattern, 'BP' = Buffer then Pattern,
                     'PB' = Pattern then Buffer 'N' = No Trigger

       <Buffer>    - % Buffer Size '25', '50', '75', '100' used with
                     B, BP, PB (NOT P)

       <HexOffset> - Hex Offset from start of frame used with P, BP, PB (NOT B)

       <HexPattern>- Hex Pattern to match used with P, BP, PB (NOT B)
                     The Pattern must be an even number of hex digits

/C:<Capture File> - Move temporary capture to full path and/or file name
                     This can be any valid local or remote path
                     If "/C" is not specified the capture file will remain
                     in the default temporary capture folder

/F:<filterfile.cf>- A Network Monitor 2.x generated capture filter (*.cf)

/L:<HH:MM:SS>     - Capture for given amount of time (max 99:99:99)
                     Note: This option overrides the default 100% trigger
                     unless "/T <trigger type>" is also specified

/TCF:<Folder Name>- Permanently changes the temporary capture folder
                     Warning the path must be on a fixed local hard drive
                     Once set you only need to use the switch again
                     to change the directory

/Remove           - Removes the NetCap instance of the Network Monitor driver

/N:<#>            - NIC Index number, for this computer
 ↓↓↓ここから下は環境ごとに異なったものが表示されている
Use the following index numbers for these adapters:
(default) 0 = ETHERNET (587220524153) WAN (PPP/SLIP) Interface
           1 = ETHERNET (0010DC3BF200)
…最初のイーサネット
           2 = ETHERNET (00096B8D0ADB)
…2つ目のイーサネット
           3 = IP/1394 (000000000000)
…IEEE1394インターフェイス

 最後の「Use the following ……」という部分には、ネットワーク・インターフェイスの番号とMACアドレス、インターフェイス名などが表示されている。システムに装着されているネットワーク・インターフェイスの情報やMACアドレスは、「ipconfig /all」コマンドで得ることができる。ただしこのヘルプの表示では、WANインターフェイス(仮想的なダイヤルアップ用インターフェイス。未使用時でもシステム内部には存在している)も表示されているので、ipconfigよりも多く表示されている。

 netcapではこの左端に表示されている「0」や「1」、「2」などという数字を利用してキャプチャするインターフェイスを指定する。デフォルトでは一番上の「0(この場合はWANインターフェイス)」が利用される。もしインターフェイスを明示的に指定せずにnetcapを起動すると、この場合はWANインターフェイスのトラフィックをキャプチャしようとしてしまい、何もキャプチャできないということになる。netcapを使う場合は、必ずこのヘルプ・メッセージでインターフェイスを確認し、さらにipconfig /allで表示されている結果(MACアドレス情報)と比べて、目的のインターフェイスを選択していただきたい。もし1番のインターフェイスを使うなら、netcapに「/n:1」というオプションを付ける。

 もう1つ注意する点として、キャプチャしたデータの格納フォルダの指定がある。デフォルトでは各ユーザーのTMP環境変数の場所に作成される。だがこれでは使いにくいだろうから(あとでネットワーク・モニタで解析する場合、ファイルの場所を指定するのが面倒になる)、常に固定的な場所にファイルを格納するように事前に設定しておくとよい。例えばc:\captureフォルダを使うのなら、「netcap /tcf:c:\capture」を実行して、フォルダの場所を変更しておく。この設定はユーザーごとに1回行えば、以後ずっとこの場所が利用される。

パケットをキャプチャする

 netcapの最も単純な使い方は、ネットワーク・インターフェイスを指定してnetcapコマンドを実行することである。デフォルトではキャプチャするパケットの最大量は1Mbytes分となっており、バッファがいっぱいになれば実行を終了し、コマンド・プロンプトへ制御が戻ってくる。途中でキャプチャを中断したければ、スペース・キーを押せばよい。キャプチャ中はキャプチャしたパケットの量(バッファの使用量を%で表す)が表示されており、終了時には、キャプチャしたデータを格納したファイルの名前が表示される。

C:\>netcap /n:1 …インターフェイスを指定してキャプチャを開始する

Installing the Network Monitor dirver …初回のみ表示される

(Hit space to stop) Percent Complete: 48%
(Hit space to stop) Percent Complete: 75%
(Hit space to stop) Percent Complete: 93%
…キャプチャ中のはこのようにバッファの使用量が表示される
…100%になるか、スペース・キーを押すと自動的に終了する


Total frames captured: 1376 …キャプチャしたフレームの総数

Capture file name: C:\Capture\7D35103142C121.cap …キャプチャした結果のファイル

 netcapを実行すると、初回だけは「Installing the Network Monitor dirver」というメッセージが表示されることがある。これは、システムに「ネットワーク モニタ ドライバ」というキャプチャ用のエージェントをインストールしているというメッセージである。各ネットワーク・インターフェイスのプロパティ設定において、ユーザーがすでに手動でこのドライバをインストールしている場合は表示されないが、そうでない場合は、netcapコマンドが自動的にインストールを行ってくれる。このエージェントを削除するには、「netcap /remove」を実行すればよい。

 キャプチャしたファイルは、ネットワーク・モニタなどのプロトコル・アナライザを使って解析すればよい。例えば次のようになる。

キャプチャしたパケットの解析例
これはSMSのネットワーク・モニタでキャプチャしたパケットを解析しているところ。netcapやネットワーク・モニタで使われるキャプチャ・ファイルのフォーマットは汎用的なフォーマットであり、ほかのパケット・アナライザでも利用できることが多い。
  キャプチャしたファイル。
  ローカルのマシンとのやりとりのみ(つまりローカル・マシンからの送信パケットとローカル・マシンに向けて送信されたパケットのみ)がキャプチャ可能である。

netcapのそのほかのオプション

 netcapには次に示すようにいくつかオプションがある。

■バッファ・サイズの指定
 デフォルトでは1Mbytes分しかキャプチャしないが、/bオプションを使うと、より多くのパケットをキャプチャすることができる。例えば「netcap /b:100」とすると、100Mbytesまでキャプチャすることになる。バッファ・サイズは1Mbytes単位で指定し、最大で1000(=1Gbytes)まで増やすことができる。また、「/t n」と指定すると、バッファがいっぱいになっても停止せず、古いものから順番に上書きされる。この場合は、必要なパケットをキャプチャした時点でスペース・キーを押し、キャプチャを停止すればよい。

■キャプチャの停止条件の指定
 デフォルトではバッファがいっぱいになるか、スペース・キーが押されるまでキャプチャを行うが、キャプチャ時間を指定するか、特定の条件に一致した時点でキャプチャを停止させることもできる。

 キャプチャ時間を指定するには、/l:HH:MM:SSというオプションを使用する。例えば「netcap /l:00:10:00」とすれば、10分経過した時点でキャプチャが自動停止する。

 /tオプションを使うと、ある特定のパターンに一致するパケットだけをキャプチャすることができる。詳しくはnetcap /?で表示されるメッセージを見ていただきたいが、指定する条件としてはあまり融通が利かない。次のフィルタ指定ファイルを使う方法で、必要なパケットだけをキャプチャするのがよいだろう。

■フィルタ・オプションを使った特定パケットのキャプチャ
 /fオプションで「キャプチャ・フィルタ・ファイル」を指定すると、条件に一致する特定のパケットだけをキャプチャすることができる。このキャプチャ・フィルタ・ファイルは、Windows 2000 ServerやWindows Server 2003、もしくはSMSのネットワーク・モニタ・ツールで作成可能だ。特定のアドレス(IPアドレスもしくはMACアドレスなど)とのやりとりや、パケット中の特定の位置に、指定された値が含まれるパケット(つまり特定のプロトコル)のみに限定してキャプチャすることができる。End of Article

「Windows TIPS」


Windows Server Insider フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間