Wireshark で IPv6 トラフィックを解析する

WiresharkWiresharkBeginner
今すぐ練習

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

はじめに (Introduction)

この実験 (lab) では、強力なネットワークプロトコルアナライザである Wireshark を使用して、IPv6 ネットワークトラフィックをキャプチャおよび分析する方法を学びます。IPv6 は次世代のインターネットプロトコルであり、IPv4 と比較してより大きなアドレス空間と強化されたセキュリティ機能を提供します。

IPv6 の採用が拡大するにつれて、サイバーセキュリティの専門家が Wireshark のようなツールを使用して IPv6 ネットワークを監視およびトラブルシューティングする方法を知ることが重要になります。この実践的な実験 (lab) では、実際のネットワーク環境で適用可能な IPv6 トラフィック監視の実践的な経験が得られます。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL wireshark(("Wireshark")) -.-> wireshark/WiresharkGroup(["Wireshark"]) wireshark/WiresharkGroup -.-> wireshark/packet_capture("Packet Capture") wireshark/WiresharkGroup -.-> wireshark/display_filters("Display Filters") wireshark/WiresharkGroup -.-> wireshark/export_packets("Exporting Packets") wireshark/WiresharkGroup -.-> wireshark/packet_analysis("Packet Analysis") wireshark/WiresharkGroup -.-> wireshark/ipv6_support("IPv6 Support") subgraph Lab Skills wireshark/packet_capture -.-> lab-415950{{"Wireshark で IPv6 トラフィックを解析する"}} wireshark/display_filters -.-> lab-415950{{"Wireshark で IPv6 トラフィックを解析する"}} wireshark/export_packets -.-> lab-415950{{"Wireshark で IPv6 トラフィックを解析する"}} wireshark/packet_analysis -.-> lab-415950{{"Wireshark で IPv6 トラフィックを解析する"}} wireshark/ipv6_support -.-> lab-415950{{"Wireshark で IPv6 トラフィックを解析する"}} end

IPv6 トラフィックのキャプチャ (Capturing IPv6 Traffic)

このステップでは、IPv6 ネットワークトラフィックのキャプチャに焦点を当てます。IPv6 はインターネットプロトコルの最新バージョンであり、利用可能な IP アドレスの枯渇など、IPv4 の制限に対処するように設計されています。ネットワークインターフェースを通過する IPv6 パケットをキャプチャして観察するために、強力で広く使用されているネットワークプロトコルアナライザである Wireshark を使用します。これにより、ネットワークトラフィックの詳細を確認でき、ネットワークの監視とトラブルシューティングに不可欠です。

システムで IPv6 を有効にする (Enabling IPv6 on Your System)

IPv6 トラフィックのキャプチャを開始する前に、システムで IPv6 が有効になっていることを確認する必要があります。これは、IPv6 が無効になっている場合、システムは IPv6 パケットを送受信できず、関連するトラフィックをキャプチャできないためです。

  1. ターミナルウィンドウを開きます。タスクバーのターミナルアイコンをクリックするか、Ctrl+Alt+T を押してこれを行うことができます。ターミナルは、コマンドを入力してシステムと対話できるコマンドラインインターフェースです。

  2. プロジェクトディレクトリに移動します。これは、IPv6 を有効にするスクリプトが配置されている場所です。次のコマンドを使用します。

    cd /home/labex/project/

    cd コマンドは "change directory" の略です。これにより、ファイルシステム内のあるディレクトリから別のディレクトリに移動できます。

  3. スクリプトを実行して、システムで IPv6 を有効にします。次のコマンドを使用します。

    sudo ./enable_ipv6.sh

    sudo コマンドは、管理者権限でコマンドを実行するために使用されます。./ は、スクリプトが現在のディレクトリにあることを示します。このスクリプトは、ネットワークインターフェースを構成し、システム設定で IPv6 が無効になっていないことを確認することにより、Linux マシンで IPv6 機能を有効にします。

    期待される出力:

    net.ipv6.conf.all.disable_ipv6 = 0
    net.ipv6.conf.default.disable_ipv6 = 0
    net.ipv6.conf.lo.disable_ipv6 = 0

    これらの行は、すべてのネットワークインターフェース、デフォルトインターフェース、およびループバックインターフェースで IPv6 が有効になっていることを示しています。

