ホームネットワークの解析ツール(3)
- Wiresharkで通信手順(プロトコル)を解析 -
ホームネットワーク(家庭内LAN)やインターネットでは通信データを間違いなく送信/受信するために通信手順
(プロトコル)が決められており、代表的なプロトコルとしてはTCP/IPやUDP/IPなどが使われています。
また、データを送り出すサーバ装置とデータを受信するクライアント装置(パソコン等)の間ではHTTPなどのプロトコルを用いて、
動画・画像・音楽などのコンテンツのやり取りが行われます。
動画共有サイトへ動画ファイルをアップロードする場合などは、FTPというプロトコルが使われます。
また、ホームネットワークで使われている機器間相互接続方式のDLNAは、
HTTPやTCP/IPなどの各種プロトコルを組み合わせて構成されており、
接続機器やコンテンツを自動認識して、コンテンツを確実に通信できるようにしています。
従って、通信されている情報の内容を調べることができれば、
どのようなプロトコルを使ってどのようなデータが通信されているかを知ることができ、
機器がつながらないとかコンテンツが再生できないなどのトラブルの原因を探るのに役立ちます。
ホームネットワークにおける通信手順やデータの内容を調べることができる代表的な解析用ソフトウェアとしてはフリーソフトの
「Wireshark」(旧名 Ethereal)があります。Wiresharkは「ネットワークプロトコルアナライザー」や
「パケットキャプチャ」などと呼ばれており、ネットワーク内で通信されている生のデータ(パケット)
を取り込んで(キャプチャして)その内容を解析することができます。
各種OSに対応したバージョンが用意されており、様々なプロトコルに対応していることや、
使いやすいGUI(Graphical User Interface)が使えるなどの特徴があり、
大規模なネットワークから家庭内のネットワークまで幅広く利用されています。
以下では、Wiresharkを使用して通信パケットをキャプチャし、その内容を解析する方法について紹介していきます。
- Wiresharkのダウンロードとインストール
- Wiresharkで通信パケットをキャプチャする
- キャプチャした通信パケットをWiresharkで解析する方法
Wiresharkで解析する具体的な事例としては、 DLNA対応のNAS(LAN接続HDD)に保存されているMP4動画をパソコン内のコンテンツ再生ソフト 「PowerDVD Ultra」を用いて再生・視聴した場合を取り上げて、Filter、IO Graphs、 Follow TCP Streamなどの機能を利用した各種解析方法を紹介します。
Wiresharkのダウンロードとインストール
WiresharkのダウンロードはWiresharkプロジェクトのサイトから行えます。
各種OS用のバージョンが用意されており、Windows版やMac版もあります。
Windows版では以下に掲載したようなインストールウィザード(図1)が用意されているので、
画面の指示に従って行えば問題なくインストールできます。
図1はWindows OS用の最新版(4.2.4 x64)を掲載しておきました。
また、インストールの途中で、関連するソフトのインストールウィザーが表示されてインストールすることがあります。
例として、「WinPcap」のインストールウィザードを図2に掲載しておきました。
図1 Wiresharkのインストール開始画面
図2 WinPcapのインストール開始画面
Wiresharkで通信パケットをキャプチャする
Wiresharkを起動すると以下のような初期画面(図3)が表示されますので、次の手順でパケットのキャプチャを行います。
(最初の起動画面はWiresharkのバージョンによって異なっています)
- 図3のキャプチャ部にあるグラフが変化している項目(イーサネット)をダブルクリックする。
- キャプチャ画面が表示されてキャプチャを開始する。
- 必要なパケットがキャプチャできたら、図4のように「キャプチャ」の「停止」をクリックしてキャプチャを終了する。
- キャプチャデータを保存するには、「ファイル」の「保存」をクリックする。
キャプチャが開始されると、キャプチャしているパケットデータがほぼリアルタイムで表示され続けます。
Wiresharkの最新バージョンでは、図4のようにキャプチャ画面は2段に分かれており、下段は左右に分かれていますが、
その内容は下記の通りです。
- 上段はパケット通信(フレーム単位)の時間変化をフレームNo.順に表示。
- 下段の左部分は各フレーム毎の詳細項目。
- 下段の右部分は各項目のデータ内容(16進法により表示)。
また、Wiresharkの旧バージョンでは、キャプチャ画面は3段に分かれており、上から順に
- パケット通信(フレーム単位)の時間変化をフレームNo.順に表示。
- 各フレーム毎の詳細項目
- 各項目のデータ内容(16進法により表示)
となっています。
図4、図5の上段のSourceはパケットデータを送信している機器のIPアドレスを、
Destinationはパケットデータを受信している機器のIPアドレスを示しています。Lengthがパケットデータのバイト数です。
図3 Wiresharkの起動画面(最新バージョン)
図4 Wiresharkのキャプチャ画面
図5 Wiresharkのキャプチャ画面(旧バージョン)
パケットデータの内容をWiresharkで解析する
Wiresharkでキャプチャしたパケットデータは、Wiresharkがインストールされているパソコンに入ってくるパケットと、
出ていくパケットを全て含んでいます。つまり、図5に示したキャプチャ画面の中にはインターネットを介した通信内容や、
ホームネットワーク内の各機器とのやり取りなどのデータが時間経過に沿って混在して表示されています。
従って、具体的に解析を行なっていくには、Wiresharkが備えている機能を使用して、
様々な情報の中から必要な情報を抜き出してから通信内容を調べていく必要があります。
以下では、Wiresharkを起動した後に、 パソコンにインストールしてあるDLNA対応のプレーヤーソフト「PowerDVD Ultra」を起動して、 DLNA対応のNASに保存してある動画ファイル(MP4)を再生する場合を取り上げ、 どのようなデータがやり取りされているかを調べるのに必要な解析操作を順に説明していきます。 図5に示したキャプチャ画面は、このようなケースについてキャプチャしたデータなので、 この画面の中からパソコンとNAS間の通信データだけを抽出して、その内容を調べていきます。
<注意点>
以下で紹介する図や項目はWiresharkのバージョンによって表示形態が異なっている場合がありますので注意してください。
(以下は、旧バージョンの例を紹介していますが、調べる手順等は最新バージョンでも同じです)
(1)「Filter」を利用して、パソコンとNAS間の通信データだけを表示する
パソコンのIPアドレスは「192.168.12.14」、NASのIPアドレスは「192.168.12.13」となっているので、
図5に示したキャプチャ画面の中の「Filer」部分に
ip.addr eq 192.168.12.14 and ip.addr eq 192.168.12.13
と入力して、
ApplyをクリックするとパソコンとNAS間の通信パケットデータだけを表示することができます。
この表示結果を以下に掲載しました(図6)。Sourceはパケットデータを送信している機器のIPアドレスを示しており、
Destinationはパケットデータを受信している機器のIPアドレスです。
図6 パソコンとNAS間のキャプチャデータだけを表示
(2)「IO Graphs」(入出力グラフ)を利用して、パソコンとNAS間の通信パケット量を表示する
『Statistics』(統計)をクリックしてプルダウン表示される項目の中から「IO Graphs」(入出力グラフ)を選ぶと、
通信されているパケット量の時間変化を表す画面が表示されます(図7)。
図7では、パソコンとNAS間の通信パケット量だけを表示するために、画面の中の「Filer」部分に
ip.addr eq 192.168.12.14 and ip.addr eq 192.168.12.13
と入力してあります。なお、赤色で表示するためにGraph 2の「Filter」部分に入力して「Graph 2」をクリックしました。
Wiresharkを起動してから約53秒後(53s)と約95秒の間に大量のパケットが送られているので、
この部分でMP4動画がNASからパソコンに送出されていることが分かります。
図7 パソコンとNAS間の通信パケット量の時間変化
(3)パソコンとNAS間の通信パケット量の時間変化を拡大表示する
MP4動画が送出される前のパケット量の時間変化を表示するために、縦軸(Y Axis)のScaleを変えて拡大したのが図8です。
53sよりも前に、まとまったパケットデータが何度か送られているので、この部分について次に調べていきます。
図8 パソコンとNAS間の通信パケット量の時間変化(縦軸を拡大した場合)
(4)通信パケットの内容を「Follow TCP Stream」で解析する(動画タイトル)
TCP通信では、次のような一連のやり取りでデータパケットが送られます。
[SYN]
[SYN, ACK]
[ACK]
[PSH, ACK]
[ACK]
[FIN]
そこで、MP4動画を送出する直前に送られているパケットの内容を調べるために、Infoの中から53sより前の[SYN]を見つけてクリックします。
この状態で『Analyze』のプルダウン表示の中から「Follow TCP Stream」を選ぶと、TCP通信の内容が図9のように表示され、
更に、別の画面で詳細内容が図10のように表示されます。
図10では、前半の茶色の部分がパソコンからNASに対して要求した情報を示しており、
後半の青色の部分がNASからパソコンに返した情報を示しています。
パソコン(User-Agent)のOSはWindowsで、DLNA1.5、UPnP1.0に対応しており、
NAS(Server)のOSはLinuxで、UPnP1.0に対応してDiXiM3.0を採用していることがわかります。
DiXiMはデジオン社が提供しているDLNA対応の組み込みソフトの名称です。
また、動画フォルダ内のタイトルデータが全てNASからパソコンに送られていることが分かります。
下部のアンダーライン部分が1番目のタイトル名ですが、日本語表記のため文字化けを起こしています。
図9 TCP通信の一連の流れを表示
図10 TCP通信で送信されたデータ情報
(5)通信パケットの内容を「Follow TCP Stream」で解析する(動画ファイル)
約53sから送出されているMP4動画のTCP通信について調べるために、
最初の[SYN]のフレーム(No.1583、Time 53.18)をクリックして、
「Follow TCP Stream」を選ぶと、図11のようなTCP通信のやり取りが表示され、
別画面には図12のような詳細内容が表示されます。
図11では、53.18秒に開始されたパソコン(192.168.12.14)からの要求に対して、
NASがMP4動画を1514バイトのパケットに分割して連続的に送出していることが分かります。
図12では、MP4動画をDLNAに対応したストリーミングで送出するようにNASに要求して、
NASが341716086バイト(341MB)の動画を送出していることが分かります。
図11 MP4動画をTCP通信で送信
図12 NASからパソコンに送られたMP4動画のデータ情報