Tshark でキャプチャファイルを圧縮する

WiresharkWiresharkBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、Wireshark のコマンドラインツール tshark を使用して、ネットワークトラフィックのキャプチャ、圧縮、および分析を学びます。インターフェースの選択、圧縮ファイルの保存、パケットの読み取りに必要な基本的なコマンドを練習し、データの整合性を検証します。

演習では、インターフェースの一覧表示、ライブトラフィックのキャプチャ、圧縮ファイルの検査がカバーされます。この実験を完了することで、圧縮形式でパケットキャプチャを効率的に管理し、データ品質を損なうことなくストレージ容量を最適化するスキルを身につけます。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL wireshark(("Wireshark")) -.-> wireshark/WiresharkGroup(["Wireshark"]) wireshark/WiresharkGroup -.-> wireshark/interface("Interface Overview") wireshark/WiresharkGroup -.-> wireshark/packet_capture("Packet Capture") wireshark/WiresharkGroup -.-> wireshark/display_filters("Display Filters") wireshark/WiresharkGroup -.-> wireshark/protocol_dissection("Protocol Dissection") wireshark/WiresharkGroup -.-> wireshark/packet_analysis("Packet Analysis") wireshark/WiresharkGroup -.-> wireshark/commandline_usage("Command Line Usage") subgraph Lab Skills wireshark/interface -.-> lab-548918{{"Tshark でキャプチャファイルを圧縮する"}} wireshark/packet_capture -.-> lab-548918{{"Tshark でキャプチャファイルを圧縮する"}} wireshark/display_filters -.-> lab-548918{{"Tshark でキャプチャファイルを圧縮する"}} wireshark/protocol_dissection -.-> lab-548918{{"Tshark でキャプチャファイルを圧縮する"}} wireshark/packet_analysis -.-> lab-548918{{"Tshark でキャプチャファイルを圧縮する"}} wireshark/commandline_usage -.-> lab-548918{{"Tshark でキャプチャファイルを圧縮する"}} end

-i eth1 を使用したトラフィックのキャプチャ

このステップでは、Wireshark のコマンドライン版である tshark を使用して、ライブのネットワークトラフィックをキャプチャする方法を学びます。-i オプションを使用すると、監視するネットワークインターフェースを指定できます。これは、マシンに複数のネットワーク接続がある場合に重要です。

  1. まず、作業環境を準備しましょう。LabEx の仮想マシン (VM) でターミナルを開き、キャプチャデータを保存するプロジェクトディレクトリに移動します。

    cd ~/project
  2. キャプチャを開始する前に、利用可能なネットワークインターフェースを特定する必要があります。以下のコマンドを実行して、インターフェースを一覧表示します。

    tshark -D

    出力には、通常以下のようなネットワークインターフェースが一覧表示されます。

    1. eth1 (メインのイーサネットインターフェース)
    2. any (すべてのインターフェース)
    3. lo (内部通信のためのループバック)
  3. メインのネットワークインターフェース (通常は eth1) でパケットのキャプチャを開始するには、以下のコマンドを使用します。

    tshark -i eth1

    これにより、ターミナルにリアルタイムのネットワークトラフィックがスクロール表示されます。各行は、送信元/宛先アドレスとプロトコル情報を含むパケットを表します。

  4. 継続的なキャプチャを停止するには (停止しない場合は無期限に実行されます)、Ctrl+C を押します。その後、ターミナルにはキャプチャされたパケットの総数を含むキャプチャ統計情報が表示されます。

  5. 練習として、正確に 5 つのパケットをキャプチャしましょう。-c フラグを使用すると、キャプチャするパケットの数を制限できます。

    tshark -i eth1 -c 5

    このコマンドは、5 つのパケットをキャプチャした後に自動的に停止し、調査するのに適切なサンプルを提供します。

-w capture.pcap.gz を使用して Gzip 形式で保存する

このステップでは、Tshark を使ってネットワークトラフィックのキャプチャを直接圧縮形式で保存することで、効率的に保存する方法を学びます。圧縮することで、元のパケットデータをすべて保持したまま、ストレージ容量を削減することができます。Tshark の -w オプションは、.gz ファイル拡張子を使用すると自動的に圧縮を処理します。

  1. まず、キャプチャファイルを保存する作業ディレクトリに移動しましょう。これにより、すべてのファイルが一箇所に整理されます。

    cd ~/project
  2. 次に、ライブのネットワークトラフィックをキャプチャし、圧縮して保存します。以下のコマンドは、一度に 3 つの重要なことを行います。

    • 監視するネットワークインターフェースを指定します (eth1)
    • 出力ファイルを自動的に圧縮します (.gz 拡張子に注意)
    • デモンストレーションのため、キャプチャを 10 個のパケットに制限します
    tshark -i eth1 -w capture.pcap.gz -c 10

    コマンドが実行されると、Tshark がキャプチャしたパケットを 10 個に達するまでカウントします。

  3. キャプチャが完了したら、圧縮ファイルが正しく作成されたことを確認しましょう。-lh オプションを使用すると、人間が読みやすい形式でファイルサイズを表示します。

    ls -lh capture.pcap.gz

    出力には、圧縮ファイルの詳細が表示され、そのサイズ (非圧縮のキャプチャよりもはるかに小さい) が含まれます。

    -rw-r--r-- 1 labex labex 1.2K Mar 1 10:00 capture.pcap.gz
  4. 最後に、手動で解凍することなく、圧縮ファイルから直接読み取ることができます。このコマンドは、最初の 3 つのパケットのみを表示して、キャプチャが正常に機能したことを確認します。

    tshark -r capture.pcap.gz -c 3

    Tshark は自動的に解凍を処理し、非圧縮ファイルを使用した場合とまったく同じようにパケットの詳細を表示します。