Wireshark の起動とキャプチャの設定 (Starting Wireshark and Configuring Capture)

IPv6 が有効になったので、Wireshark を起動してネットワークトラフィックをキャプチャするように構成できます。

  1. ターミナルで次のコマンドを実行して、Wireshark を起動します。

    wireshark &

    コマンドの末尾にある & 記号は、Wireshark をバックグラウンドで実行します。これは、Wireshark の実行中にターミナルの使用を継続できることを意味します。

  2. Wireshark が開くと、利用可能なネットワークインターフェースのリストが表示されます。これらは、システムがネットワークトラフィックを送受信できる物理的または仮想的な接続です。any というラベルのインターフェースを探します。このインターフェースを選択すると、Wireshark はシステム上のすべてのネットワークインターフェースからパケットをキャプチャできます。

    Wireshark Interface Selection
  3. パケットのキャプチャを開始するには、any インターフェースをダブルクリックするか、選択してツールバーの青いサメのヒレボタンをクリックします。

  4. Wireshark は、システム上のすべてのネットワークトラフィックのキャプチャを開始します。パケットがキャプチャされると、メインウィンドウに表示されます。各パケットエントリには、送信元および宛先 IP アドレス、使用されるプロトコル、キャプチャ時刻などの情報が表示されます。

キャプチャ用の IPv6 トラフィックの生成 (Generating IPv6 Traffic for Capture)

分析する IPv6 トラフィックがあることを確認するために、IPv6 アドレスに ping を実行して IPv6 パケットを生成します。Ping は、2 つのネットワークデバイス間の接続をテストする簡単な方法です。

  1. Wireshark が実行中でパケットをキャプチャしている間に、新しいターミナルウィンドウを開きます。これにより、パケットキャプチャプロセスを妨げることなく、コマンドを実行してトラフィックを生成できます。

  2. まず、eth1 インターフェースの IPv6 アドレスを見つけましょう。次のコマンドを実行します。

    ip addr show dev eth1 | grep inet6

    ip addr show コマンドは、ネットワークインターフェースに割り当てられた IP アドレスを表示します。dev eth1 は、eth1 インターフェースのアドレスを表示することを指定します。| はパイプ演算子であり、左側のコマンドの出力を取得し、右側のコマンドの入力として使用します。grep inet6 は、inet6 という文字列を含む行のみを表示するように出力をフィルタリングします。これらは IPv6 アドレスです。

    出力には、eth1 インターフェースに関連付けられた IPv6 アドレスが表示されます。fe80:: で始まるリンクローカル IPv6 アドレスが表示されます。これはローカル IPv6 アドレスであり、ローカルネットワークセグメント内の通信に使用されます。

    出力例:

    inet6 fe80::42:acff:fe14:3/64 scope link
  3. 次に、この IPv6 アドレスに ping を実行して、IPv6 トラフィックを生成します。IPv6 アドレスの ping 専用に設計された ping6 コマンドを使用します。リンクローカルアドレスであるため、インターフェース名 (eth1) を含めます。インターフェース名は、通信に使用するネットワークインターフェースを指定するために必要です。

    ping6 -c 4 fe80::42:acff:fe14:3%eth1

    注:fe80::42:acff:fe14:3 をシステムに表示される実際の IPv6 アドレスに置き換えてください。

    -c 4 パラメータは、ping に 4 つのパケットを送信して停止するように指示します。これは、生成されるトラフィックの量を制限するのに役立ちます。

    期待される出力:

    PING fe80::42:acff:fe14:3%eth1(fe80::42:acff:fe14:3%eth1) 56 data bytes
    64 bytes from fe80::42:acff:fe14:3%eth1: icmp_seq=1 ttl=64 time=0.049 ms
    64 bytes from fe80::42:acff:fe14:3%eth1: icmp_seq=2 ttl=64 time=0.064 ms
    64 bytes from fe80::42:acff:fe14:3%eth1: icmp_seq=3 ttl=64 time=0.064 ms
    64 bytes from fe80::42:acff:fe14:3%eth1: icmp_seq=4 ttl=64 time=0.064 ms
    
    --- fe80::42:acff:fe14:3%eth1 ping statistics ---
    4 packets transmitted, 4 received, 0% packet loss, time 3060ms
    rtt min/avg/max/mdev = 0.049/0.060/0.064/0.007 ms

    この出力は、各パケットが宛先に到達して戻るのにかかった時間や、パケット損失率など、ping プロセスの詳細を示しています。

  4. Wireshark ウィンドウに戻ります。キャプチャリストに、ping コマンドによって生成された ICMPv6 パケットを含む、いくつかの新しいパケットが表示されるはずです。ICMPv6 は IPv6 のインターネット制御メッセージプロトコル (Internet Control Message Protocol) であり、エラー報告と診断に使用されます。

  5. Wireshark ツールバーの赤い四角い "Stop" ボタンをクリックして、パケットキャプチャを停止します。

