はじめに
サイバーセキュリティの世界では、ネットワークトラフィックの理解と分析が不可欠なスキルです。このチュートリアルでは、強力なネットワークプロトコルアナライザーである Wireshark を使用して、IPv6 トラフィックをキャプチャ、フィルタリング、分析するプロセスを説明します。
IPv6 (Internet Protocol version 6) は、広く使用されている IPv4 を最終的に置き換えるように設計された次世代のインターネットプロトコルです。ネットワークが進化し続ける中、セキュリティ専門家は両方のプロトコルを監視することに習熟している必要があります。この実験(Lab)の終わりには、ネットワークセキュリティ監視能力を向上させるための実践的な知識を習得できます。
Wireshark のインストールとセットアップ
IPv6 トラフィックをキャプチャして分析する前に、Ubuntu システムに Wireshark をインストールし、基本的な設定を行う必要があります。
Wireshark のインストール
まず、パッケージリストを更新し、Wireshark をインストールすることから始めましょう。
sudo apt update
sudo apt install -y wireshark
インストール中に、非スーパーユーザーがパケットをキャプチャできるようにするかどうかを尋ねられる場合があります。この実験(Lab)では、非 root ユーザーがパケットをキャプチャできるように「Yes」を選択します。
インストールが完了したら、root 権限なしでパケットをキャプチャできるように、ユーザーを wireshark グループに追加する必要があります。
sudo usermod -a -G wireshark labex
変更を有効にするために、ログアウトして再度ログインしましょう。
newgrp wireshark
インストールの確認
Wireshark が正常にインストールされたことを確認するために、バージョンを確認しましょう。
wireshark --version
次のような出力が表示されるはずです。
Wireshark 3.6.2 (Git v3.6.2 packaged as 3.6.2-2)
Wireshark の起動
次に、ターミナルから Wireshark を起動しましょう。
wireshark &
& 記号は、アプリケーションをバックグラウンドで実行し、ターミナルを引き続き使用できるようにします。
Wireshark アプリケーションが開き、利用可能なネットワークインターフェースのリストが表示されるはずです。インターフェースは次のようになります。

