2011年5月26日木曜日

WindowsでIPv6の基本を試してみよう

 IPv6の開発がはじまってからおよそ20年が経過し、IPv6が本格的に普及する兆しが見えてきた。IPv4アドレスの枯渇が始まり、いやおうなしにIPv6を使わざるを得ない状況が目前に迫ってきたからだ。
Windows Vista/7ならIPv6環境がすぐ使える
 まず、IPv6が利用可能になっていることを確認しよう。Windows 7およびWindows Vistaは、初期状態でIPv6が利用可能になっている。そのため、IPv6を故意に無効としない限りは問題なく使えるはずだが、念のため確認しておこう。

 Windows 7では、コントロールパネルの「ネットワークと共有センター」を開き、画面左側にある「アダプターの設定の変更」をクリックし、「ローカルエリア接続」をダブルクリックする。すると表示される「ローカルエリア接続の状態」ダイアログで「プロパティ」を選ぶ。これで表示される画面で、画面1のように「インターネット プロトコル バージョン6(TCP/IPv6)」の行にチェックが入っていればIPv6は有効になっている。
 また、Windows Vistaであれば、「ネットワークと共有センター」から「ローカルエリア接続の状態」欄の「状態の表示」をクリックすると「ローカルエリア接続の状態」が表示されるので、プロパティをクリックする。そして、Windows 7の場合と同様に「インターネット プロトコル バージョン6(TCP/IPv6)」の行にチェックが入っていればよい。

 一方、Windows XPは初期状態でIPv6がインストールされていない。そのため、以下の手順でインストールする必要がある。
 スタートメニューからコントロールパネルを開き、「ネットワーク接続」→「ローカルエリア接続」を進む。「ローカルエリア接続のプロパティ」が開いたら、「インストール」→「プロトコル」→「Microsoft TCP/IP version 6」を選択して「OK」をクリック。あとは、画面の指示に従い、PCを再起動すれば完了だ。
 IPv4と異なり、IPv6はインストールするだけでアドレスなどが自動設定される。プラグ&プレイが相当なレベルで実現されているのだ。TCP/IPの設定状態を調べるには、コマンドプロンプトで「ipconfig」コマンドを利用する。

 Windows 7のIPv6では、この「イーサネット アダプタ ローカル エリア接続:」のほかに、いくつかの「Tunnel adapter ……」というブロックが表示される。これはIPv4とIPv6の共存のために使用する仮想インターフェイスの情報だ。Windows 7でIPv6を有効にすると、物理的なNICが1つしかなくても、複数の論理的なインターフェイスが自動的に構成される。

 さて、リンクローカルIPv6アドレスとして表示される値は、IPv6アドレス+"%"インターフェイスインデックス(NICの識別番号)となる。リンクローカルIPv6アドレスは、PCのすべてのNICに自動的に設定されるため、このようにインターフェイスインデックスと一緒に表記することになっている。ここでは、"fe80::4163:ee0e:40ff:8b23"がIPv6アドレスで、"11"が該当するNICのインターフェイスインデックスだ。

IPv6アドレスの表記法
 IPv6のアドレスの長さは、128ビットである。これを16ビットずつ8つに分割し、それぞれを16進数(4桁)で表記し、区切りにコロン(:)を入れて並べた形式で表記する。たとえば、手元のPCのリンクローカルIPv6アドレスの正式な表記は、
fe80:0000:0000:0000:4163:ee0e:40ff:8b23
である。
 しかし、これでは長すぎるので、以下の方法により表記を短縮できる。
 まず、コロン(:)で挟まれた4桁の16進数は、前置き(左側)の0を省略する。"0101"であれば"101"といった具合だ。また、4桁すべてが0の場合は、1つの0となる。つまり、"0000"は"0"となる。すると、上のアドレスは
fe80:0:0:0:4163:ee0e:40ff:8b23
になる。
 さらに、"0:0:0"のように0が続く部分は、アドレス全体で1カ所だけだが"::"と省略できる。これで、
fe80::4163:ee0e:40ff:8b23
と短くなった。この表記は、ipconfigコマンドの出力結果と一致する。PCやルーターなどの機器の設定を行なう際には、この形式がもっともよく用いられる。

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」を実行してみよう。

 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ビットがインターフェイス識別子である。

2.ユニークローカルアドレス
 ユニークローカルアドレスはIPv4のプライベートアドレスに相当し、組織内で閉じたイントラネットなどで利用する。以前はサイトローカルアドレスがこの目的で使われていたが、さまざまな問題が生じたため、RFC4193でユニークローカルユニキャストアドレスに置き換えられた。ユニークローカルアドレスの上位7ビットは"1111110"で、アドレスの範囲は"fc00::/7"である。ただし、8桁目が"0"のアドレスの使用が禁止されているため、現時点でイントラネットで実際に使えるアドレスの範囲は"fd00::/8"に限られる。
 ユニークローカルアドレスは、インターネットとの接続は想定していない。しかし、40ビットのGlobal IDは重複しないよう乱数により決定する。これにより、企業の合併や統合により複数のネットワークが接続された場合でも、アドレスを付け直さなくて済む。

3.リンクローカルアドレス
 IPv6では、Ethernetのブロードキャストの到達範囲(ブロードキャストドメイン)を「リンク」と呼ぶ。リンクローカルアドレスは、ノードの起動時にインターフェイスに自動的に割り当てられるアドレスで、グローバルアドレスなどの設定を自動化するために用いられる。
 リンクローカルアドレスは、リンク内では一意性が保証されるが、ルーターを超える通信では使用できない。アドレスの形式は、上位10ビットが"1111111010"、次の54ビットがすべて0、そして下位64ビットがインターフェイス識別子である。
 インターフェイス識別子は、ノードの起動時やインターフェイスを有効にした際に例外なく自動設定され、手動で設定することはできない。リンクローカルアドレスは"fe80::インターフェイス識別子"と表記でき、プレフィクスは"fe80::/64"である。

0 件のコメント:

コメントを投稿