これで、Wireshark を使用して IPv6 トラフィックを正常にキャプチャできました。次のステップでは、このトラフィックをフィルタリングして分析する方法を学びます。

IPv6 トラフィックのフィルタリングと分析 (Filtering and Analyzing IPv6 Traffic)

IPv6 トラフィックをキャプチャしたので、このトラフィックをフィルタリングして分析する方法を学びましょう。強力なネットワークプロトコルアナライザである Wireshark は、優れたフィルタリング機能を提供します。キャプチャされたトラフィックをフィルタリングすると、調べたい特定の種類の IPv6 パケットに焦点を当てることができます。大規模で混在したネットワークデータを調べる代わりに、フィルタリングを使用すると、関連情報を分離して分析をより効率的にすることができます。

IPv6 の表示フィルタの使用 (Using Display Filters for IPv6)

Wireshark の表示フィルタは優れたツールです。特定の条件に一致するパケットのみを表示できます。この場合、IPv6 パケットに焦点を当てます。

  1. Wireshark のメインウィンドウに、パケットリストが表示されます。このリストの上部には、表示フィルタバーがあります。「Apply a display filter (表示フィルタを適用)」というプロンプトが表示されたテキストフィールドがあります。このバーにフィルタ条件を入力します。

  2. IPv6 パケットのみを表示するには、表示フィルタバーに次のフィルタを入力します。

    ipv6

    このフィルタは、IPv6 プロトコルを使用するパケットのみを表示するように Wireshark に指示します。

    Wireshark Display Filter Bar
  3. フィルタを入力したら、Enter キーを押すか、青い矢印ボタンをクリックして適用します。適用すると、パケットリストには IPv6 パケットのみが表示されるようになります。これは、IPv4 またはその他のプロトコルパケットがフィルタリングされ、IPv6 トラフィックのみが残ることを意味します。

  4. フィルタをさらに絞り込んで、ICMPv6 パケット (ping6 コマンドで生成されたパケットなど) のみを表示する場合は、次のフィルタを入力します。

    icmpv6

    ICMPv6 は IPv6 ネットワークの重要なプロトコルであり、エラー報告や診断メッセージなどのタスクに使用されます。このフィルタを使用すると、これらの特定の種類のパケットに焦点を当てることができます。

    Wireshark Display Filter Bar
  5. 前と同様にフィルタを適用します。これで、パケットリストに ping コマンドからの ICMPv6 パケットのみが表示されるはずです。

IPv6 パケットの詳細の調査 (Examining IPv6 Packet Details)

