IPv6ユニキャストアドレスの分類

IPv4アドレスと同様にIPv6アドレスもユニキャストアドレスがメインです。ルータやホストのネットワークインタフェースに設定するのは、ユニキャストアドレスです。IPv6ユニキャストアドレスは、有効範囲(スコープ)によって3種類に分類できます。

  • グローバルユニキャストアドレス
    スコープの制限がなく、グローバルで有効なユニキャストアドレス
  • サイトローカルユニキャストアドレス
    同一サイト(組織)で有効なユニキャストアドレス。ただし、現在では廃止されています。
  • ユニークローカルユニキャストアドレス
    サイトローカルユニキャストアドレスに代わって、同一サイト内で利用するユニキャストアドレス。
  • リンクローカルユニキャストアドレス
    同一リンク(サブネット)上で有効なユニキャストアドレス。主に同一リンク上の他のホストとのアドレス解決やルーティングプロトコルなどの制御情報をやり取りするために利用します。

グローバルユニキャストアドレス

最初の3ビットが「001」ではじまるアドレスが、グローバルユニキャストアドレスとして定義されています。グローバルユニキャストアドレスのレンジは、「2000::/3」と表記することもできます。図で表すと次のようになります。

図 グローバルユニキャストアドレス
図 グローバルユニキャストアドレス

このアドレス範囲の中でさらに次のように用途が決められています。

  • 2001::/16-IPv6インターネット
  • 2002::/16-6to4移行メカニズム
  • 2003::/16~3ffd::/16-未割り当て
  • 3ffe::/16-6bone

通常は、IPv6を利用してネットワークを設計、構築するときには2001::/16のアドレス範囲からアドレッシングをすることになります。IPv6インターネットの接続サービスを契約すると、ISPから48ビット分のグローバルルーティングプレフィックスを割り当てられます。

6to4は、IPv4からIPv6へ移行するときに利用するトンネリング技術で、6to4トンネルで利用する特殊なアドレス範囲が20002:/16です。6boneとは、IPv6の研究・開発用に利用しているネットワークです。なお、6Boneは実験的な役割を終え、2006年6月に運用を停止しています。現在は、6Boneの範囲のIPv6アドレスは利用されていません。

サイトローカルアドレス

IPv4のプライベートアドレスと同じような目的で、特定のサイト(組織)内での利用に限定したアドレスレンジです。サイトローカルアドレスは、「1111 1110 11」というビットパターンで始まります。これを16進表記で表すと「fec0::/10」です。サイトローカルアドレスの構造を図で表すと次のようになります。

図 サイトローカルアドレス
図 サイトローカルアドレス

サイトローカルアドレスは、アドレス構造にサイト自体を識別する情報が入っていないので、多数のサイトでアドレスの重複が発生する可能性があります。サイト内だけで利用するアドレスであっても、重複しないようにサイトローカルアドレスは利用しない方針になっています。サイトローカルアドレスの廃止の方針については、RFC3879に詳細が記述されています。

RFC 3879 – Deprecating Site Local Addresses http://www.faqs.org/rfcs/rfc3879.html

ユニークローカルユニキャストアドレス

サイトローカルユニキャストアドレスに代わって、企業内のLANなどプライベートな範囲で利用するためのアドレスがユニークローカルユニキャストアドレスです。

ユニークローカルアドレスはFD00::/8の範囲です。40ビットのグローバル識別子によって、サイトを識別します。グローバル識別子はランダムに生成する値を利用します。ランダムなグローバル識別子を生成する計算方法が指定されています。グローバル識別子の完全な一意性は保証されていませんが、40ビットものランダムな値が重複する可能性は非常に低いものとなります。

このようなユニークローカルユニキャストアドレスによって、プライベートなサイト内で他の組織と重複しないアドレッシングが可能です。

図 ユニークローカルユニキャストアドレス
図 ユニークローカルユニキャストアドレス
ユニークローカルユニキャストアドレスとしてFC00::/8の範囲もあります。FC00::/8は将来利用として予約されています。FC00::/8とFD00::/8を合わせてユニークローカルユニキャストアドレス全体の範囲はFC00::/7です。

リンクローカルアドレス

リンクローカルアドレスは、同じリンク(サブネット)上のホストとの通信においてのみ利用するアドレスです。リンクローカルアドレスは、「1111 1110 10」というビットパターンで始まります。16進表記では「fe80::/10」です。リンクローカルアドレスの構造は次の図のようになります。

