はじめに
この実験では、ネットワーク分析に不可欠なツールである Wireshark を使用して、ネットワークトラフィックをフィルタリングする方法を学びます。事前にキャプチャされたパケットファイルを分析し、表示フィルタ(Display Filters)を適用して特定のトラフィックを抽出、さらに詳細な調査のためにフィルタリング結果をエクスポートする実習を行います。これらのスキルを習得することで、ネットワークパターンの特定、接続トラブルの解決、およびネットワーク通信の仕組みの理解に役立てることができます。
Tshark の基本操作
グラフィカルインターフェース(GUI)を操作する前に、Wireshark のコマンドライン版である tshark から始めます。これは、迅速な分析やスクリプト作成に非常に強力なツールです。このステップでは、インストール状況を確認し、提供されたパケットキャプチャファイルの基本的な検査を行います。
まず、バージョンを確認して
tsharkが正しくインストールされていることを確認します。tshark --version次のように、Wireshark と
tsharkのバージョンを示す出力が表示されます。TShark (Wireshark) x.x.x (Git vx.x.x packaged as x.x.x-1) ...プロジェクトディレクトリに
capture.pcapという名前のサンプルパケットキャプチャファイルが配置されています。lsコマンドを使用して、ファイルが存在することを確認してください。ls -lh capture.pcap出力には、サイズや名前などのファイルの詳細が表示されます。
-rw-rw-r-- 1 labex labex 9.1M Oct 24 2015 capture.pcapキャプチャファイルの全体的な概要を把握するために、Wireshark に付属している
capinfosユーティリティを使用します。capinfos capture.pcapこのコマンドは、パケット数、キャプチャ時間、平均パケットサイズなどのメタデータを提供します。
File name: capture.pcap File type: Wireshark/tcpdump/... - pcap File encapsulation: Ethernet File timestamp precision: microseconds (6) Packet size limit: file hdr: 65535 bytes Number of packets: 14 k File size: 9444 kB Data size: 9216 kB Capture duration: 298.505344 seconds First packet time: 2011-01-26 02:52:22.484409 Last packet time: 2011-01-26 02:57:20.989753 Data byte rate: 30 kBps Data bit rate: 247 kbps Average packet size: 646.28 bytes Average packet rate: 47 packets/s SHA256: 77d06d3f33f1a95fb9f2610f20ead8ce978449077d6ba22d4945b85bd48f75d1 RIPEMD160: 68e950b2e438c7be011a46646ddfc8105b65b339 SHA1: 06e502dca8dbfe8e6a9cabc61f722d94756f6db9 Strict time order: True Number of interfaces in file: 1 Interface #0 info: Encapsulation = Ethernet (1 - ether) Capture length = 65535 Time precision = microseconds (6) Time ticks per second = 1000000 Number of stat entries = 0 Number of packets = 14261最後に、
tsharkを使用してファイルから最初の 5 つのパケットを読み取ります。-rフラグは入力ファイルを指定し、-cはパケット数を制限します。tshark -r capture.pcap -c 5これにより、最初の 5 つのパケットそれぞれの 1 行サマリーが表示され、トラフィックの内容を素早く確認できます。
1 0.000000 192.168.3.131 → 72.14.213.138 HTTP 997 GET /complete/search?client=chrome&hl=en-US&q=cr HTTP/1.1 2 0.029841 72.14.213.138 → 192.168.3.131 HTTP 440 HTTP/1.1 200 OK (text/javascript) 3 0.223883 192.168.3.131 → 72.14.213.102 TCP 66 55950 → 80 [SYN] Seq=0 Win=8192 Len=0 MSS=1460 WS=4 SACK_PERM=1 4 0.229423 192.168.3.131 → 72.14.213.138 TCP 54 57011 → 80 [ACK] Seq=944 Ack=387 Win=16192 Len=0 5 0.242649 72.14.213.102 → 192.168.3.131 TCP 66 80 → 55950 [SYN, ACK] Seq=0 Ack=1 Win=5720 Len=0 MSS=1430 SACK_PERM=1 WS=64
Tshark による基本的なフィルタリング
パケットキャプチャには数千のパケットが含まれることがあり、特定の情報を見つけるのが困難な場合があります。表示フィルタを使用すると、特定の条件に一致するパケットのみに表示を絞り込むことができます。このステップでは、tshark を使用して基本的なフィルタを適用する方法を学びます。
表示フィルタは
-Y(大文字の Y)フラグを使用して適用します。TCP パケットのみを表示するには、フィルタtcpを使用します。ファイル内の最初の 5 つの TCP パケットを表示してみましょう。tshark -r capture.pcap -Y "tcp" -c 5出力には、プロトコルが TCP であるパケットのみが表示されます。
IP アドレスに基づいてフィルタリングすることもできます。送信元 IP アドレス
192.168.3.131から送信されたすべてのパケットを表示するには、ip.srcフィルタを使用します。tshark -r capture.pcap -Y "ip.src == 192.168.3.131" -c 5完全一致を指定するために
==を使用していることに注意してください。フィルタは
&&(AND) などの論理演算子を使用して組み合わせることができます。送信元 IP192.168.3.131からの TCP パケットを見つけるには、前の 2 つのフィルタを組み合わせます。tshark -r capture.pcap -Y "tcp && ip.src == 192.168.3.131"フィルタリングされた出力を、後で分析するために新しいキャプチャファイルに保存できます。
-wフラグで出力ファイルを指定します。フィルタリングされた TCP パケットをfiltered_tcp.pcapという名前のファイルに保存しましょう。tshark -r capture.pcap -Y "tcp && ip.src == 192.168.3.131" -w filtered_tcp.pcap新しいファイルが作成されたことを確認します。
ls -lh filtered_tcp.pcapディレクトリ内に、新しく作成されたサイズの小さいキャプチャファイルが表示されます。
Wireshark GUI でのトラフィック探索
tshark は自動化には優れていますが、Wireshark のグラフィカルユーザーインターフェース(GUI)は、詳細なパケット分析のための豊富でインタラクティブな環境を提供します。このステップでは、Wireshark GUI を起動し、その主要なコンポーネントを探索します。
ターミナルから Wireshark アプリケーションを起動します。重要:Wireshark はグラフィカル環境を必要とする GUI アプリケーションであるため、スタンドアロンのターミナルインターフェースではなく、必ずデスクトップインターフェース(Desktop Interface)を使用してください。 末尾のアンパサンド
&はアプリケーションをバックグラウンドで実行し、ターミナルを他のコマンドに使用できるようにします。wireshark &注意: デスクトップ環境のないスタンドアロンターミナルでこのコマンドを実行しようとすると、Wireshark は起動に失敗します。GUI アプリケーションには常にデスクトップインターフェースを使用してください。