Wireshark は、各パケットに関する詳細情報を提供します。IPv6 パケットの構造を詳しく見てみましょう。

  1. フィルタリングされたパケットリストで、ICMPv6 Echo Request パケットを見つけます。Info 列で "Echo (ping) request" を探すことで識別できます。このパケットをクリックして選択します。

  2. パケットを選択すると、中央のペインにそのパケットの詳細な内訳が表示されます。「Internet Protocol Version 6 (インターネットプロトコルバージョン 6)」というラベルのセクションを探します。まだ展開されていない場合は、その横にある矢印をクリックして展開します。これにより、IPv6 ヘッダーのすべてのフィールドが表示されます。

    IPv6 Packet Details
  3. IPv6 ヘッダー情報には、観察すべきいくつかの重要なフィールドがあります。

    • Version (バージョン): このフィールドは IPv6 の場合は 6 である必要があります。これは、パケットが IPv6 プロトコルを使用していることを確認する簡単な方法です。
    • Traffic Class (トラフィッククラス): このフィールドは QoS (Quality of Service) に使用されます。ネットワーク上のさまざまな種類のトラフィックに優先順位を付けるのに役立ちます。
    • Flow Label (フローラベル): これは、同じフローに属するパケットの状態を維持するために使用できます。関連するパケットを追跡するのに役立ちます。
    • Payload Length (ペイロード長): これは、IPv6 ヘッダーの後のデータのサイズを示します。パケットでどれだけのデータが伝送されているかを理解するのに役立ちます。
    • Next Header (次のヘッダー): このフィールドは、IPv6 ヘッダーに続くヘッダーのタイプを識別します。TCP や UDP などの別のプロトコルヘッダーである可能性があります。
    • Hop Limit (ホップリミット): IPv4 の TTL (Time To Live) と同様に、この値は各ルーターでデクリメントされます。パケットがネットワーク上で無期限に循環するのを防ぎます。
    • Source Address (送信元アドレス): これは送信者の IPv6 アドレスです。パケットの送信元を示します。
    • Destination Address (宛先アドレス): これは受信者の IPv6 アドレスです。パケットの宛先を示します。
  4. IPv6 アドレスと IPv4 アドレスの違いに注意してください。IPv6 は 128 ビットアドレスを使用し、通常は 4 つの 16 進数字の 8 つのグループとして記述されます。対照的に、IPv4 は 32 ビットアドレスを使用します。これにより、IPv6 アドレスははるかに長くなり、はるかに大きなアドレス空間が提供されます。

  5. 次に、「Internet Control Message Protocol v6 (インターネット制御メッセージプロトコル v6)」セクションを展開して、ICMPv6 パケットの詳細を表示します。

    • Type (タイプ): これは ICMPv6 メッセージタイプを示します。たとえば、128 は Echo Request 用、129 は Echo Reply 用です。
    • Code (コード): これはメッセージタイプをさらに指定します。ICMPv6 メッセージに関するより詳細な情報を提供します。
    • Checksum (チェックサム): これは ICMPv6 メッセージのエラーを検出するために使用されます。データの整合性を確保するのに役立ちます。
    • Identifier (識別子): これは、リクエストとリプライを照合するために使用されます。これにより、送信者はどのリプライがどのリクエストに対応するかを追跡できます。
    • Sequence (シーケンス): これは、ping セッションの各パケットに対してインクリメントされるシーケンス番号です。パケットの順序付けに役立ちます。

キャプチャされたパケットの保存 (Saving the Captured Packets)

パケットキャプチャを後で分析またはドキュメント化するために保存すると便利なことがよくあります。その方法は次のとおりです。

  1. Wireshark で、File (ファイル) メニューをクリックし、Save As (名前を付けて保存) を選択します。これにより、ファイルを保存する場所と名前を選択できるダイアログが開きます。

  2. /home/labex/project/ ディレクトリに移動します。これは、パケットキャプチャを保存する場所です。

  3. ファイル名として capture.pcapng を入力します。これは、保存されたパケットキャプチャを識別するために使用される名前です。

  4. Save (保存) ボタンをクリックして、パケットキャプチャを保存します。ファイルは PCAPNG 形式で保存されます。これは、Wireshark パケットキャプチャの標準形式です。この形式は広くサポートされており、他のネットワーク分析ツールで開くことができます。

  5. ファイルが正しく保存されたことを確認するには、ターミナルで次のコマンドを実行します。

    ls -l /home/labex/project/capture.pcapng

    このコマンドは、ファイルのアクセス許可、所有者、サイズ、作成日などの詳細を一覧表示します。

    期待される出力:

    -rw-r--r-- 1 labex labex [ファイルサイズ] [日付] /home/labex/project/capture.pcapng

