IPv6
IPv6アドレスの種類
GREETINGS:
こんにちは。
前回の記事では、IPv6の話題から少し脱線してインターネットとIPの歴史について解説しました。
今回は話を戻して、IPv6アドレスの種類について解説していきます。
第一回の記事でも軽く触れていますが、IPv6にはIPv4にはない種類のアドレスがありますので、これからIPv6を活用して行きたいと考えている人に分かりやすく解説できればと思っています。
SECTION 01:
Types of IPv6 addresses
前々回の記事のおさらいになりますが、IPv6には以下の特徴があります。
- アドレス長が128ビット
- IPv4に比べてシンプルなヘッダフォーマット
- ブロードキャストアドレスの廃止
- エニーキャストアドレスの概念の追加
約340澗通りのアドレス範囲は言わずもがな、ヘッダフォーマットに関しても最適化されているため、IPv4と比べて高速な処理ができるとされています。
●IPv4のヘッダフォーマット

●IPv6のヘッダフォーマット

また、IPv4にあったブロードキャストアドレスは廃止され、ユニキャストアドレス、マルチキャストアドレス、そして新たな概念であるエニーキャストアドレスの3つのアドレスが実装されています。
SECTION 02:
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つのインターフェースに複数設定することが出来るため、リンクローカル、ユニークローカル、グローバルの用途別アドレスを使い分けることが可能です。

SECTION 03:
Address Auto-Configuration (SLAAC)
マルチキャスト、エニーキャストアドレスの解説に入る前にIPv6の自動アドレス生成についても触れておきます。
この自動アドレス生成(SLAAC:StateLess 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を生成する方式が用いられるようになってきているため、自動アドレスの安全性は高まってきていると言えます。
SECTION 04:
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が有効なルータに向けての通信であることを表します。
SECTION 05:
Anycast Addresses
エニーキャストアドレスは複数のノードで一つのアドレスを共有し、エニーキャストアドレスに対して通信を行ったホストに最も近い(最小メトリックを持つ)ノードにだけに通信が届くという特殊なアドレスです。
「特殊なアドレス」と書きましたが、エニーキャスト特有のアドレス形態があるわけではなく、グローバルユニキャストアドレスを用いることが一般的とされています。
同じ役割を持ったノードで仮想化IPアドレスのようなものを共有して、通信元に一番近いノードだけが応答するイメージを持ってもらえれば分かり易いかもしれません。
皆さんが「FXCさん!!」と弊社の社員が複数いる場所に呼び掛けて、たまたま一番近くにいた私が「はーい!なんでしょう?」と応答する感じですね。

ここでひとつ衝撃の事実をお伝えしましょう。このエニーキャスト、実はユニキャストです。
ユニキャスト、マルチキャストと並べて紹介した手前、エニーキャストという独自のアドレス形態が定義されているように思われた方もいらっしゃるでしょうが、先ほどエニーキャストアドレスは「グローバルユニキャストアドレスを用いることが一般的」と書いたことから、実通信はユニキャストで行われており、ネットワーク設計によってエニーキャストを実現するという認識が正しいと言えます。
つまり、エニーキャストアドレスとは概念なのです。
.png)
エニーキャストアドレスが複数の同じ役割を果たすノードに割り当てられている場合には、クライアントは個々のノードのアドレスを意識する必要はなく、DNSサーバならこのアドレスというように単一のアドレスを設定し、実際にはDNSサーバ群の中で最もレイテンシの低いサーバに転送されるということが実現できます。
この様にエニーキャストアドレスをうまく活用できれば、サーバの冗長化や負荷分散、さらにはセキュリティ強化などの様々なメリットを享受できるのです。
今回は技術解説がメインだったので、文字多めの退屈な内容になってしまいましたが読んでいただき、ありがとうございます。
次回も引き続き技術解説になります
(→ 続編へ続く!)