図 リンクローカルユニキャストアドレス
図 リンクローカルユニキャストアドレス

IPv6ホストは、各インタフェースに必ずリンクローカルアドレスを持ちます。リンクローカルアドレスによって、同じリンク上のホストとの間でアドレスの自動設定や、レイヤ2アドレスのアドレス解決を行うことができます。リンクローカルユニキャストアドレスのインタフェースIDは、modified EUI-64形式でMACアドレスを基にして自動的に生成されます。

インタフェースID

IPv6アドレスは64ビットのプレフィクスと64ビットのインタフェースIDをあわせたものです。プレフィクスIPv4でいうところのネットワークアドレスです。そして、インタフェースIDは、IPv4でいうところのホストアドレスです。つまり、インタフェースIDで、ネットワーク上のホストを識別します。

インタフェースIDは、手動で設定することができます。しかし、手動で設定するのはけっこう面倒なことになります。手動で設定する方法に加えて、自動的に一意なインタフェースIDを生成する仕組みがあります。この仕組みをmodified EUI-64といいます。また、modified EUI-64の他に匿名アドレスとして自動的にインタフェースIDを生成する方法もあります。つまり、インタフェースIDの決め方は、

  • 手動
  • 自動(modified EUI-64、匿名)

の方法があります。

modified EUI-64形式のインタフェースID

modified EUI-64は、ホストのMACアドレスをベースにしてインタフェースIDを生成します。MACアドレスは一意なので、MACアドレスを基にしてインタフェースIDを生成すれば、一意なインタフェースIDができます。

MACアドレスは、3バイトのベンダーIDと3バイトのシリアル番号から成り立っているので全部で48ビットです。インタフェースIDの64ビットには足りません。そのため、16ビットを追加します。modified EUI-64は、MACアドレスを真ん中で割って、その間に16ビット分の「FF:FE」を追加します。これで、64ビットになります。

そして、さらにMACアドレスの上位1バイトのうち下位2ビット目のビットを反転させます。このMACアドレスの上位1バイトの下位2ビット目をUniversal/Localビットといいます。

図 modified EUI-64形式のインタフェースID
図 modified EUI-64形式のインタフェースID

たとえば、MACアドレスが「00-0B-5D-4B-D8-90」だった場合、IPv6アドレスのインタフェースIDは、3バイトずつ分けて、間にFFFEを入れます。

「00-0B-5D」 + 「FF-FE」 + 「4B-DB-90」

そして、U/Gビットを反転させます。

「02-0B-5D」 + 「FF-FE」 + 「4B-DB-90」

これをIPv6アドレスの表記にしたがって16ビットごとに16進数に変換して「:」で区切ると、 以下のようなインタフェースIDになります。

「020B:5DFF:FE4B:D890」

このように、64ビットのインタフェースIDはMACアドレスをもとに一意に自動的に生成できます。ただ、ルータやサーバなどの常時稼動しているような機器の場合、インタフェースIDは手動で設定したほうがいいでしょう。MACアドレスをベースにしたmodified EUI-64形式だとインタフェースIDはとてもわかりにくくなってしまいます。ルータやサーバなどの状態を確認するためにping等を行うときに、わかりにくいインタフェースIDを指定するのはとても面倒になってしまいます。

匿名アドレス

ルータのシリアルインタフェースなどMACアドレスがないインタフェースもあります。このようなMACアドレスがないインタフェースに対して、イーサネットインタフェースのインタフェースIDをそのまま利用することができます。または、ランダムに64ビットのインタフェースIDを生成することができます。ランダムに生成するインタフェースIDを匿名アドレスといいます。

MACアドレスがあるインタフェースでもセキュリティ上、匿名アドレスを利用することも考えられます。modified EUI-64形式だとIPv6アドレスをみれば、MACアドレスがわかってしまいます。そのため、MACアドレスの偽装などのセキュリティ上の問題が発生する可能性が出てきます。そうしたことがないように、あえて匿名アドレスでインタフェースIDを設定することがあります。 ただし、ランダムな匿名アドレスのインタフェースIDは非常にわかりにくいものになってしまいます。Windows OSは、インタフェースIDのデフォルトは匿名アドレスになっています。