Cable GuyDHCPv6 プロトコル

Joseph Davies

動的ホスト構成プロトコル (DHCP) は、コンピュータに IP アドレスやその他のネットワーク情報を割り当てて、コンピュータどうしがネットワークを介して自動的に通信できるようにするために開発されたものです。IPv6 ネットワークでは DHCP を使用せずにアドレスを構成できますが、あえて使用する価値は十分にあります。

なぜなら、DHCP for IPv6 (DHCPv6) では、IPv6 ホストのステートフル アドレス構成とステートレス アドレス構成の両方がサポートされるからです。たとえば、次のような方法で IPv6 ホストのアドレス構成を行うことができます。

ステートレス アドレス自動構成 - 近隣ルーターとの間でルーター要請メッセージやルーター アドバタイズ メッセージを交換することにより、リンクローカル アドレスと非リンクローカル アドレスの両方を構成できます。

ステートフル アドレス自動構成 - DHCP などの構成プロトコルを利用して、非リンクローカル アドレスを構成できます。

IPv6 ホストは通常、ステートレス アドレス自動構成を自動的に行います。また、近隣ルーターからのルーター アドバタイズ メッセージに次のフラグが使用されている場合は、DHCPv6 などの構成プロトコルを使用します。

管理されたアドレス構成フラグ。"M フラグ" とも呼びます。1 が設定されている場合、ホストは構成プロトコルを使用してステートフル アドレスを取得します。

その他のステートフル構成フラグ 。"O フラグ" とも呼びます。1 が設定されている場合、ホストは構成プロトコルを使用してその他の構成設定を取得します。

さらに、M フラグと O フラグの値を組み合わせることにより、次のように設定を調整できます。

M フラグと O フラグともに "0" に設定。 この組み合わせはDHCPv6 インフラストラクチャを持たないネットワークに対応します。ホストの非リンクローカル アドレスの構成には、ルーター アドバタイズを使用します。アドレス以外の情報の構成には、その他の方法 (手動構成など) を使用します。

M フラグと O フラグともに "1" に設定。 アドレスの構成にもその他の情報の構成にも、DHCPv6 を使用します。このフラグの組み合わせを "ステートフル DHCPv6" と呼びます。"ステートフル DHCPv6" では、DHCPv6 を使用して IPv6 ホストにステートフル アドレスを割り当てます。

M フラグの値を "0"、O フラグの値を "1" に設定。 DHCPv6 はアドレス以外の情報の構成専用となり、アドレスの構成には使用されません。近隣ルーターは非リンクローカル アドレスのプレフィックスをアドバタイズするように構成され、IPv6 ホストはこれらのアドレス プレフィックスからステートレス アドレスを取得します。このフラグの組み合わせを "ステートレス DHCPv6" と呼びます。"ステートレス DHCPv6" では、DHCPv6 を使用して IPv6 ホストにステートレスな構成情報を割り当てますが、ステートフル アドレスは割り当てません。

M フラグの値を "1", O フラグの値を "0" に設定。 DHCPv6 はアドレスの構成専用となり、その他の情報の構成には使用されません。通常、IPv6 ホストには、ドメイン ネーム システム (DNS) サーバーの IPv6 アドレスなど、その他の情報も構成する必要があるため、このフラグの組み合わせはほとんど使用しません。

DHCPv6 インフラストラクチャは、DHCP for IPv4 の場合と同様に、構成情報を要求する DHCPv6 クライアント、構成情報を提供する DHCPv6 サーバー、および DHCPv6 リレー エージェントで構成されます。DHCPv6 サーバーと DHCPv6 クライアントが同じサブネット上にない場合は、DHCPv6 リレー エージェントがサーバーとクライアント間のメッセージを中継します。

DHCPv6 メッセージ

DHCPv6 では、DHCP for IPv4 の場合と同様に、ユーザー ダイアグラム プロトコル (UDP) メッセージを使用します。DHCPv6 クライアントは UDP ポート 546 上、DCHPv6 サーバーとリレー エージェントは UDP ポート 547 上で、それぞれ DHCPv6 メッセージをリッスンします。メッセージ構造は、DHCP for IPv4 (ディスクのないワークステーション向けに設計された BOOTP プロトコルの拡張) のときよりずっとシンプルです。図 1 に、クライアントとサーバーがやりとりする DHCPv6 メッセージの構造を示します。

Figure 1 DHCPv6 messages between client and server

Figure 1** DHCPv6 messages between client and server **(画像を拡大するには、ここをクリックします)

1 バイトの Msg-Type フィールドは、DHCPv6 メッセージの種類を示します。3 バイトの Transaction-ID フィールドは、クライアント側で設定されるフィールドで、1 回の DHCPv6 メッセージ交換で交換されるメッセージをグループ化するために使用されます。Transaction-ID フィールドの後ろには、クライアントとサーバーの識別情報、アドレス、その他の構成情報を指定する DHCPv6 オプションが続きます。RFC 3315 で規定されている定義済みの DHCPv6 オプションの一覧は、補足記事「DHCPv6 RFC 参考資料」で確認できます。

