Wireshark 初心者向けの情報をまとめてみました。Wireshark に関して何か知りたい初心者はお気軽にコメント下さい。
インストーラのダウンロード&インストール
ダウンロードページは以下です。
以下の Stable Release から OS の種類に応じて適切なものをダウンロードします。
インストールは道なりで OK です。ひたすら Next を押していきましょう。途中で Npcap のインストールも促されますが、これも必要ですのでインストールします。
インストール後に再起動は要求されますが、再起動しなくても使えるようです。
接続方法 (パケットキャプチャ開始方法)
インタフェースをダブルクリックすることでパケットキャプチャが開始されます。
どのインタフェースを選択すればよいか迷うこともあるかと思いますが、通信量を示す折れ線グラフが表示されるので、これを元に選べばまあ間違えないでしょう。
以下の例だと「Wi-Fi」で通信が発生していることが分かりますのでこれをダブルクリックします。Adapter for loopback traffic capture は自分宛 (127.0.0.1 等) のループバックインタフェースですのでこれは違います。
キャプチャできない場合
インタフェースを間違えている可能性が高いです。何もせずに「開始」ボタンだけ押すと、インタフェースのリストの一番上にあるインタフェースでキャプチャを開始しますが、たいてい狙ったインタフェースではないケースが多いです。
前述の通り、インタフェースをダブルクリックしてキャプチャを開始しましょう。
表示画面の見方
シーケンス番号
パケットをキャプチャした順番を表示。
時間
デフォルトでは最初のパケットをキャプチャした時間を 0 としてそこからの秒数を表示。
送信元IP/宛先IP
そのまんま
プロトコル
『Wireshark が理解できる最上位のプロトコル』を表示。
サイズ
キャプチャしたパケットの Byte 数を表示。
情報
『Wireshark が理解できる最上位のプロトコル』の解析概要を表示。
パケットの各レイヤーのサマリ
選択したパケットの各レイヤプロトコルの解析概要を表示。上図では『シーケンス番号:659』のパケットを選択したときの例を表示。
バイナリ表示領域
選択したパケットのバイナリ bit 列を表示。上図では『シーケンス番号:659』のパケットを選択したときの例を表示。
アスキー表示領域
選択したパケットのアスキーの印字可能文字を表示。それ以外は dot (.) で表示される。ネットワークプロトコルの中には http や smtp 等、アスキー文字列のみを利用するプロトコルも多く、この領域では人間が理解しやすい形に表示してくれる。
時間表示の変更
「表示」の「時刻表示形式」から「日時」を選択すると、キャプチャした時刻を表示できます。
基本操作
フィルタ
デフォルトだと全ての通信が表示されます。全体的におかしなところが無いかを確認するのであればこの見方で良いですが、具体的に確認したい通信があるのであればフィルタを使って絞ります。
例えば dns とか http に絞れば、その通信だけが表示されます。
ただし、これだと例えば HTTP の最初の TCP syn や TCP FIN, TCP RST 等の TCP 関連の制御パケットは表示されません。
もし TCP コネクション単位で表示したいのであれば対象コネクションの送信元 TCP port番号で絞ると良いでしょう。例えばフィルタに tcp.port == 10281 と書けば、このコネクションだけ表示されます。
その他のフィルタ方法、フィルタテクニックについてのより詳細は以下を参照下さい。
フィルタしたパケットだけを保存
キャプチャしたファイルをベンダサポートなどに送るときなど、必要なパケットだけを切り出して送りたい、ということがよくあるかと思います。そんなときは以下の手順で実現できます。
「ファイル」⇒「指定したパケットをエクスポート」をクリック
すると以下の画面が表示されるので、[All packets] と[Displayed] が選択されているのを確認し、名前を付けて保存すれば OK です。
テキストや CSV で出力するには
pcap はバイナリ形式なのでテキストエディタでの確認や編集はできません。ですが以下の手順でパケットキャプチャをテキスト出力や CSV 出力ができます。
「ファイル」⇒「エキスパートパケット解析」⇒「プレインテキストとして...(T)」または「CSV形式として」をクリック
色表示について
パケット一覧の画面にパケットの種類に応じて色が付いています。これはよく流れるプロトコルや注目すべきパケットを見やすいようにプリセットされています。
ルールは「表示」⇒「色付けルール」で表示できます。
すると以下の画面が表示されます。ここでルールの編集や追加も可能です。
関連パケット(要求/応答やTCPセグメンテーションのreassemble)
例えば DNS はクライアントからクエリを投げるとサーバから応答が来るものです。Wireshark では特定パケットを選択した場合、関連性のあるパケットを左端に表示してくれます。
以下の例では DNS の応答パケットを選択したときに、クエリパケットがどこにあるかを表示しています。
また、大きなファイルをダウンロードする場合などはパケットが MTU の値を超えないよう、TCP セグメンテーションが行われます。(IP フラグメンテーションではないので注意。そもそも最近では IP フラグメンテーションはほぼ観測されません。)
このような場合もどのパケットがセグメンテーションされているかを左端に表示してくれます。以下の例では No.697 のパケットを選択したときの表示です。No. 693 - 696 が TCP セグメンテーションで分割されたファイルであることを示しています。
最後のパケット (上の例では No.697) を選択すると TCP レイヤで、[ 5 Reassembled TCP Segments ] と表示され、そこにもどのパケットが分割されているかが分かります。
さらに言うと、Wireshark では最後のパケットでは結合した結果を表示してくれます。最後のパケットを見たいときはやはり左端を見ます。最後のパケットだけに点が付きます。以下は No.694 のパケットをクリックして選択したときの例です。No.697 に点が付いています。
TLS はそのままでは見られない!
TLS は暗号化されているため、TLS より上位のプロトコル (一般にはレイヤー7プロトコル) は見えません。ですが中身を見る方法もあります。詳細については以下を参照してください。
通信量解析・統計情報
Wireshark にはパケットを統計情報に集計してくれる機能があります。DHCP や DNS 等のプリセットされたものがいくつかあります。今回の例では IPv4 パケットの送信元/宛先でどのくらいのパケットが流れているかを見てみます。
「統計(S)」⇒「IPv4 Statistics」⇒「All Addresses」をクリックします。
すると以下の画面がポップアップします。どの IP アドレスの通信が何パケットあったかが『Count』に表示されます。
Web サーバのトラブルシューティング・切り分けの例
例として Web サーバの通信障害時の確認ポイントを見てみます。
- DNS の名前解決は問題ないか?DNS 応答が戻ってこないのは DNS サーバの問題と考えられるが、そもそも DNS クエリが飛ばない場合はプロキシ設定をしているケースも考えられるのでその場合はプロキシサーバ⇒Webサーバの切り分けに切り替える。
- http のリクエストに対して、応答は正しく戻ってくるか?
- ステータスコードが 200 OK なら問題なし。それでも問題だというなら Web サーバ構築者に確認。
- 途中経路の IP から ICMP が返ってくる場合はネットワークの問題。ICMP のメッセージ種類から想定される原因を推定する。
- Web サーバから ICMP が返ってくる場合 (Web サーバに Ping ではなく http の応答として ICMP エラーが返ってくることがある) は Web サーバの NW 設定が怪しい。Web サーバ上でポートが開いているかを ss コマンドで確認したり、firewalld や iptables の設定に問題が無いか、等を確認する。
- 何も返って来ない (http レスポンスも ICMP も返って来ない) 場合はネットワークかサーバのどこかで通信をドロップしているので tcptraceroute 等で調査をする。
- http ステータスコードの 400 番台や 500 番台が返ってくる場合は Web サーバの NW 以外の設定と判定できる。
【厳選 3 冊】パケットキャプチャを学ぶための本
パケットキャプチャ関連でお奨めの本を 3 冊紹介します。どれも私のサイトからの購入率が高いものです。
追加: "title": "パケットキャプチャの教科書",
削除:
現場での利用方法や具体的なトラブルシュート方法など、現場で活用できる技が豊富に記載されています。サンプルのキャプチャファイルを実際に見ながら学べるので初心者にも分かり易く学べます。
無線を見える化し、セキュリティやトラブルシュートを行うためのノウハウが豊富に記載されています。無線LANのエンジニアなら必携です。
あなたが成長の日々を歩めますように。
コメント