運用
|
|
|
ネットワークのトラブルシューティングなどの目的で、ある特定のパケットだけをキャプチャしたいということがある。例えば、特定のTCPポートへの接続要求だけとか、特定のプロトコルの使用だけをキャプチャ・解析したいのだが、いつ、そのパケットが発生するのかが事前には分からないので、キャプチャするのが難しいといった場合である。いつ起こるか分からない現象をネットワーク・モニタでキャプチャするためには、いくつかの方法がある。非常に大きなバッファを用意して長時間キャプチャし続けるか、その特定のパターンを持つパケットだけをキャプチャするようにネットワーク・モニタを構成するか(「フィルタリング」という)、特定の事象が起こった時点でキャプチャを停止させるか(「トリガ」という)、の3つである。ここでは、フィルタリングの使い方について解説しておく。
「フィルタリング」とは、ある特定の条件を満たすパケットだけをキャプチャしたり、キャプチャした多数のパケットの中から特定の条件を持つものだけを選択して表示させる機能である。ネットワーク・モニタでは、キャプチャのときと、パケットの解析・表示のときに、それぞれフィルタを設定することができる。ただし、キャプチャの際にはフィルタ処理でシステムにあまり負荷を与えるわけにはいかないので(複雑な処理を行ってCPUの負荷が高くなると、キャプチャの取りこぼしが発生する可能性があるから)、簡単なパターン・マッチングといった、非常に限定的な機能しか利用できない。これに対して、表示時のフィルタ処理は、特に処理時間の制約はほとんどないので、より複雑なフィルタ処理を行うことができる。
キャプチャ・フィルタの設定
キャプチャ時にフィルタを設定するためには、キャプチャのツール・バー上にある、[キャプチャ フィルタの編集]ボタン(「じょうご」の形のボタン)をクリックする。
キャプチャ・フィルタにおけるプロトコル指定では、あるプロトコルが含まれているか/いないか、のどちらかしか指定できない。例えばIPプロトコル(ETYPE=0x0800)を選択すれば、TCP/IPv4のプロトコルはすべてキャプチャするが、それ以外は一切キャプチャしなくなる。だが、TCPの80番のポートに向けた通信だけキャプチャしたいといった、(上位)プロトコル中の特定のフィールドやフラグに基づいたフィルタリングは行えない。このプロトコル指定では、イーサネットのタイプ・フィールド(ETYPEもしくはSAP)に基づいた、非常にラフな分類でしか、フィルタ条件を指定することができないのである。より細かくフィルタリングしたければ、以下の「パターン・マッチング」を利用する。なお、イーサネットのパケット(フレーム)の構造については、別連載の「基礎から学ぶWindowsネットワーク第11回―MACアドレスを解決するARPプロトコル」や「詳説 TCP/IPプロトコル第7回―3.イーサネットのフレーム・フォーマット」なども参照していただきたい。そこでも述べているように、イーサネットのパケットの構造としては、DIX形式とIEEE802.3形式の2つが存在する。例えば、TCP/IPはDIX形式を使うのが一般的であるが、NetBEUIやNetWareのIPX/SPXなどはIEEE802.3形式を使っている。「ETYPE」とは、DIX形式におけるプロトコル・タイプ・フィールドを指し、「SAP」とは、IEEE802.3形式におけるプロトコル・タイプ・フィールド(正確にはDSAPという、サービス・タイプを規定するためのフィールド)を指している。
上のダイアログで、[パターン マッチ]の行をダブル・クリックすると、次のような画面が表示される。
パターン・マッチングの指定 | ||||||||||||
これはTCPのSynフラグを持つパケットだけをキャプチャする例。TCPのフラグは、イーサネット・パケットの先頭から0x02f bytes目の位置にあり、その内容が0x02ならば、Sフラグだけがセットされた状態を意味する。 | ||||||||||||
|
このダイアログは、パケット中の特定のバイト位置を指定して、そこに含まれる値がマッチするかどうかを指定するためのものである。この例では、パケットの先頭から(イーサネットの先頭から数えて)0x2f bytes目のバイトの値が「0x02」であるという条件を指定している。このオフセット位置には、TCPヘッダのフラグ・フィールドが置かれており、その値が2であるということは、「S」フラグだけがセットされた状態を表している。つまり、TCPプロトコルにおける接続開始要求のパケット(クライアントからサーバ側に最初に送られるTCPパケット)を表している。これにより、TCPの接続要求だけをキャプチャすることができる(プロトコル・フィールドには「IPプロトコル(ETYPE=0x0800)」という条件を設定しておくこと)。
以上のように、キャプチャ時にフィルタを利用することもできるが、その使い方は煩雑で、制約も多いので、実際には、キャプチャ時にはフィルタなしですべてのパケットを取り込んでおき、解析のときにフィルタを利用するのがよいだろう。ただし、SMS版のネットワーク・モニタでは、デフォルトではほかのコンピュータ同士のトラフィックもすべてキャプチャしてしまうので、簡単なアドレス限定のフィルタをかけて、必要なパケットだけに限定してキャプチャするのもよい。
なお、各プロトコルごとのヘッダの構成や、どのフィールドにどのような値が入っているかを調べるには、キャプチャしたパケットを詳細表示させて、16進ダンプの内容を調べればよいだろう。
INDEX | ||
[運用]ネットワーク・プロトコルの理解と検証 | ||
第2回 ネットワーク・モニタのフィルタ機能を使う | ||
1.ホスト名の編集 | ||
2.キャプチャ・フィルタの使い方 | ||
3.表示フィルタの使い方 | ||
運用 |
更新履歴 |
【2003/08/20】イーサネットのフレーム・タイプ(ETYPE/SAP)に関する情報を追加しました。 |
- 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をインストールしてみる
|
|