第4回 IPv6アドレスを割り当てる:Windows管理者のためのIPv6入門(1/2 ページ)
128bitもあるIPv6アドレスを手動で各ノードに割り当てるのは簡単ではない。アドレス割り当てを自動化するステートレス設定とは?
前回は、同一ネットワーク・セグメント上に接続されたIPv6ノード同士でどうやってL2のアドレス(MACアドレスなど)を見つけるかという、L2アドレスの解決メカニズムについて解説した。今回は、IPv6アドレスをノードに割り当てる方法について解説する。
IPv6におけるIPアドレスの設定方法
IPv6では128bit幅のIPアドレスを利用することはすでに述べたが、各ノードのネットワーク・インターフェイスに対してこれらのアドレスをいちいち手動で設定するのでは(IPアドレスを割り当てたり、ルート情報、DNSサーバ情報などを割り当てるのでは)、管理が非常に大変である。IPv4の場合は、当初は手動で設定していたが、管理が面倒だったり、IPアドレス衝突などのトラブルも起こったため、IPアドレスの設定を自動化したり(RARPやBOOTP、DHCPなどを使う)、衝突を避けたりする手順(アドレスが使用中でないかどうかをまずARPで確認する、など)が開発され、利用されるようになった。
IPv6ではこれらの経験を踏まえ、アドレス設定を自動化したり、衝突を検出する機能などが最初からIPv6プロトコルの一部として仕様が決定されている。またアドレス長が128bitと長くなって取り扱いが面倒になっていることもあり、DHCPサーバを使わないような小規模なネットワークであっても、なるべく手動設定を使わなくて済むような機能も用意されている。
IPv6におけるIPv6アドレスの設定方法は、大きく分けると次のように3種類ある。
設定方法 | 備考 | ||
手動設定 | ・各ノードの各インターフェイスに対して、手動で割り当てる ・ルータとして使われるノードなどではこの手動割り当てを行う |
||
自動設定 | ステートレス設定 | ・DHCPサーバがない環境でも、IPv6ネットワークに接続するだけで自動的にインターフェイス・アドレスを生成し、割り当てる ・ノードが接続されているネットワークのアドレス(プリフィックス)を自動的に取得し、それに合うIPv6アドレスを自動生成する ・デフォルト・ゲートウェイ情報も自動的に取得し、設定する ・ただしDNSサーバなどの情報は設定できない |
|
ステートフル設定 | ・各ノードに割り当てるIPv6アドレスをDHCPサーバで管理し、割り当てる ・どのノードにどのIPv6アドレスを割り当てたか、どのアドレスを割り当てるかなどはDHCPサーバ側で管理できる。 ・DNSサーバ・アドレスや(DHCPで配布可能な)各種追加情報なども自動設定できる |
||
IPv6におけるアドレス設定方法 IPv6アドレスの構造やプリフィックスなどについては、第1回を参照していただきたい。 |
ステートフル設定については次回解説することにして、今回は手動設定とステートレス設定について見ていこう。
IPv6アドレスの手動設定
非常に面倒だし、通常は行う必要はないが、IPv6でもユーザーが手動でアドレスを割り付けることが可能である。以下、Windows 7での設定例を示しておく。
IPv6アドレスを手動設定するには、IPv4の場合と同様に、まずコントロール・パネルからネットワーク・アダプタの一覧を開き、ネットワーク接続のアイコンを右クリックして、プロパティ画面を表示させる。
IPv6アドレスの手動設定(1)
あまり使うことはないだろうが、IPv6アドレスを手動で設定することも可能だ。このためには従来のIPv4の場合と同様に、ネットワーク・インターフェイスのプロパティから設定する。
(1)対象とするネットワーク・インターフェイスのプロパティを表示させる。
(2)IPv6を選択する。
(3)これをクリックする。
ネットワーク・インターフェイスにバインドされているIPv6プロトコルを選択して、[プロパティ]ボタンをクリックする。すると次のようなダイアログが表示されるので、IPv6アドレスや関連するパラメータなどを手動入力する。
IPv6アドレスの手動設定(2)
アドレスが長くなっていることを除けば、IPv4の場合とあまり変わらない。
(1)デフォルトは、こちらの自動設定になっている。
(2)手動で設定したい場合はこちらを選択する。
(3)IPv6アドレスを指定する。
(4)プリフィックスの長さは64が推奨値。
(5)デフォルト・ゲートウェイ・アドレスの指定。
(6)(2)を選択すると、自動的にこれが選択される。
(7)これをオンにしておくと、このダイアログ終了時に検証処理(診断)が行われる。
(8)IPv6やDNSに関する追加設定。
ここではIPv6アドレスとプリフィックス長、デフォルト・ゲートウェイ・アドレスをだけを入力してみたが、必要ならDNSサーバのアドレスなども入力する(IPv6対応のDNSについては本連載の第7回を参照)。ちなみに第1回で述べたように、「2001:db8::」はサンプル用のIPv6アドレスである。
手動設定後のipconfigの実行結果は次の通りである。
IPv6アドレスの手動設定例
手動で追加したアドレスはipconfigコマンドなどで確認できる。
(1)これが手動で追加したIPv6アドレス。
(2)最初から自動的に割り当てられているリンク・ローカル・アドレス。ICMPv6などでは、このアドレスを使って隣接ノードと通信している。
(3)IPv4アドレス。この環境の場合はDHCPサービスなどがないので、APIPAアドレスが割り当てられている。
(4)手動設定したデフォルト・ゲートウェイ・アドレス。
最初からあるリンク・ローカル・アドレス(fe80::〜。これは必ず設定される)のほかに、手動で設定したIPv6アドレスも利用可能になっている。
アドレスの衝突の検出
IPv4の場合も同様だが、ノードにIPアドレスを(自動でも手動でも)設定する場合、そのアドレスがほかのノードに設定されているIPアドレスと衝突(重複)しているとネットワークは正しく動作しない。このような事態を避けるため、現在のIPv4の実装では、IPアドレスを有効にする前に衝突していないかどうかをチェックするのが普通である。そこでIPv6ではこの手順(DAD:Duplicate Address Detectionという)を標準化し、プロトコルの一部として、衝突の検出と回避が規定されている。
以下はアドレスの衝突が発生した場合のパケットのキャプチャ例である。IPv6アドレスを設定しようとしているノードは、まずICMPv6の「Neighbor Solicitation(NS。タイプ番号=135番)」をマルチキャスト送信して(第3回を参照。送信元のIPv6アドレス・フィールドは「::」とする)、応答がないかどうかを調べる。NSは、L2アドレスの解決を要求するコマンドだ。もし応答が返ってくれば、そのIPアドレスは使用中であると判断し、IPv6アドレスの設定/有効化を中止する。
手動設定したIPv6アドレスが重複した場合の例
すでに存在するIPv6アドレスと同じアドレスを割り当てたPCを起動しようとしたところ。
(1)あるIPv6アドレスが利用可能かどうか(すでに存在するかどうか)を問い合わせるため、Neighbor Solicitation(NS)パケットを送信している。第3回で説明した、ICMPv6におけるL2アドレス解決と同じやり取りである。
(2)該当するIPv6アドレスを持つノードからの応答。
(3)Neighbor Solicitation(NS)パケットの内容。
(4)このアドレスが衝突している。
この例では、(1)のノードが重複したIPv6アドレスを設定しようとしている。これに対して、すでに割り当て済みのノードが「Neighbor Advertisement(NA。タイプ番号=136番)」の応答を返している((2))。
すると送信元のノードはIPv6アドレスが衝突していると判断し、アドレスの割り当て/有効化を中止する。例えばWindows 7なら次のような表示が出るので、衝突したことが分かる。
IPv6アドレスが衝突した場合の例
このPCに設定しようとしたIPv6アドレスが、すでに使われていた場合の例。相手のノードはそのまま動き続けるが、このPCでは、該当するIPv6アドレスの設定を中止する。
(1)衝突時に表示されるメッセージ。
(2)ipconfigの表示では、IPv6アドレスの末尾に「(重複)」と表示され、実際にはこのアドレスは割り当てられていない。
Copyright© Digital Advantage Corp. All Rights Reserved.