PR

【問題】
 Windows VistaおよびWindows Server 2008は,IPv6が基本プロトコルとして位置付けられた。そのため,Active DirectoryやDNS,DHCPサーバーなど,原則としてすべてのサービスがIPv6に対応している。以下のうち,IPv6のループバック・アドレスとして正しいものを選びなさい。

A.  ::1
B.  127::1
C.  2001:200:0:8002:203:47ff:fea5:3085
D.  FE80::800:2B30:FE52:F9D8

正解:A

【解説】
 IPv6には,現在使用中のIPv4の反省から,様々な点が改善されている。アドレスにかかわる項目には以下のものがある。

  • アドレス空間の拡大
  • パラメータ構成の簡略化

アドレス空間の拡大

 IPv4では,32ビットのアドレスを使用する。32ビットのうち,先頭の何ビットかをネットワークID,残りをホストIDとして使用する。同一ネットワークIDのホストは相互に直接通信できる。同一ネットワークIDを持つ典型的な例は,単一LANセグメント内のホストである。

 初期のIPv4では,ネットワーク部に与えるビット数として8,16,24のいずれかを想定していた。これを「クラス」と呼ぶ。IPv4のアドレスはクラスを識別するために先頭の数ビットを使う。

 例えば,クラスA(8ビットのネットワーク部)のアドレスは先頭ビットがゼロでなければならない。クラスB(16ビットのネットワーク部)は先頭2ビットが10,クラスC(24ビットのネットワーク部)は先頭3ビットが110である(図1)。こうした制約のため,実際に利用可能なアドレス空間はかなり限定される。

図1●IPv4アドレス・クラス
クラス IPアドレスの先頭8ビット(2進数) IPアドレスの先頭8ビット(10進数)
A 0xxx xxxx 1~127 (ただし127はループバック用)
B 10xx xxxx 128~191
C 110x xxxx 192~223

 現在では「可変長サブネット・マスク(VLSM)」という概念が導入され,クラスに依存しない割り当てができるようになったが,IPアドレスの構成ルールが根本から変わったわけではないので,依然として一定の制限がある。また,VLSMにはルーターの負担が大きいという欠点もある。そのため,VLSMに対応することを渋ったルーター・ベンダーもあったという。まだまだIPv4のアドレス空間で十分だと思われていた時代だ。

 IPv6では,64ビットのネットワーク・プレフィックスに,64ビットのインターフェースIDを連結した128ビットで表現される。ネットワーク・プレフィックスとインターフェースIDはいずれも固定長である。64ビットといえば,42億の42億倍である。固定長にすることで,拡張性が失われる可能性もあるが,当分は大丈夫なはずだ。

 128ビットとなると,IPv4流に8ビットずつ区切って10進数表記するとけた数が長くなり,読みにくくなってしまう。最大3けたの数字が16個も並んだ状態を想像してほしい。そこで,以下の工夫をして表記上のけた数を抑えることにした。

  • 16ビット単位でまとめ,コロンで区切って16進数で表記する
  • 連続するゼロは::(ダブルコロン)に省略できる(ただし::は1回のみ利用可能)

 例えば,「fe80::5efe:c0a8:0:1」は,「fe80:0:0:0:5efe:c0a8:0:1」の省略形である。

 なお,自分自身を表すループバック・アドレスは「1」と定義されている。これは,「0:0:0:0:0:0:0:1」と表記することもできるが,「::1」と省略形で記述することもできる。なお,IPv4では一般に「127.0.0.1」を使うが,実際には「127.0.0.0/8」のネットワーク番号を持つIPアドレスはすべてループバック・アドレスとして使用できる。IPv6にはこうした無駄はない。

 選択肢はいずれも正しいIPv6アドレス形式だが,ループバック・アドレスはAである。

パラメータ構成の簡略化

 IPv4の問題点に,多くのパラメータを指定しなければならないことがある。少なくとも,IPアドレスとサブネット・マスクを指定しなければLAN内での通信もできない。現実にはDHCPの利用により,こうした問題は事実上解決しているが,小規模なネットワークを実験的に作る場合などは,DHCPサーバーの構築そのものが面倒である。

 IPv4では,DHCPサーバーが存在しない環境でDHCPクライアントが起動すると,「リンク・ローカル・アドレス」と呼ばれるIPアドレスが自動的に割り当てられる。リンク・ローカル・アドレスは,「RFC 3927」で定義された規格で,DHCPが存在しないときにIPアドレスを「169.254.0.0/16」の範囲でランダムに利用することになっている。これにより,最低限の通信ができるようになった。

 実は,このリンク・ローカル・アドレスの概念は,IPv6で最初に導入された。IPv6では,原則としてIPアドレスはLANインターフェースのMACアドレスから自動構成される。この時使われるアドレスが,リンク・ローカル・アドレスだ。IPv6のリンク・ローカル・アドレスは「FE80」で始まる(正確にはFE80の先頭10ビット)。選択肢Dが,リンク・ローカル・アドレスの例である。

 リンク・ローカル・アドレスは,ルーティングできないので,そのままでは外部と通信できない。グローバルなアドレスを割り当てるには,IPv6対応のDHCPまたはルーター検出によるアドレス生成,手動割り当てが可能である。