Windows Server – DHCP サービス (DHCP とは)

DHCP サーバー

今回より DHCP について説明を行います.
まずは DHCP とはなにか,どのように動作するのかを解説します.

DHCP とは

Dynamic Host Configuration Protocol(DHCP)は,IP ネットワークで使用されるネットワーク管理プロトコルです.
コンピューターがネットワークに接続する際に必要な設定情報を自動的に割り当てるために使用され,主にクライアント機 (PCやスマホ,ゲーム機) で利用されます.
大元には BOOTP というプロトコルがあり,これに機能を追加して DHCP として仕様化されました.

DHCP サーバーは,IP アドレス等のネットワーク構成設定をデバイスに動的に割り当て,他の機器と通信が行えるようにします.
コンピューターなどのクライアント端末は自動的にIPアドレスやネットワーク設定を要求し,DHCP サーバーが要求への応答を行う事でネットワーク管理者やユーザーが端末に手動で IP アドレスを割り当てる必要がなくなります.

詳細は後述しますが,同一サブネット内およびリレーを用いたサブネットを跨いだ DHCP サーバーの構成が可能です.

DHCPの通信フロー (同一セグメント内)

同じセグメント内の クライアントとサーバー間の DHCP の通信フローはこのようになります.

DHCP DISCOVER

DHCP DISCOVER は,アドレス払いだしを受けるべく DHCP サーバーを探索するためのリスクエストメッセージパケットです.

起動直後のクライアントは IP アドレスを持っていない,および,DHCP サーバーがどこにいるのか不明の状態のため,0.0.0.0 (及び自身のMACアドレス) を送信元アドレスとして設定し,送信する宛先アドレスはブロードキャストアドレス 255.255.255.255 (及び FF:FF:FF:FF:FF:FF) 宛てに DHCP DISCOVER パケットを送信します.

DHCP DISCOVER パケットを送信する際にクライアントの情報として幾つかの情報を付随して送信しています.代表的なものとして以下があります.

  • Client Identifier
    クライアント識別子が入ります。ほとんどの場合はその端末の MAC アドレスが記されます
  • Vendor Class Identifier
    クライアントのOS情報 (MSFT 5.0 や android-dhcp-10 など) が記されます
  • Parameter Request List
    DHCP でアドレス情報以外に要求したいオプション一覧を要求としてメッセージの中に追加されます
    例えば,サブネットマスク,ゲートウェイ,DNS サーバーなどです

DHCP OFFER

DHCP OFFER は,クライアントからの DHCP DISCOVER リクエストを受け取り,アドレスを払い出す事が可能な DHCP サーバーから返される応答メッセージです.

この際,クライアントに払い出すアドレスを予約して DHCP OFFER の中で提示します.
合わせて,リース時間などの他の設定値もメッセージ内に含んで応答しています.代表的なものとして以下があります.

  • Your IP Address
    クライアントに使用してもらう予定の IP アドレスが記されます
  • DHCP Server Identifier
    DHCP OFFER メッセージを返す DHCP サーバー自身の IP アドレスが記されます
  • Renewal Time Value
    リース延長申請までの時間が記されます
  • Rebinding Time Value
    リース延長が出来ない場合の再度 DHCP DISCOVER を行う時間が記されます
  • Lease Time Value
    払い出す IP アドレスのリース時間が記されます
  • Parameter Request List への応答
    DHCP DISCOVER 事に要求されたオプション一覧に対する応答がメッセージの中に追加されます
    例えば,サブネットマスク,ゲートウェイ,DNS サーバーなどです

DHCP REQUEST

DHCP REQUEST は,DHCP OFFER を返してきた DHCP サーバーから1台を選び,そのサーバー宛に DHCP REQUEST を送出します.
そのサーバー宛てと書いていますが,宛先アドレスはブロードキャストになります.

ブロードキャスト宛てなので,複数のDHCP サーバーが DHCP REQUEST を受け取る事になりますが,DHCP REQUEST メッセージ内にどのサーバーに要求しているかの値が入っています.
この値を読み取って各 DHCP サーバーは自身宛てであれば ACK を返します.それ以外の DHCP サーバーは NACK を返します.

DHCP REQUEST パケットを送信する際にクライアントの情報などを付随して送信しています.代表的なものとして以下があります.

  • Requested IP Address
    DHCP OFFER で提示された Your IP Address の値が記されます
  • DHCP Server Identifier
    払い出しを依頼する DHCP サーバーのIPアドレスが記されます
  • Client Identifier
    クライアント識別子が入ります。ほとんどの場合はその端末の MAC アドレスが記されます
  • Vendor Class Identifier
    クライアントのOS情報 (MSFT 5.0 や android-dhcp-10 など) が記されます
  • Parameter Request List
    DHCP でアドレス情報以外に要求したいオプション一覧を要求としてメッセージの中に追加されます
    例えば,サブネットマスク,ゲートウェイ,DNS サーバーなどです

DHCP ACK

DHCP ACK は,DHCP サーバーが DHCP REQUEST を受け「DHCP Server Identifier」を見て自身が処理すべきと判断し,IP アドレスやオプション値を応答する際に DHCP サーバーが送信するメッセージです.

DHCP REQUEST を受け取った際,中の「DHCP Server Identifier」を見て自身が処理すべきでないと判断したサーバーは DHCP NACK を返答します.