DHCPv6 オプションのフォーマットは、type-length-value (TLV) 形式です。図 2 に、DHCPv6 オプションの構造を示します。

2 バイトの Option-Code フィールドは、特定のオプションを示します。2 バイトの Option-Len フィールドは、Option-Data フィールドの長さをバイト数で示します。Option-Data フィールドには、オプションのデータが入ります。

リレー エージェントとサーバー間で交換されるメッセージには、追加情報を記録するためのメッセージ構造が別途用意されています。図 3 に、この種のメッセージの構造を示します。

Figure 2 Structure of DHCPv6 options

Figure 2** Structure of DHCPv6 options **(画像を拡大するには、ここをクリックします)

1 バイトの Hop-Count フィールドは、メッセージを受信したリレー エージェントの数を示します。リレー エージェントは、受信メッセージ数が最大ホップ数を超えた場合、そのメッセージを破棄できます。16 バイトの Link-Address フィールドには、クライアントのサブネットに接続されたインターフェイスの非リンクローカル アドレスが入ります。サーバーは、この Link-Address フィールドの情報から、アドレスの割り当てに使用する正しいアドレス スコープを把握します。16 バイトの Peer-Address フィールドには、メッセージの発信元クライアントまたは先行してメッセージを中継したリレー エージェントの IPv6 アドレスが入ります。さらに、この Peer-Address フィールドの後ろには、リレー メッセージ オプション (中継されるメッセージとその他のオプションを含む) などの DHCPv6 オプションが続きます。リレー メッセージ オプションでは、クライアントとサーバー間でやりとりされるメッセージをカプセル化できます。

IPv6 用のブロードキャスト アドレスは定義されていません。IPv6 では、DHCPv4 メッセージの制限されたブロードキャスト アドレスの代わりに、All_DHCP_Relay_Agents_and_Servers アドレス (FF02::1:2) を使用します。たとえば、ネットワーク上の DHCPv6 サーバーの場所を確認したい場合、DHCPv6 クライアントはリンクローカル アドレスから FF02::1:2 へ要請 (Solicit) メッセージを送信します。ホストのサブネット上に DHCPv6 サーバーがある場合は、その DHCPv6 サーバーが要請メッセージを受信して適切な応答 (Reply) メッセージを返信しますが、通常はホストのサブネット上の DHCPv6 リレー エージェントが要請メッセージを受信し、DHCPv6 サーバーに転送します。

Figure 3 Structure of messages between relay and server

Figure 3** Structure of messages between relay and server **(画像を拡大するには、ここをクリックします)

ステートフル メッセージ交換

DHCPv6 ステートフル メッセージ交換では、受信したルーター アドバタイズ メッセージの M フラグと O フラグの値がどちらも 1 に設定されている場合に、IPv6 アドレスとその他の構成情報を取得できます。このメッセージ交換では、通常、次のメッセージを使用します。

  • 要請 (Solicit) メッセージ。サーバーを検索するため、クライアントから送信されます。
  • アドバタイズ (Advertise) メッセージ。要請メッセージへの応答としてサーバーから送信されます。サーバーがアドレスと構成情報を提供できることを示します。
  • 要求 (Request) メッセージ。特定のサーバーにアドレスまたは構成情報を要求するため、クライアントから送信されます。
  • 応答 (Reply) メッセージ。要求を受け取ったサーバーから送信されます。アドレスと構成情報が含まれています。

クライアントとサーバーの間にリレー エージェントが存在する場合は、リレー エージェントからサーバーに、クライアントから送信された要請メッセージと要求メッセージをカプセル化したものを含むリレー転送メッセージが送信されます。また、サーバーからリレー エージェントに、クライアント宛てのカプセル化されたアドバタイズ メッセージと応答メッセージを含むリレー応答メッセージが送信されます。すべての DHCPv6 メッセージの一覧は、図 4 を参照してください。

Figure 4 DHCPv6 メッセージ

