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


はじめに

  • ネットワークエンジニアの方が利用される機会が多いと思いますが、パケットキャプチャ用のオープンソースツール「WireShark」について簡単に紹介します。

パケットキャプチャとは

  • ネットワーク上の障害の原因を特定するために、ネットワーク上を流れるパケットをキャプチャして確認することです。

WireSharkとは

  • パケットキャプチャの方法の一つに、「WireShark」の利用が挙げられます。
  • Windows, Linux, Mac OSなど、多様なプラットフォームに対応しています。

WireSharkの使い方

今回は、Windows 環境で「ICMP」をパケットキャプチャした場合の例を挙げます。

インストール

  1. ダウンロードページ からインストーラ(今回は3.2.5)を取得します。
  2. インストーラを実行します。
    • 基本はデフォルトのチェックのまま、進めていけば良いと思います。
    • 「Npcap」のインストール確認について、公式ドキュメント よりパケットのキャプチャで必要ですのでインストールします。    
    • USB に対する通信もキャプチャする「USBPcap」のインストール確認について、私見では利用予定がなければインストールはスキップして問題ないです。    

パケットキャプチャ

ネットワークインターフェース の選択

  • 対象のネットワークインターフェースを右クリックし「キャプチャ開始」をクリックします。

フィルタを利用したパケットキャプチャ

  • WireShark では、プロトコルタイプ、ポート番号などを条件にキャプチャしたパケットをフィルタリングする機能があります。詳細な例は、以下の ページ にも紹介されています。今回は例として「ICMP」のプロトコルをフィルタリングします。
  1. フィルタに「icmp」を入力し適用します。  
  2. 宛先ホストへ「ping」を実行します。以下は実行例です。
  3. 対比として、宛先ホストが起動していない場合に「ping」を実行した場合は以下のようになります。
  4. パケットキャプチャは、「ファイル」メニューの下の赤枠のボタンで停止でき、左隣の青枠のボタンで再開できます。  
  5. また、「ファイル」メニューの「保存」で、拡張子が「.pcapng」のファイルにパケットキャプチャを保存できます。一旦、採取記録をバックアップし、後にWireSharkで再確認したい際に利用できます。

補足: netshの実行結果をWireSharkで読み込む場合

  • Windows 環境では、標準の「netsh」コマンドでパケットキャプチャを採取し、拡張子が「.etl」のファイルに保存できます。
C:\tmp>netsh trace start capture=yes
...
C:\tmp>netsh trace stop
  • ただ、WireSharkでは「.etl」ファイルには対応していませんので、現在は Microsoft 社が提供している「etl2pcapng」で「.pcapng」ファイルに変換する必要があります。

おわりに

  • 「WireShark」は比較的簡単に導入できますので、プライベートで特定プロトコルの仕組みを学習する際にも役立つように思います。

参考資料