どう割り振る? IPv6でのアドレス設計:これから始めるIPv6(2)(1/3 ページ)
IPv4アドレス在庫の枯渇やWorld IPv6 Dayの実施に伴い、「そういえば昔IPv6について読んだけれど、いまはどうなっているんだろう?」と感じている人も多いのではないでしょうか。最新状況を踏まえたIPv6の「基礎」を改めて紹介します。(編集部)
広大なアドレス空間をどう設計するか
個人向けのIPv6インターネット接続サービスが続々と開始され、いよいよIPv6が身近になってきました。
さて、最近“IPv6のアドレスはどう設計すればいいの?”という声をよく聞きます。節約が重んじられたIPv4では、需要に応じてネットワークの大きさを決めて無駄がないように設計すればよかったのですが、誰もが広大なアドレス空間を手にするIPv6では、少し勝手が違います。
今回は、IPv6、あるいはデュアルスタックネットワークでのアドレス割り当てについて説明します。
IPv6におけるネットマスクとアドレス生成
IPv6でも、IPv4の可変長サブネットマスクと同様の考え方が採用されています。
IPv4ではプレフィックス長(ネットマスク)によって、ネットワークアドレスとホストアドレスを区別していました。IPv6のユニキャストアドレスでも同様に、プレフィックス長を使ってネットワーク部分とノード部分を区別します。
IPv6ではこれらを“サブネットプレフィックス”と“インターフェイスID”と呼びます(図1)。
サブネットプレフィックスは1ビット刻みで設定可能です。ただし、後述する自動生成アドレスを使用するときには、プレフィックス長として64ビット長、すなわち/64を使うことが求められています(RFC4291)。最近では、ルータ間のpoint-to-pointネットワークに/127を使う考え方も標準化されています(RFC6164)が、一般的には/64を使います。
そのためIPv6では、数台のPCとルータがあるだけの小規模なセグメントでも、数百台が接続される大規模なセグメントでも、ネットマスクはいずれも/64となります。
IPv4では、ネットワークの規模が当初の計画よりも大きくなると、アドレスを追加したりリナンバする必要がありました。しかしIPv6では1つのネットワークが十分に大きいため、ノードの数がいくら増えようがネットワークアドレスを変える必要はありません。
インターフェイスIDは、同一セグメント内でユニークでありさえすれば任意に決めることができますが、MACアドレスを基に、Modified EUI-64というフォーマットで自動生成することもできます。EUI-64は、IEEEによって標準化された64ビット長のID表記方法(http://standards.ieee.org/regauth/oui/tutorials/EUI64.html)で、Modified EUI-64は、文字通りEUI-64を改訂したものです(図2)。
ただし、Modified EUI-64をインターフェイスIDとして使用すると、インターフェイスIDからMACアドレスを逆算されてトレースされるなどのリスクがあります。そこで、ランダムに生成したインターフェイスIDを一定期間で使い捨てる方式(プライバシー拡張:RFC4941)も広く使われています。
IPv4ではアドレスの自動設定に必要な情報を、主にDHCP(RFC2131)を使用して取得しましたが、IPv6ではその情報を、ルータ広告(Router Advertisement:RA)から取得することができます。RAを使うと、そのセグメントで使用できるデフォルトルータ(デフォルトゲートウェイ)、プレフィックス(ネットワークアドレス)情報などを、ルータからセグメント上のノードに通知できます。
IPv6では、自動生成したインターフェイスIDとRAで通知されるプレフィックス情報を組み合わせてノードのユニキャストアドレスを決定するSLAAC(Stateless Address Auto Configuration)がよく用いられます(図3)。
DHCPv6の利用
RAは、IPv4のDHCPの機能をすべて提供するわけではありません。この差分を補完するために、DHCPv6(RFC3315)が使用できます。
DHCPv6には大きく分けて以下の2つの使用法があります。
- ステートフルDHCPv6 - ノードのアドレスとDNSサーバアドレスなどの付加情報の両方を、DHCPを通じて配布します。
- ステートレスDHCPv6 - ノードのアドレスはRAから取得したプレフィックスから自動生成し、付加情報をDHCPで配布します。
どちらを用いる場合でも、ノードのデフォルトルータの情報を提供するためにRAが必要となりますし、ルータは、送出するRAを通じてどちらのDHCPv6を使用するかノードに知らせることが必要です。また、SLAACやDHCPv6を使わずにすべてのノードを手動で設定するネットワークでは、RAを送出する必要がありません。
そのネットワークのアドレス生成ポリシーを確認し、そもそもRAが必要なのかどうか、必要な場合はどのようなRAが必要なのかなどの条件をよく確認したうえで、ルータを設定しましょう。
ノードのIPv6アドレス設定方法 | RAは必要か? | RAにプレフィックス情報が必要か? | m-flag/o-flag(注1) | 付加情報(DNSサーバアドレスなど) | |
---|---|---|---|---|---|
手動 | 不要 | - | - | 手動設定 | |
SLAAC | 必要 | 必要 | off/off | 手動設定(注2) | |
ステートフルDHCPv6 | 必要 | 不要 | on/on | DHCPで配布 | |
ステートレスDHCPv6 | 必要 | 必要 | off/on | DHCPで配布 |
注1:RAのフラグオプションにある「Managed Address Configuration Flag」(m-flag)と「Other Configuration Flag」(o-flag)。両フラグを使って、アドレスや設定情報をどのように決定するかをノードに通知できる(RFC4861)。
注2:RFC6106が実装された場合、RAのオプションを使ってDNSの設定情報を通知できる。
Copyright © ITmedia, Inc. All Rights Reserved.