DHCPとは
- Dynamic Host Configuration Protocol
- L7(アプリケーション層)プロトコル
- 構成要素
- DHCPサーバ:クライアントにIPアドレスを割り当てる。Windowsサーバ/Linuxサーバ/ルータに構築。
- DHCPクライアント:IPアドレスを割り当てられる端末。
- DHCPサーバ向けのパケットはUDP:67で、DHCPクライアント向けのパケットは、UDP:68を使用。
DHCPの仕組み
- IPアドレスをクライアントに割り当てるまでの流れ(同一セグメントにクライアントとサーバがある場合)
- DHCP Discover
- クライアントからブロードキャストでDHCP Discoveryメッセージを送信し、ネットワーク全体に問い合わせる
- そのときのパケットの中身
送信元MACアドレス | 宛先MACアドレス | 送信元IPアドレス | 宛先IPアドレス | 送信元ポート | 宛先ポート | DHCPメッセージ |
---|---|---|---|---|---|---|
クライアントのMACアドレス | FF:FF:FF:FF:FF:FF | 0.0.0.0 | 255.255.255.255 | 68 | 67 | DHCP Discover |
- DHCP Offer
- サーバ側でアドレスプールから割り当てるIPアドレスを選択し送信。
- そのときのパケットの中身
送信元MACアドレス | 宛先MACアドレス | 送信元IPアドレス | 宛先IPアドレス | 送信元ポート | 宛先ポート | DHCPメッセージ |
---|---|---|---|---|---|---|
サーバのMACアドレス | FF:FF:FF:FF:FF:FF or クライアントのMACアドレス | サーバのIPアドレス | 255.255.255.255 | 67 | 68 | DHCP Offer + 割り当てるDHCPクライアントのIPアドレス + DHCPサーバのIPアドレス |
- DHCP Request
- クライアントは割り当てられたIPを使用する通知をブロードキャストで送信。まだこの時点では設定情報がなく、割り当てられていない。
- そのときのパケットの中身
送信元MACアドレス | 宛先MACアドレス | 送信元IPアドレス | 宛先IPアドレス | 送信元ポート | 宛先ポート | DHCPメッセージ |
---|---|---|---|---|---|---|
クライアントのMACアドレス | FF:FF:FF:FF:FF:FF | 0.0.0.0 | 255.255.255.255 | 68 | 67 | DHCP Request + 割り当てるDHCPクライアントのIPアドレス + DHCPサーバのIPアドレス |
- DHCP Ack
- サーバが割り当てるIPアドレスの情報をクライアントに送信。
- そのときのパケットの中身
送信元MACアドレス | 宛先MACアドレス | 送信元IPアドレス | 宛先IPアドレス | 送信元ポート | 宛先ポート | DHCPメッセージ |
---|---|---|---|---|---|---|
サーバのMACアドレス | FF:FF:FF:FF:FF:FF or クライアントのMACアドレス | サーバのIPアドレス | 255.255.255.255 | 67 | 68 | DHCP Ack + DHCPクライアントのIPアドレス + Gatewayやsubnetなどの情報 |
-
※DHCP Offer/DHCP Ackはブロードキャストもしくはユニキャストで送信される。DHCP Discovery内のブロードキャストフラグ次第でどちらかに決まる。
-
IPアドレスのリース更新の流れ
- DHCP Request
- クライアントがサーバにリース期限更新のリクエストを送る
- DHCP Ack
- サーバがクライアントに要求を許可するメッセージを送信する。
- DHCP Request
-
IPアドレスの解放までの流れ
- DHCP Release
- クライアントがサーバにリリース依頼のリクエストを送信。
- DHCP Release
なぜDHCPクライアントがDHCP Offerの情報をそのまま使わないのか?
- DHCPサーバがネットワーク上に複数台存在する場合があり、その際に他のすべてのDHCPサーバにどのDHCPサーバからの設定情報を使用するか通知する必要があるため、DHCP Requestによってブロードキャストで送信し、通知している
DHCPリレーエージェント
- L2を超えた先にDHCPサーバが存在する場合(=ルータの先にDHCPサーバが存在する場合)、DHCPリレーエージェントを設置する必要あり
- ブロードキャスト通信は、ルータ(L3)を越えられない(ルータがパケットを破棄する)ため。
- DHCPリレーエージェントとは?
- ルータがリレーエージェントになることが多いが、サーバにソフトウェアを入れて構築することも可能
- DHCPクライアントが送信したDHCP Discovery/OfferパケットなどのブロードキャストパケットをユニキャストでDHCPサーバに転送する役割
- その後、DHCPサーバはDHCPリレーエージェントにユニキャストで応答し、DHCPリレーエージェントは、ブロードキャストでDHCPクライアントに送信する