DHCPv6は、
IPv6ネットワーク環境において、
コンピュータがネットワークに接続する際に必要な
IPアドレスやその他の設定情報を自動的に割り当てるための
通信プロトコルです。
IPv4で用いられるDHCPv4とは異なり、
IPv6環境に特化して設計されています。
IPv6におけるDHCPv6の役割
IPv6では、ステートレスアドレス自動設定によって、DHCPを使用しなくてもインターフェースに
IPアドレスを割り当てることが可能です。しかし、DNSサーバのアドレスやドメイン名など、
IPアドレス以外の設定情報を配布する必要がある場合も存在します。DHCPv6は、このようなケースにおいて、DHCPv4と同様にDHCPサーバから必要な情報を配布する役割を担います。
ステートレスアドレス自動設定とは異なり、DHCPv6を利用することで、
IPアドレスだけでなく、DNSサーバのアドレス、ドメイン名、その他のサーバのアドレスといった様々な設定情報をクライアントに一括して提供できます。
DHCPv4との違い
DHCPv6とDHCPv4の間には互換性がありません。DHCPv4では、クライアントがDHCPを使用するかどうかを決定しますが、DHCPv6では、ルータ広告のオプションによってDHCPの使用が通知されます。また、一つのインターフェースに対して、異なる情報源から異なる設定情報が届く可能性もあります。
DHCPv6の設計ガイドライン
DHCPv6の開発初期には、以下のガイドラインが定められました。
DHCPとステートレスアドレス自動設定を組み合わせて使用できること。
DHCPの設定と他の機構(ステートレスアドレス自動設定など)の組み合わせは管理者が決定できること。
クライアントを手動で設定する必要がないこと。
DHCPによって1つのインターフェースに複数のアドレスを設定できること。
サブネットごとにDHCPサーバがなくても良いこと。リレーエージェントはDHCPパケットを転送できること。
複数のDHCPサーバから返される複数の応答をクライアントが処理できること。
DHCPによって一部のクライアントだけに設定を適用できるサブネットを作成できること。
DHCPはルータの有無に依存しないこと。ルータが必要となるのはステートレスアドレス自動設定を利用する場合のみであること。
DHCPは、割り当てられたアドレスをDNSの動的更新時に登録できること。また、管理者が手動でのDNS更新を選択できること。
DHCPはネットワークのアドレス変更をサポートし、その作業が容易であること。
DUID(DHCP Unique Identifier)
DHCPのクライアントとサーバは、それぞれDUID(DHCP Unique Identifier)という識別子を持ちます。DUIDは、すべてのサーバとクライアント間で一意である必要があり、変更してはなりません。DUIDは2オクテットのコードと可変長の識別子で構成され、以下の4種類が定義されています。
DUID-LLT:リンク層アドレス + 時刻
DUID-EN:インターフェースの製造者番号に基づくベンダー固有のID
DUID-LL:リンク層アドレス
DUID-UUID:UUID
アイデンティティ・アソシエーション(IA)
アイデンティティ・アソシエーション(IA)は、サーバとクライアントがアドレスの集合を識別・管理するために使用するオブジェクトです。IAはオブジェクトに対応するIAIDによって識別されます。クライアントは、DHCPによって設定されるインターフェースごとに少なくとも1つのIAを持ち、一意のIAIDを持つ必要があります。IAは、クライアントがインターフェースに適した設定をサーバから受信する際に使用されます。
DHCPv6ヘッダ形式
DHCPv6のヘッダ形式は、DHCPv4と比較して簡略化されています。クライアントとサーバの間で交換されるDHCPメッセージのヘッダ形式は以下の通りです。
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| msg-type | transaction-id |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
. options .
. (variable) .
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
メッセージ種別
`msg-type`フィールドは、以下のメッセージ種別を示します。
要請 (Solicit, 1):クライアントがサーバの場所を特定するためのメッセージ。
広告 (Advertise, 2):サーバがクライアントの要請に応じ、DHCPサービスを提供可能であることを示すメッセージ。
要求 (Request, 3):クライアントが特定のサーバに対し、設定パラメータを要求するメッセージ。
確認 (Confirm, 4):クライアントに割り当てられたアドレスが接続されているネットワークで有効であるかを確かめるメッセージ。
更新 (Renew, 5):クライアントがアドレスのリース期間を延長するために、設定パラメータを提供したサーバに送信するメッセージ。
再結合 (Rebind, 6):クライアントが更新メッセージへの応答がない場合に、利用可能なサーバへ送信するメッセージ。
応答 (Reply, 7):サーバがクライアントの要請、要求、更新、再結合メッセージに応答するメッセージ。また、情報要求メッセージや確証メッセージへの応答にも使用。
解放 (Release, 8):クライアントが使用しなくなったアドレスをサーバに通知するメッセージ。
辞退 (Decline, 9):サーバが割り当てたアドレスが既にネットワークで使用されていることをクライアントが検出した場合に送信するメッセージ。
再設定 (Reconfigure, 10):サーバがクライアントに新しい設定パラメータがあることを通知するメッセージ。
情報要求 (Information request, 11): クライアントがIPアドレスの割り当てなしに設定パラメータを要求するメッセージ。
リレー転送 (Relay-forward, 12): リレーエージェントがサーバにメッセージを中継する際に使用するメッセージ。
リレー応答 (Relay-reply, 13): サーバがリレーエージェントを経由してクライアントにメッセージを送信する際に使用するメッセージ。
DHCPサーバから設定情報交換を開始する手順は、DHCPv4にはない新しい機能です。これにより、アドレスの変更や新しいサービスの追加時に全クライアントの再設定を効率的に行うことができます。
DHCPv6 オプション
DHCPv6ヘッダの`options`フィールドには、設定情報や設定パラメータが格納されます。各オプションは以下の形式を持ちます。
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| option-code | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| option-data |
| (option-len octets) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
`option-code`フィールドはオプションの種類を示し、`option-len`フィールドはそのオプションの長さをオクテット単位で示します。`option-data`フィールドには、オプションの具体的な内容が格納されます。
以下に主なオプションの種類を示します。
クライアント識別子 (Client Identifier, 1):クライアントのDUIDを運ぶために使用。
サーバ識別子 (Server Identifier, 2):サーバのDUIDを運ぶために使用。
非臨時アドレス・アイデンティティ・アソシエーション (IA_NA, 3):非一時的なアドレスに関するIAと関連パラメータを運ぶ。
臨時アドレス・アイデンティティ・アソシエーション (IA_TA, 4):一時的なアドレスに関するIAと関連パラメータを運ぶ。
IA アドレス (IA Address, 5):IA_NAまたはIA_TAに関連する
IPv6アドレスを指定。
オプション要求 (Option Request, 6):クライアントがサーバに要求するオプションのリストを示す。
優先度 (Preference, 7):サーバ選択に影響を与える優先度をクライアントに送信。
経過時間 (Elapsed Time, 8):DHCPトランザクション開始からの時間を1/100秒単位で示す。
リレー・メッセージ (Relay Message, 9):DHCPメッセージをカプセル化する。
認証 (Authentication, 11):DHCPメッセージの身元と内容を認証するための情報。
サーバ・ユニキャスト (Server Unicast, 12):クライアントがサーバにユニキャストメッセージを送信できることを示す。
状態コード (Status Code, 13):メッセージやオプションに関連する状態を示す。
急速コミット (Rapid Commit, 14):アドレス配布を高速化するためのオプション。
ユーザ・クラス (User Class, 15):クライアントのユーザーまたはアプリケーションの種類を指定。
ベンダ・クラス (Vendor Class, 16):クライアントのハードウェアベンダを識別。
ベンダ固有情報 (Vendor-specific Information, 17):ベンダ固有の情報を交換。
インタフェース識別子 (Interface-Id, 18):リレーエージェントがメッセージを受信したインターフェースを識別。
再設定メッセージ (Reconfigure Message, 19):クライアントに設定変更を通知。
再設定受入 (Reconfigure Accept, 20):クライアントが再設定メッセージを受信できることを通知。
SIP サーバ・ドメイン名リスト (SIP Servers Domain Name List, 21):SIPサーバのドメイン名を通知。
SIP サーバ IPv6 アドレス・リスト (SIP Servers IPv6 Address List, 22):SIPサーバの
IPv6アドレスを通知。
DNS Recursive Name サーバ (DNS Recursive Name Server, 23):DNSリカーシブサーバのIPv6アドレスを通知。
ドメイン検索リスト (Domain Search List, 24):ホスト名解決に使用するドメインリストを指定。
プレフィクス委譲のためのアイデンティティ・アソシエーション (IA_PD, 25):プレフィックス委譲に関するIAと関連パラメータを運ぶ。
IA_PD プレフィクス (IA_PD Prefix option, 26): IA_PDに関連する
IPv6アドレスプレフィックスを指定する。
ネットワーク情報サービス (NIS) サーバ IPv6 アドレス・リスト (Network Information Service (NIS) Servers, 27):NISサーバのIPv6アドレスを通知。
ネットワーク情報サービス V2 (NIS+) サーバ IPv6 アドレス・リスト (Network Information Service V2 (NIS+) Servers, 28):NIS+サーバの
IPv6アドレスを通知。
ネットワーク情報サービス (NIS) サーバ・ドメイン名リスト (Network Information Service (NIS) Domain Name, 29):NISサーバのドメイン名を通知。
ネットワーク情報サービス V2 (NIS+) サーバ・ドメイン名リスト (Network Information Service (NIS) Domain Name, 30):NIS+サーバのドメイン名を通知。
SNTP サーバ IPv6 アドレス・リスト (Simple Network [[Time Protocol]] (SNTP) Servers, 31):SNTPサーバのIPv6アドレスを通知。
情報更新時間 (Information Refresh Time, 32):DHCPv6で取得した情報を更新する時間の上限を指定。
リレー・エージェント遠隔 ID (Relay Agent Remote-ID, 37):リレーエージェントが回路の遠隔ホストを識別。
リレー・エージェント購読者 ID (Relay Agent Subscriber-ID, 38): リレーエージェントが購読者に安定な識別子を与えるために使用する。
DHCPv6 クライアント FQDN (DHCPv6 Client FQDN, 39): DHCPサーバがクライアントのFQDNを知る、またはFQDNの更新を交渉するために使用される。
関連RFC
RFC 8415 -
Dynamic Host Configuration Protocol for
IPv6 (DHCPv6)
RFC 3315 - Dynamic Host Configuration Protocol for IPv6 (DHCPv6): 旧
RFC 3319 -
Dynamic Host Configuration Protocol (DHCPv6) Options for
Session Initiation Protocol (SIP) Servers
RFC 3646 - DNS Configuration options for Dynamic Host Configuration Protocol for IPv6 (DHCPv6)
RFC 3898 - Network Information Service (NIS) Configuration Options for
Dynamic Host Configuration Protocol for
IPv6 (DHCPv6)
RFC 4075 - Simple Network [[Time Protocol]] (SNTP) Configuration Option for DHCPv6
RFC 4580 -
Dynamic Host Configuration Protocol for
IPv6 (DHCPv6) Relay Agent Subscriber-ID Option
RFC 4704 - The Dynamic Host Configuration Protocol for IPv6 (DHCPv6) Client Fully Qualified Domain Name (FQDN) Option
参考文献
[Hag 07] Silvia Hagen, “
IPv6Essentials, Second Edition”, O'Reilly, 2007. (邦訳: 市原 英也 監訳, “
IPv6 エッセンシャルズ 第 2 版”, オライリー・ジャパン, 2007).