DHCPv6 メッセージ 説明 対応する DHCP for IPv4 メッセージ
要請 (Solicit) サーバーを検索するため、クライアントから送信されます。 DHCPDiscover
アドバタイズ (Advertise) 要請メッセージへの応答としてサーバーから送信されます。サーバーの可用性を示します。 DHCPOffer
要求 (Request) 特定のサーバーにアドレスまたは構成情報を要求するため、クライアントから送信されます。 DHCPRequest
確認 (Confirm) クライアントの構成が接続リンクで有効であるかどうかを確認するため、クライアントから全サーバーに送信されます。 DHCPRequest
更新 (Renew) 割り当てられたアドレスの有効期間を延長し、更新された構成情報を取得するために、クライアントから特定のサーバーに送信されます。 DHCPRequest
再バインド (Rebind) 更新メッセージへの応答がなかったときに、クライアントから任意のサーバーに送信されます。 DHCPRequest
応答 (Reply) 要請メッセージ、要求メッセージ、更新メッセージ、再バインド メッセージ、情報要求メッセージ、確認メッセージ、リリース メッセージ、または拒否メッセージへの応答として、サーバーから特定のクライアントに送信されます。 DHCPAck
リリース (Release) クライアントが割り当てられたアドレスをもう使用していないことを示すため、クライアントから送信されます。 DHCPRelease
拒否 (Decline) 割り当てられたアドレスが使用中であることを示すため、クライアントから特定のサーバーに送信されます。 DHCPDecline
再構成 (Reconfigure) サーバーの構成情報が追加または更新されたことを示すため、サーバーからクライアントに送信されます。クライアントは、このメッセージへの応答として、更新メッセージまたは情報要求メッセージを返信します。 なし
情報要求 (Information-Request) アドレス以外の構成情報を要求するため、クライアントから送信されます。 DHCPInform
リレー転送 (Relay-Forward) メッセージをサーバーに転送するため、リレー エージェントから送信されます。リレー転送メッセージには、DHCPv6 リレーメッセージ オプションとしてカプセル化されたクライアント メッセージが含まれています。 なし
リレー応答 (Relay-Reply) リレー エージェント経由でクライアントにメッセージを送信するため、サーバーから送信されます。リレー応答メッセージには、DHCPv6 リレーメッセージ オプションとしてカプセル化されたサーバー メッセージが含まれています。 なし

ステートレス メッセージ交換

DHCPv6 ステートレス メッセージ交換では、受信したルーター アドバタイズ メッセージの M フラグの値がゼロ、O フラグの値が 1 に設定されている場合に、構成情報だけを取得できます。このメッセージ交換では、通常、情報要求 (Information-Request) メッセージと応答 (Reply) メッセージを使用します。情報要求メッセージはサーバーに構成情報を要求するメッセージで、DHCPv6 クライアントから送信されます。応答メッセージは要求された構成情報を含むメッセージで、サーバーから送信されます。

IPv6 ネットワーク上に、IPv6 ホストにアドレス プレフィックスを割り当てるルーターが構成されている場合は、2 つの DHCPv6 メッセージを交換することにより、DNS サーバーと DNS ドメイン名の割り当て、およびルーター アドバタイズ メッセージには含まれていないその他の構成情報の割り当てを実行できます。

Windows の DHCPv6 サポート

Windows Vista™ と Windows Server® の後継バージョン (コードネーム "Longhorn") には、DHCPv6 クライアントが付属しています。この DHCPv6 クライアントは、受信したルーター アドバタイズ メッセージに含まれる M フラグと O フラグの値に応じて、DHCPv6 ベースの構成を行います。したがって、DHCPv6 を使用するためには、IPv6 サブネットごとに DHCPv6 サーバーとリレー エージェントを構成し、さらに IPv6 ルーターを構成して、M フラグと O フラグの値を適切に設定する必要があります。単一のサブネット上にアドバタイズ ルーターが複数存在する場合は、これらのルーターからアドバタイズされるステートレス アドレス プレフィックスと M フラグおよび O フラグの値が一致するようにルーターを構成します。一方、Windows® XP や Windows Server 2003 を実行している IPv6 ホストには DHCPv6 クライアントが付属していません。したがって、ルーター アドバタイズ メッセージの M フラグと O フラグの値を気にする必要はありません。

Windows Vista や Windows Server の後継バージョン ("Longhorn") を実行する IPv6 ルーターからアドバタイズされるメッセージの M フラグの値を 1 に設定するには、"netsh interface ipv6 set interface InterfaceName managedaddress=enabled" コマンドを実行します。同様に、ルーター アドバタイズ メッセージの O フラグの値を 1 に設定するには、"netsh interface ipv6 set interface InterfaceName otherstateful=enable" コマンドを実行します。

Beta 2 リリースの Windows Server "Longhorn" は、DHCP Server サービスを利用して、DHCPv6 リレー エージェントと DHCPv6 ステートレス構成をサポートします。DHCP Server サービスの構成により、先ほど説明した 2 つの DHCPv6 メッセージを交換する方式で、すべての DHCPv6 クライアントに DHCPv6 オプションを配布することができます。Beta 3 リリースの Windows Server "Longhorn" では、DHCP スナップインで IPv6 のアドレス スコープを作成する機能など、DHCPv6 ステートフル処理のサポートが追加される予定です。

DHCPv6 RFC 参考資料

DHCPv6 関連の主要 RFC

Joseph Daviesマイクロソフトのテクニカル ライターとして Windows ネットワークのトピックに関する講義および執筆を 1992 年から行っています。Microsoft Press から 5 冊の書籍を上梓しており、月間の TechNet Cable Guy コラムの執筆者でもあります。

© 2008 Microsoft Corporation and CMP Media, LLC. All rights reserved; 許可なしに一部または全体を複製することは禁止されています.