これで、IPv6 トラフィックをフィルタリングし、IPv6 パケットの詳細を調べ、後で参照できるようにパケットキャプチャを保存する方法を学びました。次のステップでは、IPv6 拡張ヘッダーについて詳しく説明します。

IPv6 拡張ヘッダーの調査 (Examining IPv6 Extension Headers)

このステップでは、IPv6 拡張ヘッダーについて説明します。IPv6 は次世代のインターネットプロトコルであり、IPv4 に比べて多くの改善が加えられています。これらの重要な改善点の 1 つは、拡張ヘッダーの使用です。これらのヘッダーは、ルーティングやセキュリティ機能の向上など、強化された機能を提供するため、非常に重要です。ネットワークでのパケットの処理方法に関する重要な情報を明らかにすることができるため、IPv6 ネットワークの監視およびセキュリティ分析に関わるすべての人にとって、それらを理解することは不可欠です。

Wireshark での拡張ヘッダーの識別 (Identifying Extension Headers in Wireshark)

次に、Wireshark を使用して、以前にキャプチャしたパケット内の IPv6 拡張ヘッダーを識別して理解しましょう。

  1. まず、Wireshark が開いていることを確認します。開いていない場合は、ターミナルで次のコマンドを使用して開くことができます。

    wireshark &

    末尾の & は、コマンドをバックグラウンドで実行できるようにするため、ターミナルを他のタスクに使用し続けることができます。

  2. 次に、前のステップで保存したキャプチャファイルを開きます。方法は次のとおりです。

    • Wireshark メニューの File (ファイル) > Open (開く) をクリックします。
    • ディレクトリ /home/labex/project/ に移動します。
    • capture.pcapng という名前のファイルを選択し、Open (開く) をクリックします。このファイルには、以前にキャプチャしたネットワークトラフィックが含まれています。
  3. Wireshark の上部にあるフィルタバーに、次のフィルタを入力します。

    ipv6

    このフィルタは、すべての IPv6 パケットを表示します。これらのパケットの Next Header (次のヘッダー) フィールドを調べて、拡張ヘッダーを識別します。

  4. Wireshark の左側のパケットリストから IPv6 パケットを選択します。中央のペインで、「Internet Protocol Version 6 (インターネットプロトコルバージョン 6)」セクションを展開します。これにより、IPv6 ヘッダーの詳細が表示されます。

  5. 展開された IPv6 ヘッダー内で、「Next Header (次のヘッダー)」フィールドを探します。このフィールドは、IPv6 ヘッダーの直後に何が続くかを示すため、非常に重要です。拡張ヘッダーまたは TCP や UDP などの上位レイヤープロトコルである可能性があります。

  6. 「Next Header (次のヘッダー)」の値は、特定のプロトコル番号に対応します。

    • 0: Hop-by-Hop Options (ホップバイホップオプション)
    • 43: Routing (ルーティング)
    • 44: Fragment (フラグメント)
    • 50: ESP (Encapsulating Security Payload)
    • 51: AH (Authentication Header)
    • 60: Destination Options (宛先オプション)
    • 58: ICMPv6 (Internet Control Message Protocol Version 6)
    • 6: TCP (Transmission Control Protocol)
    • 17: UDP (User Datagram Protocol)
  7. 拡張ヘッダーがパケットに存在する場合、パケット詳細ペインの IPv6 ヘッダーの下に展開可能なセクションとして表示されます。それを展開してその内容を表示します。これにより、パケットの処理に関する貴重な情報が得られます。

分析のためのパケットバイトのエクスポート (Exporting Packet Bytes for Analysis)