これで、Wireshark はネットワークトラフィックのキャプチャと分析の準備ができました。次のステップでは、キャプチャして分析できる IPv6 トラフィックを生成します。
キャプチャする IPv6 トラフィックの生成
IPv6 トラフィックを分析する前に、ネットワーク上でいくつかの IPv6 パケットを生成する必要があります。このステップでは、さまざまなツールを使用して IPv6 トラフィックを生成します。
IPv6 の基本を理解する
IPv6 アドレスは 128 ビットのアドレスで、通常は 16 ビットの各グループをコロンで区切った 16 進表記で記述されます。例:2001:0db8:85a3:0000:0000:8a2e:0370:7334。IPv6 は IPv4 よりもいくつかの利点があります。
- より大きなアドレス空間 (128 ビット対 32 ビット)
- より効率的なルーティングのための簡素化されたヘッダー形式
- IPsec による組み込みセキュリティ
- サービス品質 (QoS) のサポートの向上
IPv6 接続の確認
まず、ネットワークインターフェースを調べて、システムに IPv6 接続があるかどうかを確認しましょう。
ip -6 addr show
このコマンドは、システム上のネットワークインターフェースに割り当てられたすべての IPv6 アドレスを表示します。次のような出力が表示されるはずです。
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 state UNKNOWN qlen 1000
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
inet6 fe80::215:5dff:fe00:1/64 scope link
valid_lft forever preferred_lft forever
fe80:: アドレスは、IPv6 対応インターフェースで自動的に設定されるリンクローカルアドレスです。
IPv6 トラフィックの生成
Wireshark でキャプチャできる IPv6 トラフィックを生成しましょう。ping6 コマンドを使用して、ICMPv6 エコー要求を IPv6 アドレスに送信します。
まず、IPv6 ループバックアドレスに ping を実行しましょう。
ping6 -c 4 ::1
これにより、4 つの ICMPv6 エコー要求がループバックアドレス (::1) に送信されます。次のような出力が表示されるはずです。
PING ::1(::1) 56 data bytes
64 bytes from ::1: icmp_seq=1 ttl=64 time=0.035 ms
64 bytes from ::1: icmp_seq=2 ttl=64 time=0.074 ms
64 bytes from ::1: icmp_seq=3 ttl=64 time=0.073 ms
64 bytes from ::1: icmp_seq=4 ttl=64 time=0.074 ms
--- ::1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3072ms
rtt min/avg/max/mdev = 0.035/0.064/0.074/0.017 ms
次に、よく知られた IPv6 アドレスに ping を実行しましょう。Google の DNS サーバーは IPv6 をサポートしており、テストに使用できます。
ping6 -c 4 2001:4860:4860::8888
システムにパブリック IPv6 接続がある場合は、ping 応答が成功したことが表示されるはずです。そうでない場合は、ホストへのルートがないことを示すエラーが表示される場合があります。
netcat を使用した IPv6 トラフィック
netcat を使用して IPv6 トラフィックを生成することもできます。2 つのターミナルウィンドウを開きましょう。
最初のターミナルで、IPv6 アドレスをリッスンする netcat サーバーを起動します。
nc -6 -l 8888
これにより、ポート 8888 で IPv6 接続をリッスンするサーバーが起動します。
2 番目のターミナルで、このサーバーに接続します。
nc -6 ::1 8888
これで、どちらのターミナルでもメッセージを入力できるようになり、それらは IPv6 経由で他のターミナルに送信されます。これにより、Wireshark でキャプチャできる TCP トラフィックが作成されます。
各ターミナルでいくつかのメッセージを入力してトラフィックを生成し、両方のターミナルで Ctrl+C を押して接続を閉じます。
これで、いくつかの IPv6 トラフィックが生成されたので、次のステップで Wireshark を使用してキャプチャして分析する準備ができました。
Wireshark での IPv6 トラフィックのキャプチャ
いくつかの IPv6 トラフィックを生成したので、Wireshark を使用してそれをキャプチャし、調べることができます。このステップでは、IPv6 パケットをキャプチャするように Wireshark を設定する方法を学びます。
キャプチャの開始
まず、Wireshark がまだ実行されていない場合は起動します。
wireshark &
Wireshark のメインウィンドウには、利用可能なネットワークインターフェースのリストが表示されます。ネットワークトラフィックを処理しているインターフェースでキャプチャを実行します。
- リストで
lo(ループバック) という名前のインターフェースを見つけます。 - このインターフェースをダブルクリックして、パケットのキャプチャを開始します。
または、インターフェースを選択し、ツールバーの「パケットのキャプチャを開始」ボタン (青いサメのひれのアイコン) をクリックすることもできます。
Wireshark は、IPv6 トラフィックを含む、ループバックインターフェース上のすべてのパケットのキャプチャを開始します。
キャプチャ中のトラフィックの生成
Wireshark がキャプチャしている間に、いくつかの IPv6 トラフィックを生成しましょう。新しいターミナルを開き、次を実行します。
ping6 -c 10 ::1
これにより、10 個の ICMPv6 エコー要求がループバックアドレスに送信され、Wireshark で表示されます。
キャプチャされると、Wireshark ウィンドウにパケットが表示されるはずです。各行は単一のパケットを表します。
キャプチャの停止
いくつかのトラフィックを生成したら、キャプチャを停止しましょう。
- ツールバーの「パケットのキャプチャを停止」ボタン (赤い四角のアイコン) をクリックします。
- Wireshark は、セッション中にキャプチャされたパケットのみを表示するようになります。
Wireshark インターフェースの理解
Wireshark インターフェースは、3 つの主要なパネルで構成されています。
- パケットリストパネル (上部): キャプチャされたすべてのパケットを順番に表示します。
- パケット詳細パネル (中央): 選択したパケットの詳細を階層ビューで表示します。
- パケットバイトパネル (下部): 選択したパケットの生のバイトを 16 進数と ASCII 形式で表示します。
パケットリストパネルで IPv6 パケットを見つけて選択しましょう。「プロトコル」列に「IPv6」と表示されているパケットを探します。
IPv6 パケットを選択すると、パケット詳細パネルに IPv6 ヘッダーの構造が表示されます。これには以下が含まれます。
- バージョン (IPv6 の場合は 6 である必要があります)
- トラフィッククラス
- フローラベル
- ペイロード長
- 次のヘッダー
- ホップリミット
- 送信元アドレス
- 宛先アドレス
詳細を表示するには、各フィールドの横にある矢印をクリックして展開できます。
キャプチャの保存
後で分析するために、キャプチャを保存しましょう。
- 「ファイル」メニューをクリックします。
- 「名前を付けて保存」を選択します。
/home/labex/projectディレクトリに移動します。ipv6_capture.pcapngのようなファイル名を入力します。- 「保存」をクリックします。
キャプチャされたパケットは、後でさらに分析するために開くことができるファイルに保存されます。
ls -l /home/labex/project/ipv6_capture.pcapng
ファイルが作成されたことを確認する出力が表示されるはずです。
-rw-r--r-- 1 labex labex 12345 Sep 10 12:34 /home/labex/project/ipv6_capture.pcapng
次のステップでは、キャプチャした IPv6 トラフィックをフィルタリングして分析する方法を学びます。
Wireshark での基本的な IPv6 フィルタリング
Wireshark は大量のパケットをキャプチャできるため、特定のトラフィックに焦点を当てるためにデータをフィルタリングすることが不可欠です。このステップでは、表示フィルターを使用して IPv6 トラフィックを分離する方法を学びます。
Wireshark 表示フィルターの理解
Wireshark 表示フィルターを使用すると、特定の条件に一致するパケットのみを表示できます。フィルター構文は豊富で強力であり、表示するパケットを正確に制御できます。
表示フィルターは、Wireshark ウィンドウの上部にあるフィルターバーに入力します。入力すると、背景色がフィードバックを提供します。
- 緑:有効なフィルター構文
- 赤:無効なフィルター構文
- 黄色:有効だが、潜在的に問題のあるフィルター
基本的な IPv6 フィルター
保存したキャプチャファイルを開くことから始めましょう。
- 「ファイル」メニューをクリックします。
- 「開く」を選択します。
/home/labex/projectに移動します。ipv6_capture.pcapngを選択します。- 「開く」をクリックします。
次に、いくつかの基本的な IPv6 フィルターを適用しましょう。
すべての IPv6 トラフィックのフィルタリング
IPv6 パケットのみを表示するには、フィルターバーに次のように入力します。
ipv6
Enter キーを押すか、「適用」をクリックしてフィルターを適用します。IPv6 プロトコルを使用しているパケットのみが表示されます。
IPv6 アドレスによるフィルタリング
IPv6 送信元アドレスでパケットをフィルタリングするには、次のようにします。
ipv6.src == ::1
これにより、ループバックアドレスから発信されたパケットのみが表示されます。
IPv6 宛先アドレスでパケットをフィルタリングするには、次のようにします。
ipv6.dst == ::1
これにより、ループバックアドレス宛てのパケットのみが表示されます。
論理演算子を使用してフィルターを組み合わせることができます。
ipv6.src == ::1 and ipv6.dst == ::1
これにより、送信元と宛先の両方がループバックアドレスであるパケットのみが表示されます。
IPv6 プロトコルによるフィルタリング
IPv6 は、「次のヘッダー」フィールドを使用して、IPv6 パケット内にカプセル化されたプロトコルを示します。一般的な次のヘッダーの値には以下が含まれます。
- 6: TCP
- 17: UDP
- 58: ICMPv6
ICMPv6 パケットをフィルタリングするには、次のようにします。
ipv6.nxt == 58
または、単に次のように使用することもできます。
icmpv6
IPv6 TCP パケットをフィルタリングするには、次のようにします。
ipv6.nxt == 6
または、同等に:
ipv6 and tcp
フィルターの組み合わせ
Wireshark フィルターは、論理演算子を使用して組み合わせることができます。
andまたは&&: 両方の条件が真である必要がありますorまたは||: 少なくとも 1 つの条件が真である必要がありますnotまたは!: 条件を否定します
たとえば、ICMPv6 を除くすべての IPv6 パケットを見つけるには、次のようにします。
ipv6 and not icmpv6
ICMPv6 エコー要求またはエコー応答のいずれかであるパケットを見つけるには、次のようにします。
icmpv6.type == 128 or icmpv6.type == 129
フィルターの保存
特定のフィルターを頻繁に使用する場合は、後で使用するために保存できます。
- フィルターバーにフィルターを入力します。
- 「このフィルターを保存」ボタン (右側のプラス記号) をクリックします。
- フィルターの名前を入力します。
- 「OK」をクリックします。
保存したフィルターを適用するには、「フィルター」ボタン (漏斗アイコン) をクリックし、ドロップダウンメニューから保存したフィルターを選択します。
ICMPv6 パケットのフィルターを保存しましょう。
- フィルターバーに
icmpv6と入力します。 - プラス記号をクリックします。
- 「ICMPv6 トラフィック」という名前を付けます。
- 「OK」をクリックします。
これで、必要なときにいつでもこのフィルターをすばやく適用できます。
パケット詳細からのフィルター式の使用
Wireshark は、パケット詳細からフィルターを作成する便利な方法を提供します。
- パケットリストでパケットを選択します。
- パケット詳細パネルで、フィールドを右クリックします。
- 「フィルターとして適用」を選択し、次に以下を選択します。
- 「選択済み」: その正確な値をフィルタリングします。
- 「未選択」: その値を削除します。
- 「And 選択済み」: 条件を現在のフィルターに追加します。
- 「Or 選択済み」: 代替条件を追加します。
これにより、フィールド名を覚えなくても、複雑なフィルターを簡単に作成できます。
これを行うには、次のようにします。
- IPv6 パケットを選択します。
- パケット詳細の「インターネットプロトコルバージョン 6」セクションを展開します。
- 「次のヘッダー」フィールドを右クリックします。
- 「フィルターとして適用」>「選択済み」を選択します。
フィルターバーには、その特定の次のヘッダー値のフィルターが表示されるようになります。
次のステップでは、基本的なフィルタリングを超えて、より高度な IPv6 分析手法に進みます。
Wireshark での高度な IPv6 分析
基本的な IPv6 フィルタリングに慣れたので、Wireshark でより高度な分析手法を探求し、IPv6 トラフィックパターンに関するより深い洞察を得ましょう。
IPv6 プロトコル分析
Neighbor Discovery のための ICMPv6 の分析
ICMPv6 は、IPv6 ネットワーク、特に IPv4 の ARP に代わる Neighbor Discovery Protocol (NDP) で重要な役割を果たします。NDP トラフィックを分析しましょう。
- キャプチャファイルを使用して Wireshark を開きます。
- すべての NDP メッセージを表示するには、次のフィルターを適用します。
icmpv6.type >= 133 and icmpv6.type <= 137
このフィルターには以下が含まれます。
- タイプ 133: Router Solicitation
- タイプ 134: Router Advertisement
- タイプ 135: Neighbor Solicitation
- タイプ 136: Neighbor Advertisement
- タイプ 137: Redirect Message
キャプチャに NDP メッセージが表示されない場合は、いくつか生成しましょう。
## 新しいターミナルで、適切なインターフェースで新しい Wireshark キャプチャを開始します。
wireshark -i eth0 &
## 次に、このコマンドを実行して、ネイバー探索をトリガーします。
ping6 -c 2 ff02::1
これは、IPv6 のすべてのノードマルチキャストアドレスに ping を実行し、ネイバー探索メッセージをトリガーします。
IPv6 拡張ヘッダーの分析
IPv6 は、オプション情報を含めるために拡張ヘッダーを使用します。拡張ヘッダーを持つパケットをフィルタリングするには、次のようにします。
ipv6.nxt != 6 and ipv6.nxt != 17 and ipv6.nxt != 58
これにより、次のヘッダーとして TCP、UDP、または ICMPv6 を持たない IPv6 パケットが表示され、拡張ヘッダーを使用している可能性を示します。
Wireshark の統計ツールを使用する
Wireshark は、IPv6 トラフィックの分析に役立ついくつかの統計ツールを提供しています。
IPv6 会話統計
IPv6 会話を表示するには、次のようにします。
- 「統計」メニューをクリックします。
- 「会話」を選択します。
- 「IPv6」タブをクリックします。
これにより、キャプチャ内のすべての IPv6 会話が表示され、送信元と宛先のアドレス、パケット数、バイト数が表示されます。
列ヘッダーをクリックすると、任意の列で会話を並べ替えることができます。
IPv6 プロトコル階層
キャプチャ内のプロトコルの分布を表示するには、次のようにします。
- 「統計」メニューをクリックします。
- 「プロトコル階層」を選択します。
これにより、プロトコルの階層ビューが表示され、各プロトコルのパケットとバイトの割合が表示されます。トラフィックのどの部分が IPv6 であり、その中で ICMPv6、TCP、UDP などがどのくらいあるかを確認できます。
IPv6 エンドポイント統計
IPv6 エンドポイントを分析するには、次のようにします。
- 「統計」メニューをクリックします。
- 「エンドポイント」を選択します。
- 「IPv6」タブをクリックします。
これにより、キャプチャで確認されたすべての IPv6 アドレスが、パケット数とバイト数とともに表示されます。最もアクティブな IPv6 ホストを特定するのに役立ちます。
フローグラフ分析
パケット交換の視覚的な表現については、次のようにします。
- 「統計」メニューをクリックします。
- 「フローグラフ」を選択します。
- オプションで、「フロータイプ」に「IPv6 アドレス」が選択されていることを確認します。
- 「OK」をクリックします。
これにより、ホスト間のパケットフローの視覚的な表現が作成され、通信パターンを理解しやすくなります。
さらなる分析のためのデータの書き出し
他のツールで分析するために IPv6 データを書き出すには、次のようにします。
- 「ファイル」メニューをクリックします。
- 「パケットの分解をエクスポート」を選択します。
- 「CSV として」(またはニーズに応じて別の形式) を選択します。
- エクスポートするフィールドを選択します。
- 「保存」をクリックします。
いくつかの基本的な IPv6 情報を書き出しましょう。
## コマンドラインから簡単なエクスポートを作成します。
tshark -r /home/labex/project/ipv6_capture.pcapng -T fields -e frame.number -e ipv6.src -e ipv6.dst -e ipv6.nxt -E header=y -E separator=, > /home/labex/project/ipv6_analysis.csv
これにより、フレーム番号、送信元と宛先の IPv6 アドレス、および次のヘッダー値を含む CSV ファイルが作成されます。
書き出したファイルを表示するには、次のようにします。
cat /home/labex/project/ipv6_analysis.csv
次のような出力が表示されるはずです。
frame.number,ipv6.src,ipv6.dst,ipv6.nxt
1,::1,::1,58
2,::1,::1,58
...
カスタム IPv6 プロファイルの作成
IPv6 分析を頻繁に行う場合は、カスタムプロファイルを作成すると便利です。
- 「編集」メニューをクリックします。
- 「設定プロファイル」を選択します。
- 「+」ボタンをクリックして、新しいプロファイルを追加します。
- 「IPv6 分析」という名前を付けます。
- 「OK」をクリックします。
これで、このプロファイルを、優先する IPv6 フィルター、列レイアウト、および色でカスタマイズできます。IPv6 トラフィックを分析する必要があるときはいつでも、このプロファイルに切り替えることができます。
IPv6 分析に役立つ列を追加するには、次のようにします。
- 任意の列ヘッダーを右クリックします。
- 「列のプロパティ」を選択します。
- 「+」をクリックして、新しい列を追加します。
- 「タイトル」に「次のヘッダー」と入力します。
- 「タイプ」に「カスタム」を選択します。
- 「フィールド」に「ipv6.nxt」と入力します。
- 「OK」をクリックします。
これにより、IPv6 の次のヘッダー値を示す列が追加され、各 IPv6 パケットにカプセル化されたプロトコルを簡単に識別できるようになります。
これらの高度な分析手法を使用すると、IPv6 トラフィックパターンを調査し、潜在的な問題を特定し、IPv6 ネットワークの動作に関するより深い洞察を得るための包括的なツールキットが手に入ります。
まとめ
この実験では、強力なネットワーク分析ツールである Wireshark を使用して、IPv6 トラフィックを効果的にキャプチャ、フィルタリング、分析する方法を学びました。
まず、Ubuntu システムに Wireshark をインストールして設定し、分析用の IPv6 トラフィックを生成しました。このトラフィックをキャプチャし、詳細な検査のために保存する方法を学びました。
次に、基本的な IPv6 フィルタリング技術を習得し、IPv6 通信の特定の側面に焦点を当てることができました。また、次のような高度な分析方法も探求しました。
- Neighbor Discovery Protocol のための ICMPv6 トラフィックの分析
- IPv6 拡張ヘッダーの検査
- Wireshark の統計ツールを使用して、会話とエンドポイントに関する洞察を得る
- コミュニケーションパターンを理解するための視覚的なフローグラフの作成
- さらなる分析のためのデータの書き出し
- IPv6 分析に最適化されたプロファイルによる Wireshark のカスタマイズ
これらのスキルは、IPv6 の導入が拡大し続ける中で、現代のネットワークセキュリティ専門家にとって不可欠です。IPv6 トラフィックを効果的に監視、分析、トラブルシューティングする能力は、潜在的なセキュリティ脅威を特定し、ネットワークパフォーマンスを最適化し、適切なネットワーク機能を確保するのに役立ちます。
これらの技術をセキュリティプラクティスに適用することで、組織のネットワークの可視性を高め、IPv6 トラフィックに関連するセキュリティインシデントを検出して対応する能力を向上させることができます。


