FXC Engineer Blog - ipv6_address.txt
_ ×

IPv6アドレスの種類

// Decoding the Structure of IPv6 Addresses...

SECTION 03: Understanding Address Types

前回「IPの歴史、インターネットの歴史」で概要を説明しましたが、IPv6には以下の特徴があります。

  • アドレス長が128ビット
  • IPv4に比べてシンプルなヘッダフォーマット
  • ブロードキャストアドレスの廃止
  • エニーキャストアドレスの概念の追加

約340澗通りのアドレス範囲は言わずもがな、ヘッダフォーマットに関しても最適化されているため、IPv4と比べて高速な処理ができるとされています。

IPv4のヘッダフォーマット

IPv6のヘッダフォーマット

また、IPv4にあったブロードキャストアドレスは廃止され、ユニキャストアドレスマルチキャストアドレス、そして新たな概念であるエニーキャストアドレスの3つのアドレスが実装されています。

Unicast Addresses & Scopes

IPv6では、ひとえにユニキャストアドレスと言っても、スコープと呼ばれる異なる到達範囲によって違ったアドレス形態が存在します。

以下はIPv6のユニキャストアドレスのスコープ別解説です。

リンクローカルユニキャストアドレス
FE80::/10」から始まる同一のセグメント上でのみ有効な到達範囲のアドレス形態。つまり、ネットワークをまたいだ通信ができないアドレス形態です。全てのインターフェースには少なくとも1つのリンクローカルユニキャストアドレスが必要となり、このアドレスを使って自動アドレス構成、ネイバー探索などのIPv6独自の機能が動作することになります。
ユニークローカルアドレス
FC00::/7」もしくは「FD00::/8」から始まるIPv4で言うところのプライベートアドレスに相当するアドレス形態。内部ネットワーク内で一意のアドレスとなればよいですが、異なる組織のネットワークが接続された場合でも、アドレスの衝突の可能性が起こりにくいようにローカルと言いつつグローバルでも一意となるべきとされています。(現在は主に `FD00::/8` が利用されます)
グローバルユニキャストアドレス
2000::/3」で定義されるインターネット上で一意なアドレス形態。つまり、全世界で一意となるアドレスです。ISPによって割り当てられたグローバルルーティングプレフィックスと、サブネットごとのサブネットID、そしてインターフェースIDで構成され、サブネットID、インターフェースIDは組織内で自由に割り当てることが出来ます。このアドレス構造によってIPv4のようなNATを使ったアドレス変換を必要とせず、組織内のすべての機器のインターフェースにグローバルユニキャストアドレスを割り当てることが可能となります。

他にもサイトローカルアドレスがありましたが、RFC3879で廃止されてしまったためここでは扱いません。

また、IPv6アドレスは1つのインターフェースに複数設定することが出来るため、リンクローカル、ユニークローカル、グローバルの用途別アドレスを使い分けることが可能です。

Address Auto-Configuration (SLAAC)

マルチキャスト、エニーキャストアドレスの解説に入る前にIPv6自動アドレス生成についても触れておきます。

この自動アドレス生成(SLAACStateLess Address AutoConfiguration)はデバイスがIPv6アドレスのインターフェースID部分を生成し、プレフィックスと組み合わせることで自動的にIPv6アドレスをインターフェースに設定するという仕組みです。

有名な生成の方式としては「EUI-64」と呼ばれるフォーマットを利用して、デバイスのMACアドレスからインターフェースIDを生成するというものがあります。

MACアドレスは我々のようなメーカによって世界中で重複が無いように (一応) 管理されているため、EUI-64のフォーマットに沿って生成すれば、理論上はグローバルで一意になります。なるはずです。 (少なくとも弊社では重複が無いようにMACアドレスを管理しています!)

MACアドレスは48ビットですが、EUI-64に基づいて変換すると64ビットのインターフェースIDとなります。そのため、64ビットのプレフィックスと64ビットのインターフェースIDを合わせてちょうど128ビットのIPv6アドレスとすることが出来るわけです。

一方で、EUI-64に基づいた変換は複雑な演算は必要ないため、機器のMACアドレスが外部に漏洩してしまった場合には、アドレスが割り出せてしまう可能性もあるため注意が必要です。