DHCP ACK パケットを送信する際にクライアントからの要求に対しての応答を含んで送信しています.代表的なものとして以下があります.

  • Your IP Address
    REQUEST を出したクライアントに払い出す IP アドレスが記されます
  • Server IP Address
    DHCP ACK を応答したサーバーの IP アドレスが記されます
  • Renewal Time Value
    リース延長申請までの時間が記されます
  • Rebinding Time Value
    リース延長が出来ない場合の再度 DHCP DISCOVER を行う時間が記されます
  • Lease Time Value
    払い出す IP アドレスのリース時間が記されます
  • Parameter Request List への応答
    DHCP REQUEST 事に要求されたオプション一覧に対する応答がメッセージの中に追加されます
    例えば,サブネットマスク,ゲートウェイ,DNS サーバーなどです

DHCP DISCOVER ~ DHCP ACK の一連の流れを経て,クライアントは IP アドレスや参照 DNS サーバーアドレスなどを取得,設定が行われてネットワークの利用が可能となります.

DHCP の通信フロー (違うセグメント間)

違うセグメント間の クライアントとサーバー間の DHCP の通信フローはこのようになります.

クライアントはブロードキャストで DHCP サーバーとの通信を試みます.
クライアントと DHCP サーバーの間に DHCP リレー機能を持つ機器 (ルーターや L3 スイッチなど) が介在し,設定に従って DHCP サーバーに転送を行います.
DHCP リレーを行う機器と DHCP サーバーの間は常にユニキャストとなります.

その間で発生するやり取りについては先ほど説明した内容と同一です.

DHCP オプション

Parameter Request List に要求したいオプションが記されて送信,応答されると説明をしました.
Parameter Request List はどの機器/OS も同じオプションを付けるわけではないことに注意してください.

一部のオプションを除いて,DHCP サーバーはクライアントから要求があってその要求に答える形で結果を応答に含めます.要求されていないものは応答に含まれないことを理解してください.

以下に,OS 種別として,Windows / Android / iOS の DHCP Request List の違いを纏めました.
これが他の機器,例えば IP 電話や Nintendo Switch では違う要求になるため,正しい情報を把握したければパケットのキャプチャーや DHCP サーバー側でデバッグを行う必要があります.

番号オプション名説明Win
dows
An
droid
iOS
1Subnet Maskリースされるアドレス帯のサブネットマスク
3Router利用可能なルーター.複数配布が可能
6Domain Name Server参照DNSサーバー.複数配布が可能
12HostNameクライアントのホスト名
15Domain Nameドメイン名
26Interface MTUMTU値
28Broadcast Addressブロードキャストアドレス
31Perform Router DiscoveryIRDP(ICMP Router Discovery Protocol)
33Static Routeクラスフルな静的ルート
43Vendor Specific Infomationベンダー固有の情報.サブオプションを用いて複数のキー,値を利用可能
44NetBIOS over TCP/IP Name ServerNetBIOS 名前解決サーバー
46NetBIOS over TCP/IP Node TypeNetBIOS 名前解決方法の指定
47NetBIOS over TCP/IP ScopeNetBIOS スコープ ID の指定
50Requested IP Addressリースを依頼するIPアドレス
51IP Address Lease Timeリース時間
54DHCP Server IdentifierDHCPサーバーのIPアドレス
57Maximum DHCP Message SizeDHCPの最大メッセージサイズ
58Renewal Time Valueリース延長の開始時間
59Rebinding Time Value再度 DISCOVER する時間
60Vendor Class Identifierベンダー識別子.製品名や型番など
61Client Identifierクライアント識別子.ほぼ MAC アドレス
81Client Fully Qualified Domain Nameクライアントの FQDN
114DHCP Captive-Portal認証サイトのアドレス
(Free Wifi の認証画面のようなもの)
119Domain Search検索ドメイン名の一覧
121Classless Static Routeクラスレスな静的ルート
249Private/Classless Static Route (Microsoft)MS独自のクラスレスな静的ルート
252Private/Proxy AutodiscoveryProxy構成ファイルの指定 (WPAD)

この表は3つの OS を元に作成しました.DHCP オプションはもっと多く存在しています.全てのオプションを把握したい場合は「https://www.iana.org/assignments/bootp-dhcp-parameters/bootp-dhcp-parameters.xhtml」を参照ください.

IPアドレスのリース延長(更新)の動作

DHCPでのアドレス配布は期限があり,その期限は Lease Time Value で通知される値となります.

リース期限を迎える前に延長 (更新) のリクエストを行う仕組みが RFC で規程されています.
また,延長 (更新) のリクエストを送信しても当初やり取りを行った DHCP サーバーが応答出来ない場合,他の DHCP サーバーにアドレスの要求を再度行う仕組みも規定されています.

この例の場合,リース時間は Lease Time Value の 600s (10分) です.

延長のリクエストは Renewal Time Value を超えたら定期的に行われます.
この値は Lease Time Value の 50% と規定されているため,300s (5分) 経過後に延長のリクエストが行われる事となります.

延長リクエストはユニキャストで DHCP サーバーに直接送信され,DHCP サーバーが再リースを承認すると再度そこからリース時間がカウントされます.
つまり,5分後の更新で再度 10 分利用可能ということになります.そして,更新後5分経過したら同様に Renewal Time Value を超えるため再度延長のリクエストが行われます.

DHCP サーバーがダウンした等で応答しない場合,リース期限を迎えて IP アドレスの継続利用が不可能となります.
そこで Rebinding Time Value の時間を経過後は,ブロードキャスト宛に DHCP DISCOVER からやり直し,他の DHCP サーバーから IP アドレスの配布を試みます.
Rebinding Time Value はリース時間の 87.5% と規定されているため,600s の場合は 525s を超えると DHCP DISCOVER へ動作が切り替わります.

コメント

タイトルとURLをコピーしました