IPv6アドレスの構造
IPv6アドレスには、図2のように「ネットワークプレフィックス」と「インターフェイス識別子(ID)」の2つの要素がある。
プレフィックスはIPv4のネットワークアドレスに相当し、以下のように表記する。
プレフィックス値/プレフィックス長
よって、「アドレス"fe80::4163:ee0e:40ff:8b23"のネットワークプレフィクスは"fe80::/64"」のように表現する。通常、プレフィックス長は64ビットである。
インターフェイスIDには、
- EUI-64(Extended Unique Identifier-64)という変換規則により、NICのMACアドレスから機械的に生成される値
- 乱数によりランダムに生成された値
の2つが使われる。初期のIPv6の実装ではEUI-64が多く、Windows XP、Mac OS XのIPv6はEUI-64を使っている。
ここではWindows XP SP2 の例を先に示そう。NICのMACアドレス情報まで表示させるには、「ipconfig」コマンドに「/all」というオプションを付けて実行する。注目してほしいのは、画面3の部分である。6オクテットのMACアドレス(Physical Address)のうち、2オクテット目から6オクテット目までが、インターフェイスID(IPv6アドレスの下位8オクテット)に含まれていることがわかるだろう。
しかしながら、EUI-64で生成されるインターフェイスIDを使うと、IPv6をアドレスを見ただけでコンピュータのMACアドレスを特定できてしまうので、インターネット上ではセキュリティ上の問題が生じる。そこで、Vista以降ではEUI-64により値を生成するのをやめ、ランダムな値を使うようになった。Windows 7で「ipconfig /all」を実行してみよう(画面4)。
MACアドレス(物理アドレス)の“00-16-36-F7-73-D2”から、インターフェイスIDをEUI-64で生成すると“0216:36ff:fef7:73d2”になる。しかし、画面4のリンクローカルIPv6アドレスのインターフェイスIDは、まったく異なる値になっている。これは、Windows Vistaで実行しても、同様の結果だ。Windows Vista以降のWindowsでは、このように、リンクローカルIPv6アドレスのインターフェイスIDから、MACアドレス(物理アドレス)を推測できないようになっている。
IPv6のアドレス
IPv4には多くの種類のアドレスがあるが、そのうち重要なのはグローバルアドレスとプライベートアドレスの2種類である。同様に、IPv6も多くの種類のアドレスがあり、そのうち重要なのは以下の3種類のアドレスだ。これだけは絶対に覚えておこう。
1.グローバルアドレス
インターネット上では、IPv4と同じくインターネット内で一意の(重複しない)グローバルアドレスを利用する。グローバルアドレスの構造は、IPv6アドレスの配布状況や技術動向に応じて修正される。現時点で実際に配布されるグローバルアドレスは、上位3ビットが「001」固定、次の61~45ビットがグローバルルーティングプレフィックス、その次の16~0ビットがサブネットID、下位64ビットがインターフェイス識別子である(図3)。
2.ユニークローカルアドレス
ユニークローカルアドレスはIPv4のプライベートアドレスに相当し、組織内で閉じたイントラネットなどで利用する。以前はサイトローカルアドレスがこの目的で使われていたが、さまざまな問題が生じたため、RFC4193でユニークローカルユニキャストアドレスに置き換えられた。ユニークローカルアドレスの上位7ビットは“1111110”で、アドレスの範囲は“fc00::/7”である。ただし、8桁目が“0”のアドレスの使用が禁止されているため、現時点でイントラネットで実際に使えるアドレスの範囲は“fd00::/8”に限られる(図4)。
ユニークローカルアドレスは、インターネットとの接続は想定していない。しかし、40ビットのGlobal IDは重複しないよう乱数により決定する。これにより、企業の合併や統合により複数のネットワークが接続された場合でも、アドレスを付け直さなくて済む。
3.リンクローカルアドレス
IPv6では、Ethernetのブロードキャストの到達範囲(ブロードキャストドメイン)を「リンク」と呼ぶ。リンクローカルアドレスは、ノードの起動時にインターフェイスに自動的に割り当てられるアドレスで、グローバルアドレスなどの設定を自動化するために用いられる。
リンクローカルアドレスは、リンク内では一意性が保証されるが、ルーターを超える通信では使用できない。アドレスの形式は、上位10ビットが“1111111010”、次の54ビットがすべて0、そして下位64ビットがインターフェイス識別子である(図5)。
インターフェイス識別子は、ノードの起動時やインターフェイスを有効にした際に例外なく自動設定され、手動で設定することはできない。リンクローカルアドレスは“fe80::インターフェイス識別子”と表記でき、プレフィクスは“fe80::/64”である。
次回は手元にあるLANをIPv6化するというテーマで解説していく。
初出時、図2の画像に誤りがありました。お詫びし、訂正させていただきます。(2011年6月14日)
この連載の記事
-
第11回
ネットワーク
IIJ IPv6仮想アクセス(ネットワーク型)を使ってみる(後編) -
第10回
ネットワーク
IIJ IPv6仮想アクセス(ネットワーク型)を使ってみる (前編) -
第9回
ネットワーク
「IPv6仮想アクセス」でPPTPを使ったIPv6接続を試す -
第8回
ネットワーク
NVR500でフレッツ・ドットネットに接続する -
第7回
ネットワーク
OCN IPv6を複数のPCで共有するには? -
第6回
ネットワーク
国内で実績のあるOCN IPv6でIPv6を使ってみよう -
第5回
ネットワーク
TeredoでIPv6インターネットを体験する -
第4回
ネットワーク
WebのIPv6対応を加速した「World IPv6 Day」 -
第3回
ネットワーク
ルーターでIPv6のLANを接続しよう -
第2回
ネットワーク
IPv6を使ったLANを試してみよう - この連載の一覧へ