Home > IPv6実践導入ガイド > 02 IPv6の実装に必要な知識

02-02 IPv6アドレスの構成方法


プレフィックスとインターフェイスID

「プレフィックス」と「インターフェイスID」は、IPv4で言う所の「ネットワークID」と「ホストID」と同義語だ。

IPv4のネットワークIDは、サブネットマスクで動的に長さが変わるが、IPv6の場合は1セグメントに割り当てるプレフィックスは64ビット(/64)となっている。
このため、IPv6アドレスを構成する際には、上位64ビットは所属するセグメントにより自動的に決まる事になる。

IPv4のホストIDは、IPv4アドレスの32ビットからネットワークID引いた残りなので、これも不定長であるが、IPv6の場合は、プレフィックスが64ビットなので、IPv6アドレスの128ビットから64ビットを引いた残り64ビットがインターフェイスIDという事になる。

IPv6の場合は、複数のIPv6アドレスを割り当てるが、上位64ビットのプレフィックスが異なるだけで下位64ビットのインターフェイスIDは同じ値を使うのが一般的だ。

セグメント内で使用できるIPアドレス数が、IPv4アドレスの総数より遥かに多く割り当てる事が出来るので、ノード数の増加に伴ってネットワークIDのビット長を変更しなくてはならないといったトラブルとは無縁だ。

 

手動構成と自動構成

IPv4であっても、ノードに対するIPアドレス割り当ては、手動設定する場合と、DHCPなどで自動構成するケースがある。IPv6もこのあたりは全く同じで、手動構成と自動構成のどちらも可能だ。
ただし、IPv6アドレスは128ビットとえらく長いIPアドレスなので、手動でIPv6アドレスを構成するのは一苦労だ。
このため、固定にIPv6アドレスを必要としているノード以外は自動構成に任せるのも手だ。
IPv6アドレスの自動構成方法はいくつかのバリエーションが存在している。

 

手動でIPv6アドレスを構成する

手動でIPv6アドレスを割り当ての場合は、インターフェイスIDの64ビットフルに使うことはまずなく、特定のルールに基づいたラスト16ビットあるいは32ビット程度で構成するのが現実的だ。

例えば、ルーターやL3-SWのようなL3中継ノードには「1」から順番にインターフェースIDを割り当てて、「プレフィックス::1」のようなIPv6アドレスを割り当てると言った感じだ。
また、メールサーバーやDNSといったノードの機能別に割り当てる番号帯を決めてインターフェイスIDを決めるケースも多い。
筆者が良く使うのは、プロトコルのポート番号をインターフェイスIDに使う方法だ。例えば、DNSサーバーであれば、プレフィックス::53といった感じだ。
サーバーの数か多い場合は、32ビットを使って「プレフィックス::53:1」といった感じて表現するのも良いだろう。
IPv6は16進数を使うので、Windows のドメインコントローラーは ::dc01のようなネーミングも可能だ。これはIPv4ではできなかった自由度でもある。

これ以外にもいろいろなバリエーションを考える事が出来るが、固定IPv6アドレスを必要とするノード用に、運用を開始する前に体系を決めておおく必要がある。
IPv4と同様にこうしなくてはならないというルールはないので、いくつかのアイディアを紹介しておこう。

・L3中継装置はデフォルトゲートウェイに1番を割り当て、以降順番に割り当てる
・機能別にアドレス帯を決める
・ポート番号を使う
・機能名を使う
・cafeやbeefのようなa~fで表現できる4文字以下の単語を使う
・IPv4アドレスをそのまま使う

cafeやbeefをインターフェイスIDに使用するのは、インターネット上に公開しているWebサーバに使用するとちょっとした茶目っ気で楽しいだろう。
ちなみに、JPNICのWebサーバーはcafeが使用されている。

筆者は滅多に使わないが、最後に紹介した「IPv4アドレスをそのまま使う」方法は、例えば、192.168.0.1のIPv4アドレスを持つホストに、「プレフィックス:192:168:0:1」と言った感じだ。IPv4アドレスとの関連性が一目でわかるので、IPv6とIPv4の関連性を少しでわかりやすくしたいといった用途に向くだろう。

 

IPv6アドレスを自動構成する

IPv6アドレスを自動構成されるには後述のRAが必須条件となる。このRAを簡単に説明すると、ルーターなどのL3中継ノードが、リンク内のノードに対してリンク割り当てられているプレフィックスを広告する仕組みだ。
IPv6アドレスを自動構成するノードは、このRAからの情報を受け取って、GUAやULAのIPv6アドレスを自動構成する。唯一の例外はリンクローカルアドレスで、リンクローカルアドレスはNICがリンクアップした際に自動構成される。

既に第1章で簡単には解説しているが、IPv6アドレスの自動構成に必要なインターフェイスIDの自動構成には以下の種類がある。

・EUI-64アドレス
・ランダム アドレス
・匿名アドレス

 

EUI-64アドレス