-r capture.pcap.gz を使用して圧縮ファイルを読み取る

このステップでは、先ほど作成した圧縮されたパケットキャプチャファイル (capture.pcap.gz) を扱います。Wireshark のコマンドラインツールである tshark を使って、このファイルを手動で解凍することなく読み取り、分析します。これは、非圧縮では大量のディスク容量を占有する大きなキャプチャファイルを扱う際に特に便利です。

  1. まず、正しいディレクトリにいること、および圧縮されたキャプチャファイルが存在することを確認しましょう。以下のコマンドを実行すると、プロジェクトディレクトリに移動し、ファイルの詳細を一覧表示します。

    cd ~/project
    ls -l capture.pcap.gz

    圧縮ファイルがサイズとパーミッションとともに一覧表示されるはずです。これで作業を進める準備が整いました。

  2. 圧縮されたキャプチャファイルを読み取る基本コマンドは、パケットの概要を表示します。各行は、タイムスタンプ、送信元/宛先アドレス、プロトコルなどの重要な情報を含む 1 つのネットワークパケットを表します。

    tshark -r capture.pcap.gz

    tshark が自動的に gzip 圧縮を処理することに注意してください。別途解凍手順は必要ありません。

  3. 大きなファイルを扱う場合、出力を制限すると便利なことがよくあります。このコマンドは最初の 5 つのパケットのみを表示し、迅速な確認に役立ちます。

    tshark -r capture.pcap.gz -c 5

    -c フラグは "count" の略で、表示するパケットの数を制御します。

  4. パケットの内容を詳細に調べるには、-V を使って詳細モードを使用します。この例では、最初の 3 つのパケットの完全な詳細を表示し、すべてのプロトコルヘッダーとペイロードデータが含まれます。

    tshark -r capture.pcap.gz -V -c 3

    詳細な出力は、特定のパケットフィールドを調べたり、ネットワークの問題をトラブルシューティングしたりする際に非常に役立ちます。

  5. ターゲットとする分析を行うために、プロトコルでパケットをフィルタリングすることができます。このコマンドは、キャプチャ内で見つかった最初の 2 つの HTTP パケットを表示します。

    tshark -r capture.pcap.gz -Y "http" -c 2

    -Y フラグは表示フィルターを適用します (Wireshark のメインフィルター構文に似ています)。

  6. 最後に、個々のパケットを表示することなく、キャプチャファイル全体の統計情報を取得するには、以下のカウントコマンドを使用します。

    tshark -r capture.pcap.gz -q -z io,stat,0

    -q は出力を静かにし (パケットの表示を抑制し)、-z はさまざまな統計オプションを提供します。これにより、キャプチャのサイズと内容の概要がすぐにわかります。

-V を使用して検証する

このステップでは、-V フラグを使って Wireshark の強力な詳細モードを探索します。このモードでは、パケットの完全なプロトコル解析結果が表示され、ネットワーク通信の各層で何が起こっているかを正確に把握できます。基本的なヘッダーだけでなく、パケットの内容を詳細に調べる必要がある場合に特に便利です。

  1. まず、作業ディレクトリに移動し、圧縮されたキャプチャファイルが存在することを確認しましょう。cd コマンドはディレクトリを変更し、ls -l はファイルの詳細情報を表示します。

    cd ~/project
    ls -l capture.pcap.gz
  2. 次に、-V を使って包括的なプロトコルの詳細を確認します。-c 3 フラグは出力を最初の 3 つのパケットに制限し、分析を容易にします。

    tshark -r capture.pcap.gz -V -c 3

    各パケットの出力には、イーサネット、IP、トランスポート層のヘッダーを含むレイヤーごとの情報が表示され、その後にアプリケーション層のデータが続きます。

  3. HTTP トラフィックに焦点を当てる場合、-V と表示フィルター (-Y) を組み合わせます。これにより、完全なプロトコル詳細を持つ HTTP パケットのみが表示されます。

    tshark -r capture.pcap.gz -Y "http" -V -c 2
  4. TCP 分析のために、このコマンドは 1 つの TCP パケットのすべてのプロトコルフィールドを表示します。シーケンス番号、フラグ、ウィンドウサイズ、その他の TCP 固有の情報が表示されます。

    tshark -r capture.pcap.gz -V -Y "tcp" -c 1
  5. DNS クエリは詳細モードで興味深い詳細を明らかにします。これは、クエリタイプ、クラス、および完全な質問セクションを含む 1 つの DNS パケットを表示します。

    tshark -r capture.pcap.gz -V -Y "dns" -c 1
  6. 最後に、チェックサムが不正なパケットを確認することができます。これは、潜在的なネットワークの破損やキャプチャの問題を特定するのに役立ちます。

    tshark -r capture.pcap.gz -V -Y "tcp.checksum_bad==1" -c 1

まとめ

この実験では、Wireshark のコマンドラインツール tshark を使用して、ネットワークトラフィックを効率的にキャプチャ、圧縮、分析する方法を学びました。-i eth1 を使用して eth1 インターフェイスでライブトラフィックをキャプチャし、-w capture.pcap.gz を使用して直接 gzip 形式で圧縮ファイルを保存する練習を行いました。

演習では、圧縮と分析を組み合わせることでパケットキャプチャを効果的に管理する方法を示しました。-r capture.pcap.gz を使用して手動で解凍することなく圧縮ファイルを読み取る機能を確認し、-i-w-r-c などの重要なフラグを習得しました。