[Network] | |||||||||||
netcapコマンドでネットワーク・パケットをキャプチャする
|
|||||||||||
|
解説 |
ネットワークに関するトラブルが発生した場合、トラブル・シューティングの方法にはさまざまな手段がある。だが、最も確実で素早く原因を特定し、対策を行うことができる手法としては、ネットワーク・ケーブル上を流れるパケットをキャプチャしてそれを解析するという方法があげられるだろう。例えば通信ができなくなった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 /? ……使い方を表示させる
↓↓↓ここから下は環境ごとに異なったものが表示されている
…最初のイーサネット
…2つ目のイーサネット
…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 …インターフェイスを指定してキャプチャを開始する
|
netcapを実行すると、初回だけは「Installing the Network Monitor dirver」というメッセージが表示されることがある。これは、システムに「ネットワーク モニタ ドライバ」というキャプチャ用のエージェントをインストールしているというメッセージである。各ネットワーク・インターフェイスのプロパティ設定において、ユーザーがすでに手動でこのドライバをインストールしている場合は表示されないが、そうでない場合は、netcapコマンドが自動的にインストールを行ってくれる。このエージェントを削除するには、「netcap /remove」を実行すればよい。
キャプチャしたファイルは、ネットワーク・モニタなどのプロトコル・アナライザを使って解析すればよい。例えば次のようになる。
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アドレスなど)とのやりとりや、パケット中の特定の位置に、指定された値が含まれるパケット(つまり特定のプロトコル)のみに限定してキャプチャすることができる。
この記事と関連性の高い別の記事
- ネットワーク・モニタのキャプチャ・フィルタを利用する(TIPS)
- ネットワーク・モニタ3.1を使う(基本編)(TIPS)
- Windowsでアクティブウィンドウだけをキャプチャする方法(TIPS)
- ネットワーク・モニタでコンピュータ名を定義する(TIPS)
- Windowsタブレットで画面キャプチャを取る(TIPS)
このリストは、デジタルアドバンテージが開発した自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
「Windows TIPS」 |
- Azure Web Appsの中を「コンソール」や「シェル」でのぞいてみる (2017/7/27)
AzureのWeb Appsはどのような仕組みで動いているのか、オンプレミスのWindows OSと何が違うのか、などをちょっと探訪してみよう - Azure Storage ExplorerでStorageを手軽に操作する (2017/7/24)
エクスプローラのような感覚でAzure Storageにアクセスできる無償ツール「Azure Storage Explorer」。いざというときに使えるよう、事前にセットアップしておこう - Win 10でキーボード配列が誤認識された場合の対処 (2017/7/21)
キーボード配列が異なる言語に誤認識された場合の対処方法を紹介。英語キーボードが日本語配列として認識された場合などは、正しいキー配列に設定し直そう - Azure Web AppsでWordPressをインストールしてみる (2017/7/20)
これまでのIaaSに続き、Azureの大きな特徴といえるPaaSサービス、Azure App Serviceを試してみた! まずはWordPressをインストールしてみる
|
|