資格勉強などでこの自動アドレス生成について既にご存じの方もいるでしょうが、現在ではEUI-64での自動生成は前述のセキュリティに関する懸念から残念ながら非推奨になっています。

それでは自動アドレス生成が使えないから不便じゃないか!と思われたかもしれませんが、現在はMACアドレスと暗号を用いたインターフェースIDを生成する方式が用いられるようになってきているため、自動アドレスの安全性は高まってきていると言えます。

Multicast Addresses

お次はマルチキャストについての解説です。

IPv4のマルチキャストで何となくしか分かってないのに、IPv6のなんてますます分からないよ!って方もいらっしゃるかもしれませんが、先ほども述べた通りブロードキャストは廃止されてしまったので、もうマルチキャストから逃げることはできません。

IPv6マルチキャストアドレスは「FF00::/8」で表されます。つまり先頭8ビットがすべて1である場合はマルチキャストアドレスとして扱われます。

次に続く4ビットが「フラグ」、その次の4ビットが「スコープ」で、そのあとの112ビットを「グループID」と呼びます。

ユニキャストアドレスと同様でスコープには到達範囲という意味があり、ここに入る16進数によってマルチキャストの届く範囲を指定できます。

  • フラグ:
    • 0: IANAによって永続的に割り当てられていることを示す。
    • 1: 一時的に割り当てられていることを示す。
  • スコープ (予約・未指定を除く):
    • 1: ノードローカル
    • 2: リンクローカル
    • 4: 管理ローカル
    • 5: サイトローカル(廃止)
    • 8: 組織ローカル
    • E: グローバル

IPv4のマルチキャストアドレスにもスコープの概念が存在しますが、IPv6の方が若干分かり易い印象を受けます。

また、IANAによって確保されている「予約済みIPv6マルチキャストアドレス」もあり、例えば FF02::1 は同一リンク上の全てのノードに向けた通信、FF02::5 は同一リンク上の全てのOSPFv3が有効なルータに向けての通信であることを表します。

Anycast Addresses

エニーキャストアドレスは複数のノードで一つのアドレスを共有し、エニーキャストアドレスに対して通信を行ったホストに最も近い(最小メトリックを持つ)ノードにだけに通信が届くという特殊なアドレスです。

「特殊なアドレス」と書きましたが、エニーキャスト特有のアドレス形態があるわけではなく、グローバルユニキャストアドレスを用いることが一般的とされています。

同じ役割を持ったノードで仮想化IPアドレスのようなものを共有して、通信元に一番近いノードだけが応答するイメージを持ってもらえれば分かり易いかもしれません。

皆さんが「FXCさん!!」と弊社の社員が複数いる場所に呼び掛けて、たまたま一番近くにいた私が「はーい!なんでしょう?」と応答する感じですね。

ここでひとつ衝撃の事実をお伝えしましょう。このエニーキャスト、実はユニキャストです。

ユニキャスト、マルチキャストと並べて紹介した手前、エニーキャストという独自のアドレス形態が定義されているように思われた方もいらっしゃるでしょうが、先ほどエニーキャストアドレスは「グローバルユニキャストアドレスを用いることが一般的」と書いたことから、実通信はユニキャストで行われており、ネットワーク設計によってエニーキャストを実現するという認識が正しいと言えます。つまり、エニーキャストアドレスとは概念なのです。

エニーキャストアドレスが複数の同じ役割を果たすノードに割り当てられている場合には、クライアントは個々のノードのアドレスを意識する必要はなく、DNSサーバならこのアドレスというように単一のアドレスを設定し、実際にはDNSサーバ群の中で最もレイテンシの低いサーバに転送されるということが実現できます。

この様にエニーキャストアドレスをうまく活用できれば、サーバの冗長化負荷分散、さらにはセキュリティ強化などの様々なメリットを享受できるのです。

今回は技術解説がメインだったので、文字多めの退屈な内容になってしまいました。

ブラウザバックせずにここまで読んでいただき、ありがとうございます。

次回も引き続き技術解説になりますが、良ければお仕事の合間に読んでやってください

それではまたお会いしましょう!(→ 来月更新予定...

READY. SECTION: IPv6 Address Types DATE: 2025/07/28