ITの教科書検索
入門・発展ページ読了 約10分

Wiresharkとは ― パケットキャプチャの見方

Wiresharkとは、ネットワークを流れるパケットを記録して1つずつ見る無料のソフトです。画面の3つの区画の読み方と、表示フィルタで見たい通信だけに絞る方法を、疑似パケットで確かめます。

目次
  1. Wiresharkとは、通信の中身を一覧で見るソフト
  2. 基本の使い方:キャプチャを始めて止めるまで
  3. 画面の3つの区画
  4. パケット一覧の見方:Webページを開いたときの6パケット
  5. 表示フィルタで見たいパケットだけに絞る
  6. HTTPSの中身が読めない理由
  7. キャプチャしてよい通信
  8. 練習問題
  9. 参考にした資料

Wiresharkとは、通信の中身を一覧で見るソフト

Wiresharkは、ネットワークを流れるパケットを取得して、1つずつ詳しく表示する無料のソフトです。このように通信を記録して調べることを、パケットキャプチャと呼びます。

WiresharkはGPL(ソースコードの公開を条件とするライセンス)で公開されていて、Windows、macOS、UNIX系のOSで動きます。公式のユーザーガイドが挙げる用途は、障害調査、動作確認、プロトコルの学習などです。

Wiresharkは、パケットを観察して表示するだけのソフトで、パケットを送ったり、通信を書き換えたりはしません。不正な通信を検知して警告する侵入検知システムでもありません。

パケットの中身は、カプセル化で重ねたヘッダの順に表示されます。画面の見方と表示フィルタが分かれば、3ウェイハンドシェイクのような通信の流れを実際に確かめられます。

基本の使い方:キャプチャを始めて止めるまで

Wiresharkを起動すると、キャプチャできるネットワークインターフェース(有線LANや無線LANなど、PCの通信の出入口)の一覧が表示されます。記録したいインターフェースを選んで開始すると、パケット一覧に通信が並び始めます。

止めるときは、メニューの Capture から Stop を選ぶか、ツールバーの Stop ボタンを押します。ショートカットは Ctrl+E です。止めたあと、一覧のパケットを選んで詳細を調べます。

画面の3つの区画

Wiresharkの画面は、パケット一覧、パケット詳細、パケットバイト列の3つの区画に分かれています。一覧で1行を選ぶと、残りの2つの区画が、選んだパケットの内容に切り替わります。

パケット一覧No. Time Source Destination Protocol Infoパケット詳細▸ Ethernet ▸ IPv4 ▸ TCP ▸ HTTPパケットバイト列ac de 48 dd ee ff ac de 48 00 11 22 08 00 45 00 …1行を選ぶ欄を選ぶ
パケット一覧で1行を選ぶと、そのパケットのヘッダがパケット詳細に階層で開きます。詳細で欄を選ぶと、パケットバイト列の中で、その欄にあたる部分が強調されます。図のバイト列は、Ethernetヘッダの宛先MAC・送信元MAC・08 00(IPv4を示す値)と、それに続くIPヘッダの先頭の例です。

パケット一覧には、取得した順に1行ずつ並びます。既定の列は、安定版の4.6系では次の7つです。

列表示されるもの
No.パケットの番号。フィルタで絞っても変わらない
Timeパケットの時刻
Source送信元のアドレス
Destination宛先のアドレス
Protocolプロトコル名
Lengthパケットの長さ
Infoパケットの内容の要約

パケット詳細は、選んだパケットのヘッダを、プロトコルごとの木構造で表示します。Ethernet、IP、TCPなど、カプセル化で足されたヘッダが外側から順に並びます。欄を選ぶと、バイト列の中の該当する部分が強調されます。

パケット一覧の見方:Webページを開いたときの6パケット

次の一覧は、192.168.10.25のPCが、example.comのWebページを開いたときの最初の6パケットです。実機で取得したものではなく、説明用に作った値です。1行を押すと、そのパケットの詳細が開きます。

パケット一覧(説明用の疑似キャプチャ。1行を押すと下に詳細が開きます)
パケット 1 の詳細
Frame 1(Wiresharkが付ける記録の情報。通信のヘッダではありません)
Ethernet(データリンク層)
宛先MACアドレス
ac:de:48:dd:ee:ff
送信元MACアドレス
ac:de:48:00:11:22
上位のプロトコル
IPv4
IPv4(ネットワーク層)
送信元IPアドレス
192.168.10.25
宛先IPアドレス
192.168.10.1
上位のプロトコル
UDP
TTL
64
UDP(トランスポート層)
送信元ポート
54321
宛先ポート
53
DNS(アプリケーション層)
種類
問い合わせ
質問
example.com のAレコード