EUI-64は、MACアドレスからインターフェイスIDを作り出す構成方法だ。EUI-64については第1章での解説で十分なので、本章での解説は割愛する。

ランダム アドレス

その名の通り、ランダムな値を生成し、インターフェイスIDに使用するのがランダム アドレスだ。
Microsoft の Windows Vista、Windows server 2008以降のWindows OS等がこのランダム値を使用したネットワークIDを使用している。

ランダムと言っても、OS構成時やNICを取り付けた時に静的な割り当てがされるので、NICの交換やOSの再インストール等をしない限り同じインターフェイスIDが使い続けられる。

匿名アドレス

ランダムな値をインターフェイスIDに使用するのはランダム アドレスと同じだが、匿名アドレスは再起動や一定時間が経過するとインターフェイスIDが再生成されるのがランダム アドレスと大きな違いだ。
匿名アドレスのもう一つの特徴に、DDNS(ダイナミックDNS)に登録されないという特徴も持っている。
Windows Server 2008以降のWindows Server OSは、ランダム アドレスしか構成しないが、Windows Vista以降のWindows Client OSは、ランダム アドレスと、匿名アドレスの両方を自動構成し、クライアントPCからのアウトバウンド通信をする際は、送信元IPv6アドレスに匿名アドレスを使用する。
DDNSに登録されないので、どのPCが通信したのかが特定できないので匿名と名付けられたのであろう。

 

RA

IPv4のIPアドレス自動構成は、DHCP(IPv6用DHCPと区別するため、以降DHCPv4)に依存しており、DHCPv4が存在しない環境ではIPv4アドレスの自動構成をする事が出来ない。(厳密な言い方をすると、DHCPが存在しない環境では、169.254.0.0/16のIPv4アドレスが自動構成される)

これに対して、IPv6のIPアドレス自動構成は、RA(Router Advertisement)と呼ばれるルーターなどのL3中継装置が告知する構成情報だけでGUA/ULAのIPv6アドレスを自動構成する事が出来る。(リンクローカールアドレスは、NICがリンクアップした段階で自動構成される)
これは、RAがリンク(L3セグメント)に割り当てられたGUA/ULAプレフィックス情報をリンク内のノードに対して提供しており、IPv6アドレスを自動構成する設定になっているノードは、このプレフィックスに加え、所定の方法でインターフェイスIDを自動構成してIPv6アドレスを自動構成しているのだ。

[ RAの動作イメージ ]

 

DHCPv6とIPv6のDNSディスカバリー

困った事に、RAでは参照DNSを通知する事が出来ない(RFCにはRAで参照DNSを指定する仕様が盛り込までいるが、筆者が知る限りこの仕様を実装している実製品を見た事が無い)

このため、DHCPv6を使用して、参照DNSやドメイン名の通知をすることになる。

RAでは、プレフィックス情報だけではなく、これらのコントロールを指定するMフラグ(正式にはManaged Flag)とOプラグ(Other Config Flag)が通知され、このフラグの組み合わせでDHCPv6をどのように使用するのかが指定される。

[ RAのフラグ コントロール ]

Mフラグ Oフラグ 意味
ON ON IPアドレス構成と、それ以外の情報をDHCPv6から得る(ステートフル)
ON OFF IPアドレス構成はDHCPv6から得るが、それ以外の情報は手動などの別な手段で設定する
OFF ON IPアドレス構成はRAからプレフィックスを得るが、それ以外の情報はDHCPv6から得る(ステートレス)
OFF OFF DHCPv6を使用しない

 

[ RAとDHCPv6の動作イメージ ]

このフラグの組み合わせで、DHCPv6は「ステートレスモード」と「ステートフルモード」の2種類の動作を選択する事が出来る。

Mフラグ:OFF/Oフラグ:ONで指定された「ステートレスモード」の場合、IPv6アドレス自体は与えられたプレフィックス情報と自動構成したインタフェイスIDでIPv6アドレスが自動構成され、IPv6アドレス以外の参照DNSやドメイン名はDHCPv6から入手することになる。
IPv6アドレス管理が簡略化できるので、ステートレスモードのが好まれて使用されているようだ。

一方、Mフラグ:ON/Oフラグ:ONで指定された「ステートフルモード」の場合は、DHCPv4と同様に、IPv6アドレスに構成に必要な情報をDHCPv6が振り出す。
振り出されたIPv6アドレスは、DHCPv6に記録されるので、振出されたIPv6アドレスをDHCPで管理したい場合はこちらの方式が良いだろう。

DHCPv6が構成情報を直接渡せるのは、DHCPv4と同様にリンクローカル内にDHCPv6が存在しているときだけだ。
このため、複数セグメントで運用する場合は、IPv4と同様にDHCPv6リレーエージェントを実装する必要がある。

 

>> 02-03 IPv6のルーティング

 

back.gif (1980 バイト)

home.gif (1907 バイト)

Copyright © MURA All rights reserved.