Wireshark のメインウィンドウが表示されます。今回は既存のファイルを分析するため、ネットワークインターフェースを選択する必要はありません。代わりに
capture.pcapファイルを開きます。- メニューバーの
File->Open...をクリックします。 - ファイルダイアログで
/home/labex/projectに移動し、capture.pcapを選択します。 Openボタンをクリックします。
- メニューバーの
メメインウィンドウにファイル内のパケットが表示されます。3 つの主要なペイン(枠)を確認してください。

- パケットリストペイン (上部): キャプチャされたすべてのパケットのリストです。パケット番号、時刻、送信元、送信先、プロトコル、およびその他のサマリー情報の列があります。
- パケット詳細ペイン (中央): リストペインで現在選択されているパケットのプロトコルレイヤーを、展開可能な詳細ビューで表示します。各レイヤー(Ethernet、IP、TCP など)を展開して、そのフィールドを確認できます。
- パケットバイトペイン (下部): 選択されたパケットの生データを、16 進数および ASCII 形式で表示します。
パケットリストペインでさまざまなパケットをクリックし、パケット詳細ペインとパケットバイトペインの情報がどのように更新されるかを確認してください。このインタラクティブな探索は、Wireshark の最も強力な機能の 1 つです。
GUI での表示フィルタの適用
tshark で学んだ表示フィルタの構文は、Wireshark GUI でも全く同じように機能します。GUI では視覚的なフィードバックが即座に得られるため、複雑なフィルタの構築とテストが容易になります。
Wireshark ウィンドウの上部にある 表示フィルタバー (display filter bar) を探します。これは長いテキスト入力フィールドで、通常はプレースホルダーとして "Apply a display filter..." と表示されています。
HTTP トラフィックをフィルタリングしてみましょう。フィルタバーに
httpと入力し、Enterキーを押すか、バーの右側にある適用ボタン(矢印アイコン)をクリックします。http
パケットリストペインが即座に更新され、HTTP パケットのみが表示されます。フィルタの構文が正しい場合、フィルタバーが緑色に変わることに注目してください。無効なフィルタを入力すると、赤色に変わります。
次に、すべての DNS トラフィックを見つけてみましょう。前のフィルタをクリアし、フィルタバーに
dnsと入力してEnterを押します。dnsキャプチャ内のすべてのドメインネームシステム(DNS)のクエリとレスポンスが表示されます。
tsharkのときと同様に、フィルタを組み合わせることができます。IP アドレス192.168.3.131が関与する(送信元または送信先のいずれか)HTTP トラフィックを見つけるには、ip.addrフィルタとhttpフィルタを組み合わせます。http && ip.addr == 192.168.3.131
この強力な組み合わせにより、特定の会話に焦点を絞ることができます。
tcp.port == 80(標準の HTTP ポートのトラフィック)やudp(UDP トラフィック)など、他のフィルタも試してみてください。フィルタをクリアしてすべてのパケットを再度表示するには、フィルタバーのXボタンをクリックします。
フィルタリングされたデータのエクスポート
関心のあるイベントを特定するためにトラフィックをフィルタリングした後、レポート作成、共有、または他のツールでの詳細な分析のために結果をエクスポートする必要があることがよくあります。Wireshark と tshark は、データをエクスポートするための複数の方法を提供しています。
まず、Wireshark GUI で、前のステップで行ったように
httpフィルタを適用します。表示されている(フィルタリングされた)パケットのみを新しいキャプチャファイルに保存するには:
File->Export Specified Packets...に移動します。- ダイアログボックスで、"All Packets" の下の
Displayedラジオボタンが選択されていることを確認します。 - ファイル名を
http_capture.pcapとし、/home/labex/projectディレクトリに保存します。

