IPv6(基本プロトコルと通信確認)

目次

IPv6 – ICMPv6とは

ICMPv6(Internet Control Message Protocol for IPv6)は、IPv6で利用される制御用のプロトコルです。IPv4で利用されていたICMPに加えて、IPv6ではさらに多くの機能を担っています。具体的にはエラー通知やネットワーク情報収集だけでなく、ARPに相当するアドレス解決、アドレス重複検出、マルチキャスト制御といった機能も含まれます。IPプロトコル番号は58であり、RFC4443で定義されています。基本的なパケットフォーマットはIPv4のICMPと類似しています。

ICMPv6メッセージの分類

ICMPv6のメッセージは大きく二つに分かれます。タイプ0~127はエラーメッセージ、128~255は情報メッセージです。さらにIPv6固有の近隣探索メッセージも用意されています。

カテゴリタイプメッセージ
エラー1Destination Unreachable(宛先到達不能)
2Packet too Big(パケット過大)
3Time Exceeded(時間切れ)
4Parameter Problem(パラメータ異常)
情報128Echo Request(エコー要求、ping)
129Echo Reply(エコー応答)
130Multicast Listener Query
131Multicast Listener Report
132Multicast Listener Done
近隣探索133Router Solicitation(ルータ要請)
134Router Advertisement(ルータ広告)
135Neighbor Solicitation(近隣要請)
136Neighbor Advertisement(近隣広告)
137Redirect(リダイレクト)

Router Solicitation / Router Advertisement

これらはノードとルータの間でやり取りされ、IPv6の自動設定に不可欠です。

  • ノードにIPv6アドレスを自動的に割り当てる
  • 接続リンクのプレフィックスを通知して、直接通信可能なアドレス範囲を識別
  • パケットのネクストホップを決定
  • MTUなどのパラメータを伝達
  • 接続可能なルータの存在を検出

Neighbor Solicitation / Neighbor Advertisement

隣接ノード間でのアドレス解決や状態確認に利用されます。

  • IPv4のARPに相当し、IPv6アドレスとMACアドレスを関連付ける
  • 自身が利用しようとするIPv6アドレスが他ノードと重複していないか検出(DAD: Duplicate Address Detection)
  • 通信相手ノードが応答しなくなった場合に到達不能を検出

Redirect

ルータが、より適切な転送先が存在することをノードに知らせる仕組みです。IPv4のICMPリダイレクトと同じ役割を持ちます。

試験対策:ICMPv6は単なるエラーメッセージにとどまらず、ARPに相当するアドレス解決、アドレス重複検出、IPv6自動設定などの重要機能を担っています。特にNeighbor Solicitation / AdvertisementとRouter Advertisementの役割はCCNA試験で頻出です。プロトコル番号が58であることも必ず覚えておきましょう。

IPv6 – Neighbor Discoveryとは

IPv4では宛先のMACアドレスを知るためにARPを利用し、ブロードキャストで問い合わせを行います。一方IPv6ではブロードキャストが存在しないため、代わりに Neighbor Discovery(ND、近隣探索) を用いてMACアドレスを解決します。この仕組みは ICMPv6のNeighbor Solicitation(NS)メッセージ要請ノードマルチキャストアドレス を利用する点が特徴です。

バージョン説明
IPv4ARPブロードキャストで宛先MACを取得
IPv6ICMPv6 NSメッセージと要請ノードマルチキャストで宛先MACを取得

データリンク層アドレス解決の流れ

IPv6ノードはインターフェースにIPv6アドレスを持つと、そのアドレスから導出される 要請ノードマルチキャストアドレス に自動的に参加します。

通信の流れは次の通りです。

  1. 送信元ノードは宛先のMACアドレスを知るため、宛先の要請ノードマルチキャストアドレス宛に NSメッセージ を送信する
  2. 宛先ノードは自身のMACアドレスを含む NAメッセージ を返信する
  3. これにより送信元ノードは宛先ノードのMACアドレスを学習し、IPv6通信が可能となる

この関係をIPv4に当てはめると NS = ARPリクエスト、NA = ARPリプライ に相当します。

通信例

項目ノードAノードB
グローバルユニキャストアドレス2001:1:1:1::1111:11112001:1:1:1::2222:2222
要請ノードマルチキャストFF02::1:FF11:1111FF02::1:FF22:2222
IPv6マルチキャストMAC33:33:FF:11:11:1133:33:FF:22:22:22
MACアドレス1111:1111:11112222:2222:2222

Neighbor Discoveryキャッシュの確認方法

IPv4のARPキャッシュに相当するものがIPv6にも存在し、Cisco IOSでは以下のコマンドで確認できます。

バージョンコマンド説明
IPv4show ip arpARPキャッシュを確認
IPv6show ipv6 neighborsNeighbor Discoveryキャッシュを確認

試験対策:
・IPv6ではARPを使わずNeighbor Discoveryを利用する
・要請ノードマルチキャストを利用するためブロードキャストが不要
・NSはARPリクエストに相当、NAはARPリプライに相当
・確認コマンドは show ipv6 neighbors

IPv6 の PINGコマンド

IPv4では1つのインターフェースに通常1つのIPアドレスを設定しますが、IPv6では複数のアドレスを持つことができます。特にリンクローカルアドレスとグローバルユニキャストアドレスの2種類は必ずといっていいほど利用されます。疎通確認を行う場合は、まず隣接ルータのリンクローカルアドレス宛てにPINGを実行して、同じセグメント内での通信が成立するか確認します。

リンクローカルアドレス宛てにPINGを送る場合は、必ず送信元インターフェースを明示する必要があります。なぜならリンクローカルアドレスはセグメント内でしか有効でなく、複数のインターフェースに同じリンクローカルアドレス範囲が存在し得るからです。

例として、隣接ルータにリンクローカルアドレス FE80::1 でPINGする場合は次のように実行します。

Router# ping ipv6 FE80::1 source FastEthernet0/0

一方、グローバルユニキャストアドレス宛てにPINGする場合はルーティングが働くため、送信元インターフェースを指定する必要はありません。

隣接機器のIPv6アドレスを確認したい場合には次のコマンドが有効です。

Router# show cdp neighbors detail

IPv6 のネイバーテーブル

IPv4ではARPキャッシュを show ip arp で確認できますが、IPv6ではNeighbor Discoveryによって学習した情報をネイバーテーブルとして保持します。確認コマンドは以下の通りです。

Router# show ipv6 neighbors

ネイバーテーブルに表示される内容は以下の通りです。

項目説明
検出されたネイバーのIPv6アドレス
ネイバー情報の有効期限(minutes単位)
ネイバーのMACアドレス
到達状態(STALE=最近通信なし、REACH=到達確認あり など)
ネイバーを検出した自機のインターフェース

試験対策:IPv6のリンクローカル宛てPINGではインターフェース指定が必須であることを押さえておきましょう。グローバルユニキャストでは指定は不要です。またネイバーテーブルの確認コマンドは show ipv6 neighbors であり、ARPと混同しないように注意してください。ネイバーの到達状態(STALE、REACHなど)は試験でも問われやすい項目です。

◆まとめスライド

目次