Q:ネットワーク問題をデバッグしようとしています。パケットトレースを取るにはどのようにすればよいですか?A:これを行うツールがいくつかあります。以下に、アルファベット順に紹介します。
EtherPeekEtherPeek は、従来の Mac OS、Mac OS X、および Windows で複雑なパケット解析ができる市販のアプリケーションです。
EtherealEthereal は、Mac OS X に移植されたオープンソースのパケットアナライザです。
FrameSeerFrameSeer は、tcpdump(下記参照)を非常に洗練された GUI でラップするシェアウェアのパケットアナライザです。
Interarchyこの市販製品には、高度なアプリケーションデベロッパ向けのトラフィックモニタリング機能が含まれています。
NetMinder同じく市販のパケット解析ツールで、従来の Mac OS と Mac OS X に対応しています。
tcpdumpこれはコマンドラインツールで、Mac OS X のすべてのバージョンに含まれているほか、他の多くの UNIX プラットフォームでも利用可能です。使い始めるにはまず次のコマンドを試してください。
sudo tcpdump -i en0 -s 0 -w DumpFile.dmp
以下に、コマンド行の個々の構成要素について説明します。
sudo コマンドにより、tcpdump を権限付きで実行します。無制限アクセスのためにこれが必要になります。
-i en0 オプションは tcpdump に、最初の Ethernet インタフェースのパケットをキャプチャするように伝えます。デフォルトのインタフェースはないため、必ず選択する必要があります。インタフェースのリストを見るには、ifconfig -a と入力します。Mac OS X 10.1 以降では、PPP パケットのキャプチャもサポートしているため、ここでも PPP インタフェースも指定できます(たとえば、-i ppp0)。
-s 0 オプションは、最初の 68 バイトだけでなく、パケット全体を要求します。
-w DumpFile.dmp パラメータは tcpdump に、パケットを DumpFile.dmp という名前のファイルにダンプするように伝えます。
このコマンドに応えて、tcpdump はパケットのキャプチャを開始し、DumpFile.dmp ファイルに出力します。キャプチャを終了するときは、^C を入力して tcpdump を中断します。 その後は、次のコマンドを使って、パケットの内容をテキストとして表示できます。
tcpdump -s 0 -n -e -x -vvv -r DumpFile.dmp
以下に、新しく出てきたコマンドラインの要素について説明します。
-n オプションは、アドレスをドメイン名に変換しないことを意味します。 これは大幅な高速化につながります。
-e オプションを使うと、tcpdump はパケットごとにリンクレベルのヘッダを表示します。
-x オプションを使うと、パケットの内容も 16 進数で表示されます。
-vvv オプションは、tcpdump の出力を可能な限り詳細なものにします。
-r DumpFile.dmp オプションを指定すると、パケットをネットワークインタフェースからではなく、ファイル DumpFile.dmp から読み取るように tcpdump に伝えることになります。これを行うのに権限は必要ないため、sudo を使って tcpdump を実行する必要はありません。
これらを、次のように組み合わせることもできますが、こうすると、キャプチャしたパケットの厳密な記録は得られません。
sudo tcpdump -i en0 -s 0 -n -e -x -vvv
tcpdump の学習資料としては、オンラインマニュアルと、「TCP/IP Illustrated, Volume 1, The Protocols」(W. Richard Stevens 著、Addison-Wesley、1994年、ISBN 0-201-63346-9)があります。 この本は、TCP/IP プロトコル全般の概論としても非常に優れています。
注意: サードパーティのサイトとその製品についての記述は、情報提供のみを目的としたものであり、保証や推奨をするものではありません。アップルでは、これらのベンダーや製品の選択、性能、使用について、いかなる責任も負わないものとします。
その他の特記事項これらのツールのいくつかは、トレースマシン(ツールを実行するマシン)との間でパケットを送受信しているとうまくいかないことがあります。一般に、トレースマシンは、ネットワークトラフィックをトレースする対象のマシンとは別にすることをお勧めします。そうしなかった場合には、次のような点に注意してください。
正確な情報、最新の情報および制限事項については、ツールに付属するドキュメントを参照してください。
独立のトレースマシンを使う場合は、スイッチではなく、パッシブハブを使ってすべてのマシンを接続する必要があります。10/100 のほとんどは実際にはスイッチであるため、古い機器が放り込んである箱をほじくり返して 10 メガビット/秒専用のパッシブハブを探す(または、たとえば、SMC-EZ58xxDS レンジなど、速度の異なるセグメント間だけでスイッチングする 10/100 ハブを探す)必要があるでしょう。
パケットトレースを DTS に送る場合は、以下を含めてください。
パケットトレースのキャプチャに使ったツールの名前とバージョン。
トレースマシンのシステムのタイプと OS のバージョン。
EtherPeek または tcpdump のどちらかを使ってパケットトレースをキャプチャした場合は、パケットトレースファイルをネイティブフォーマットで送信してください。それ以外の場合は、ネイティブフォーマットのパケットトレースのコピーと、ネイティブフォーマットがテキストでない場合は、テキスト形式でエクスポートしたデータの両方を含めてください。これが、お送りいただいたパケットトレースをアップルで確実に読める方法です。
トレースに示されている関連マシンごとに、以下について記述してください。
ドキュメントの改訂履歴| 日付 | メモ |
|---|
| 2004-07-13 | FrameSeer に関する情報を追加。テキストを TNT に変換し、書式とリンクの問題を修正。 | | 2002-08-08 | 新規ドキュメント |
掲載日: 2004-07-13
|