パケット1と2は、DNSの問い合わせと応答です。PCは、example.comのIPアドレスを、ゲートウェイの192.168.10.1に問い合わせます。応答の回答欄に、名前解決の結果である203.0.113.50が入っています。

パケット3から5は3ウェイハンドシェイクで、フラグの欄がSYN、SYNとACK、ACKの順に変わります。データを送り始めるのは、パケット6のGETからです。

詳細を見比べると、カプセル化の仕組みを確かめられます。パケット3の宛先IPアドレスは203.0.113.50ですが、宛先MACアドレスはルータのものです。MACアドレスは次に渡す相手を、IPアドレスは最終的な相手を指すからです。パケット4は、送信元IPアドレスがWebサーバで、送信元MACアドレスはルータになっています。

表示フィルタで見たいパケットだけに絞る

実際のキャプチャでは、一覧に大量のパケットが並びます。画面上部の入力欄に表示フィルタを入力すると、条件に合うパケットだけが一覧に残ります。

書き方絞れるもの
tcpTCPのパケットだけ
dnsDNSのパケットだけ
http.requestHTTPの要求だけ
ip.addr == 203.0.113.50送信元か宛先が203.0.113.50のパケット
tcp.port == 80送信元か宛先のポートが80のパケット
tcp.flags.syn == 1SYNフラグが立っているパケット
dns.qry.name contains "example"問い合わせた名前に example を含むDNSのパケット
ip.addr == 203.0.113.50 and tcp.port == 802つの条件を両方満たすパケット

フィルタは、プロトコル名か、プロトコル名に欄の名前をつないだ形で書きます。比較には ==、!=、contains などを使い、複数の条件は and や or でつなぎます。たとえば、上の疑似パケット一覧に ip.addr == 203.0.113.50 を適用すると、DNSの2行が消えて、サーバとのやりとりだけが残ります。

Wiresharkには、キャプチャフィルタという別のフィルタもあります。こちらは記録を始める前に指定し、条件に合う通信だけを記録します。

流れる通信記録されたパケットパケット一覧記録を絞るキャプチャフィルタ表示を絞る表示フィルタ
キャプチャフィルタを通らなかった通信は、記録されません。表示フィルタで一覧から消えたパケットは、記録には残っていて、フィルタを外せば再び表示されます。

キャプチャフィルタは、tcp port 80 and host 203.0.113.50 のように、表示フィルタとは別の文法で書きます。迷ったら、まずすべて記録して、表示フィルタで絞りましょう。

HTTPSの中身が読めない理由

HTTPSの通信を自分のPCでキャプチャしても、そのままではHTTPの要求や応答の中身は読めません。TLSがHTTPのデータを暗号化してから送るからです。

TCPの上でTLSを使う場合、暗号化されるのはTCPの上で運ぶデータで、Ethernet、IP、TCPのヘッダは暗号化されません。そのため、アドレスとポート番号はHTTPSでも一覧に表示されます。

暗号化していないDNSの問い合わせは、上の疑似パケット一覧のパケット1のように、問い合わせた名前まで読めます。暗号化の有無でキャプチャの内容がどう変わるかを比べると、暗号化の意味がよく分かります。

キャプチャしてよい通信

キャプチャしてよいのは、自分のPCの通信と、管理者から許可された環境の通信だけです。他人の通信を許可なく記録してはいけません。

職場や学校のネットワークでは、事前に管理者へ確認します。暗号化されていない通信を記録すると、メールやWebの内容がそのまま残るので、保存した記録の扱いにも注意が必要です。

通信の不調を調べるだけなら、まずpingとtracerouteやnetstat・ss・digなどのコマンドで足ります。それで原因を絞り込めないときに、Wiresharkでパケットを1つずつ確かめます。

練習問題(全5問)

Q1Wiresharkの説明として正しいものは?
Q2Wiresharkの画面で、選んだパケットのEthernet・IP・TCPの各ヘッダを、階層で開いて見る区画はどれ?
Q3送信元か宛先のどちらかが203.0.113.50のパケットだけを表示したいとき、表示フィルタの書き方として正しいものは?
Q4キャプチャフィルタと表示フィルタの違いとして正しいものは?
Q5HTTPSで通信するWebページを、自分のPCでキャプチャしました。一覧や詳細から読み取れる内容として、正しいものは?

選んでから「採点する」を押すと、解説つきで答え合わせができます。

参考にした資料

関連記事

おすすめの本 PR

ネットワークを初めて学ぶ人向けの入門書です。

目的別の本の選び方を見る

ネットワークの記事を探す