「Next Header (次のヘッダー)」フィールドをさらに分析するために、それを含むパケットのバイトをエクスポートします。

  1. パケットリストから IPv6 パケットを選択します。

  2. 中央のペインで、「Internet Protocol Version 6 (インターネットプロトコルバージョン 6)」セクションが展開されていることを確認します。展開されていない場合は、展開して IPv6 ヘッダーの詳細を表示します。

  3. 「Next Header (次のヘッダー)」フィールドを見つけます。通常、IPv6 ヘッダーの詳細の上部にあります。

  4. 「Next Header (次のヘッダー)」フィールドを右クリックし、「Export Selected Packet Bytes (選択したパケットバイトのエクスポート)」を選択します。

    Wireshark Export Packet Bytes
  5. 表示されるダイアログで、ディレクトリ /home/labex/project/ に移動します。ここにエクスポートされたバイトを保存します。

  6. ファイル名として extension_header.txt を入力します。

  7. 「Save (保存)」をクリックしてファイルを保存します。

  8. ファイルが正常に作成されたことを確認するには、ターミナルで次のコマンドを実行します。

    cat /home/labex/project/extension_header.txt

    出力は、Next Header (次のヘッダー) 値を表す単一の文字になる可能性があります。これは、さらなる分析やスクリプト作成に役立ちます。

拡張ヘッダーチェーンの分析 (Analyzing the Extension Header Chain)

IPv6 では、パケットは複数の拡張ヘッダーを持つことができ、チェーンを形成します。各拡張ヘッダーには、「Next Header (次のヘッダー)」フィールドがあり、その後に何が続くかを示します。

たとえば、IPv6 パケットは次の構造を持つ場合があります。

  1. 「Next Header (次のヘッダー)」の値が 0 のメイン IPv6 ヘッダー。これは、次のヘッダーが Hop-by-Hop Options (ホップバイホップオプション) ヘッダーであることを意味します。
  2. 「Next Header (次のヘッダー)」の値が 43 の Hop-by-Hop Options (ホップバイホップオプション) ヘッダー。これは、次のヘッダーが Routing (ルーティング) ヘッダーであることを示します。
  3. 「Next Header (次のヘッダー)」の値が 6 の Routing (ルーティング) ヘッダー。これは、次のヘッダーが TCP ヘッダーであることを意味します。
  4. 最後に、TCP ヘッダーとペイロード。

このチェーンメカニズムは、パケット処理に多くの柔軟性をもたらします。ただし、ファイアウォールルールをバイパスしようとするなど、セキュリティ攻撃に悪用される可能性もあります。そのため、拡張ヘッダーを理解することは、ネットワークセキュリティの監視にとって非常に重要です。

これで、Wireshark で IPv6 拡張ヘッダーを識別して調査する方法を学びました。これは、IPv6 ネットワークの監視およびセキュリティ分析に関わるすべての人にとって不可欠なスキルです。

まとめ (Summary)

この実験 (Lab) では、Wireshark を使用した IPv6 ネットワーク監視に不可欠なスキルを学びました。まず、IPv6 トラフィックをキャプチャし、ping6 コマンドでパケットを生成しました。次に、キャプチャされたパケットのフィルタリングと分析を掘り下げ、IPv6 ヘッダーの独自の構造とフィールドに焦点を当てました。

習得した主要なスキルには、IPv6 トラフィックのキャプチャ、特定のパケットタイプに対する表示フィルタの使用、パケット構造とヘッダーの調査、後で分析するためのキャプチャの保存、IPv6 拡張ヘッダーの識別、および Next Header (次のヘッダー) フィールドと拡張ヘッダーチェーンの理解が含まれます。これらのスキルは、IPv6 が普及している環境におけるネットワーク管理者およびサイバーセキュリティの専門家にとって不可欠であり、ネットワークセキュリティ、トラブルシューティング、およびネットワークの動作の理解に不可欠です。IPv6 の採用が世界的に拡大するにつれて、この知識は高度な概念のための確固たる基盤を提供します。