パケットのサマリーをテキストまたは CSV ファイルとしてエクスポートすることもできます。CSV としてエクスポートするには:
File->Export Packet Dissections->As CSV...に移動します。- "All Packets" で
Displayedが選択されていることを確認します。 - ファイル名を
http_packets.csvとし、プロジェクトディレクトリに保存します。
コマンドラインの
tsharkを使用して、同じエクスポート操作を実行できます。これは自動化に便利です。次のコマンドは、元のcapture.pcapを読み取り、httpでフィルタリングし、特定のフィールドを CSV ファイルにエクスポートします。tshark -r capture.pcap -Y "http" -T fields -e frame.number -e ip.src -e ip.dst -e http.request.method -e http.host -E header=y -E separator=, > http_export_cli.csv-T fields: 出力形式を指定します。-e ...: エクスポートするフィールド(列)を指定します。-E header=y: ヘッダー行を追加します。-E separator=,: セパレータとしてカンマを使用します。
エクスポートされたファイルが作成されていることを確認します。
ls -lh http_*ディレクトリ内に
http_capture.pcap、http_packets.csv、およびhttp_export_cli.csvというファイルが表示されるはずです。
まとめ
この実験では、Wireshark とそのコマンドライン版である tshark を使用してネットワークトラフィックをフィルタリングする基本を学びました。まず tshark と capinfos を使用してキャプチャファイルを検査することから始めました。次に、特定のプロトコルや IP アドレスを抽出するために、最初は tshark で、次にインタラクティブな Wireshark GUI 内で表示フィルタを適用する練習を行いました。最後に、フィルタリングされた結果を新しいキャプチャファイルや、レポートや分析に適した人間が読める CSV ファイルにエクスポートする方法を習得しました。これらのコアスキルは、あらゆるネットワーク分析やトラブルシューティング業務の基礎となります。


