Wireshark の使い方

これからパケットキャプチャを使ってトラブルシューティングをする向けに記事を書いてみました。トラブルシューティングをしないまでも、客先に行きパケットを取得してきてくださいと言われる方も多くいるように思い記事にしました。今まで、ただパケットを取得していた方にも興味を頂ければと思います。

# Wireshark を使う
## 利用準備
0. インストール
    0. [公式ホームページ](https://www.wireshark.org/)にある Download をクリックする。
    1. 環境に合わせたインストーラーをクリックしてダウンロード。
    2. ひたすら[NEXT]を連打。インストールが完了するのを待つ。
0. 端末をネットワークに接続に接続する。
    0. パケットを取得するために必要な準備が整っている環境へネットワーク接続する。
       * 有線であれば、ポートミラーリングされたL2SWやリピーターハブにLANケーブルで接続する。
       * 無線であれば、Windows は無線LANのプロミスキャスモードができないため、Windows で解析必要なアダプターなどの製品が手ごろになければ、Mac OS の機材を探してくる。Mac OS の機材が見つかれば Wireshark をインストール。解析する対象の無線LANのチャンネルに接続する。         

## Wireshark を使ったパケットキャプチャ
0. Wireshark を起動させる。
0. パケットキャプチャする準備をする。
    0. 解析対象となるネットワークに接続しているインタフェースに通信が発生しているか赤枠を確認し、青枠で囲った歯車のマークをクリックする。
    ![IMG2017030100.png](https://qiita-image-store.s3.amazonaws.com/0/54900/14bcb9d8-8c51-2cd2-5a8e-7cf87d4093b0.png)

    0. インタフェースの設定を確認する。
    インターフェースの設定を必要に応じて設定を見直す。
    ![IMG2017030101.png](https://qiita-image-store.s3.amazonaws.com/0/54900/714acf75-57cf-835b-36ae-d8741570f573.png)

        [注意] 無線やポートミラーリング利用しているときは、自分以外に来たパケットも受けられるようにプロミスキャスモードになっているか確認する必要があります。
        [注意] 無線の場合、ネットワークインタフェースのほうでもプロミスキャスモードが有効になっているか確認する必要があります。

    0. キャプチャ中の設定を確認する。
    ![IMG2017030102.png](https://qiita-image-store.s3.amazonaws.com/0/54900/34d10bbe-34d0-22c0-4e3c-898371184244.png)

        [注意] フィルタリングした上でリアルタイムでパケットを追いかけるような行為をする場合は、実時間でパケット一覧を更新、キャプチャ中に自動スクロールなど設定するとよいでしょう。
        [注意] 大量のパケットをお客様先で取得してきてくださいと言われた場合はオプションを外したほうが良いかもしれません。そういった場合、途中でパケット採取が Wireshark のほうで終了されており、目的の通信を閲覧できない可能性があります。

    0. ネットワークインタフェースを選ぶ。
    先ほどの画面に戻り、赤枠で示したネットワークキャプチャするインタフェースをクリックする。
    ![IMG2017030104.png](https://qiita-image-store.s3.amazonaws.com/0/54900/5a6497e8-8693-488b-dd6c-fa524f62440e.png)

0. キャプチャの実施する。
    0. キャプチャの開始する。
    青枠の開始のボタンをクリックする。
    ![IMG2017030104.png](https://qiita-image-store.s3.amazonaws.com/0/54900/5a6497e8-8693-488b-dd6c-fa524f62440e.png)
    0. キャプチャしながらパケットを閲覧する。
    ![IMG2017030105.png](https://qiita-image-store.s3.amazonaws.com/0/54900/4ed8a902-1a16-0983-976f-a55c2d2fcd62.png)
    0. キャプチャの停止
    赤枠内の赤い■のボタンをクリックする。
    ![IMG2017030106.png](https://qiita-image-store.s3.amazonaws.com/0/54900/22d4763c-9a44-9d1b-3fca-8049e499cb16.png)
    0. キャプチャしたパケットの閲覧する。
    青枠内をスクロールしながら怪しいパケットがないか探し始める。
    ![IMG2017030106.png](https://qiita-image-store.s3.amazonaws.com/0/54900/22d4763c-9a44-9d1b-3fca-8049e499cb16.png)
   [注意] どのような通信がされているか確認したい場合は、フィルタをかけるのもよいと思います。

# 通信解析の基本
## プロトコルを知る
OSI参照モデルや RFC で基本的なプロトコルのことを知り、キャプチャした場所で、プロトコルの通りに通信できているか確認することが基本的な解析の仕方になります。基本的なことを知るには、一次ソースがよいので RFC とかになるかと思います。 RFC読むの厳しい！英語わからない！といった方は、以下の書籍やWebページで基本的なことはわかるかと思います。昔は4000円~5000円程度でガチガチの技術書で神保町を徘徊しなければ手に入りにくい書籍も、最近は技術者でもなくてもわかりやすい絵本のような本が街の本屋で買えて値段もお手ごろです。

## おすすめの書籍＆Webページ
* イラスト図解式 この一冊で全部わかるネットワークの基本
* イラスト図解式 この一冊で全部わかるサーバーの基本
* [3分間 NetWorking](http://www5e.biglobe.ne.jp/aji/3min)
* [ネットワークエンジニアとして Network Study 1](http://www.infraexpert.com/study/)

## 解析開始
ここから書くことは我流であるため、他にいい方法などある方は教えてください。
### 0.  問題のあると申告のあったアプリケーションや機能で利用する通信の仕様を確認
問題が発生しているという申告には、以下のパターンが考えられます。

  * アプリケーションやシステムの不具合や設定ミス
  * アプリケーションやシステムの仕様との環境のミスマッチ
  * 通信環境の不備
  * 申告内容に問題はない

いずれの場合も正常な通信の場合を知っておけば、通信の間違い探しになります。
従って、初めにアプリケーションや基本的なプロトコルを確認し、想定される通信の大まかな流れを把握しておきます。

### 1. パケット採取の計画
基本的な通信を把握したら、パケット最終する場所を決めるために通信が流れる場所について、軽いポンチ絵を書きましょう。軽いポンチ絵をかいて、IPアドレスや無線状況などを、「黒」のペンで書き足していき、その上へプロトコル毎に色を分けて、通信単位で番号を割り振りネットワーク図のようなものを書きます。
この問題が発生しているという申告の状況で発生しうることは、このポンチ絵で想定できるため、必要な箇所でのパケット採取と発生させる通信を検討します。

### 2.問題のあると申告のあった通信のパケットの採取
問題が発生している現場に行き、計画通りにパケット採取を開始します。
しかし、実際の現場に行くといくつものトラブルに直面します。

よくある事としては、

 * 解析用の端末がネットワークに接続できない
 * ミラーリングの設定が入っていない
 * パケット採取する時間が短く目的のパケットが取得できない

前述したパケット採取の計画に沿って必要なパケットを採取することが望ましいですが、できない場合は計画を立てた人やトラブルの起きているネットワークに詳しい人を集め対策を練るとよいでしょう。

### 3.はじめは何もフィルタせず通信を俯瞰して観察
運よく目的のパケットが手に入った場合は、全体的にどんな通信があるか軽く眺めてみます。目安として右側のスクロールバーを眺めるもよし、パケットを一個ずつ追いかけるもよし、とにかく、その環境下にどんな通信が流れており問題が発生しているかイメージします。

### 4.怪しい通信をリストアップ
Wireshark は怪しい通信をしていれば黒、赤など目に飛び込んでくるような色が入っています。そのほかにも利用しているアプリケーションの過去バージョンの不具合などイメージして、Wireshark の色付けルールに追加するなどもよいいでしょう。
ざっくり言えば、

* 黒色 悪い通信！
* 赤色 なんかおかしくね？
* 灰色 通信完了！

上記のような感じです。この他にも統計や分析といった便利な機能があるので、さくっと解析したい！というならば、これらを利用するものよいでしょう。

###  5. 通信の仕様と照らし合わせ時系列に通信の問題を並べ、報告書を作成する
ここまでくれば、大体の通信のイメージができてると思うので、申告のあった問題内容と照らし合わせ時系列に通信を並べて、機能未達となりそうな候補を洗い出しておきます。
なぜ通信がおかしいのかテキストファイルでもよいので、報告書を作成しておきます。このときは具体的にどのような通信が本来どうあるべきか記載するとよいでしょう。報告書が書き終わったら、各部署の担当者に共有し一緒に何が起きているのかレビューすると問題解決の糸口につながることでしょう。