はじめてのDHCP入門
目次
インフラエンジニアの伊藤です。
DHCPというものを皆さんご存知でしょうか。
実は身近に存在しています。
家や会社のインターネットが出来ますか?
「出来る!」という方は既にDHCPのお世話になっている可能性が高いのです。
そんな影で活躍しているDHCPに少し陽の目を当てたいのが今回の記事です。
DHCPってなに?
ざっくり言うと、こんな感じですかね?
ネットワーク内のクライアントに対して通信出来るように設定情報を割り当てるプロトコルです。
PCにLANケーブルをつなぐと、DHCPサーバからプールされているIPアドレスが渡され、
かつゲートウェイやDNSサーバの情報も渡されて設定されます。
ということで、そのPCはLANケーブルを挿して起動するだけで、
ネットワークの設定をする必要がないのです。
この時、LAN内にDHCPサーバがいて、そのサーバからIPアドレスを付与されるPCを「DHCPクライアント」といいます。
みなさんの自宅にあるPCも、「ネットワークの設定」なんてしなくてもインターネットが出来るでしょう。
それが「DHCP」なのです。自宅であれば、ルーターがたいていDHCPの役割を果たしてくれています。
DHCPサーバに設定出来る内容としてはこんなものがあります。
- IPアドレス
- サブネットマスク
- デフォルトゲートウェイ
- DNSサーバ
また、他にはDHCPとしての設定としてこんなものがあります。
- 各種アドレスのリース期間
- スコープ(サブネットの範囲)の設定
- 特定のPCに固定IPを割り当てる予約の設定
それぞれ3つの設定を簡単に説明するとこんな感じです。
リース期間 | 割り当てられたIPアドレスを使用出来る期間、リース期間終了するとDHCPクライアントはIPアドレスを再度取得する |
スコープ | 1スコープ=1サブネット。例えば「192.168.1.2~192.168.1.129」「192.168.1.130~192.168.1.253」それぞれがスコープになる。 |
予約 | 特定の機能を持ったDHCPクライアント(例:サーバ)に対しては同じIPアドレスを付与し続ける機能 |
こんな設定が出来るのですが、ではDHCPはどのようにしてIPアドレスが割り当てられていくのでしょうか。
もうちょっとDHCPについて掘り下げてみます。
DHCPのもうちょっと具体的な動き
DHCPを使うには、DHCPクライアント側ではIPアドレスを受け取れる状態になっていなければなりません。
DHCPは「Dynamic Host Configuration Protocol」の略で、「動的にホストの設定を行うプロトコル」ですので、
すなわちDHCPクライアンC側は「ネットワーク設定を動的に行われる状態」にしておく必要があります。
Windowsだとこんな状態。WindowsのデフォルトではDHCPを受け取る設定になってるので、あまり気にする必要はないでしょう。
Windows10だと以下で確認可能です。
[コントロールパネル] - [ネットワークと共有センター] - [アダプターの設定の変更]より、対象のネットワークのプロパティから確認
静的にIPアドレスを割り当てる必要が有る場合は、上記にて手動で割り当てましょう。
DHCPクライアントがIPアドレスを受け取るとき
DHCPクライアントがIPアドレスを受け取るまでの流れをざっと書きます。
- クライアント起動時にブロードキャストで「IPアドレスほしい」という要求を投げる(DHCPDISCOVER)
- DHCPサーバは「このIPアドレスをどうぞ」という設定をブロードキャストで投げる(DHCPOFFER)
- クライアントは「じゃあこのIPアドレスを使うね」という要求をブロードキャストで投げる(DHCPREQUEST)
- DHCPサーバはOK/NGを返す(DHCPACK/DHCPNAK)
いかがでしょうか?ブロードキャストで何度かやり取りするのがミソですね。
なんせIPアドレスが決定していない状態ですからね。
また、複数のDHCPサーバがいることも想定されているそうです。
IPアドレスのリース期間が終了しそうなとき
IPアドレスを付与した際、付与したIPアドレスとDHCPクライアントのMACアドレスをひも付け、
対象のIPアドレスのリース期間を管理しています。
なので、DHCPクライアントとサーバが通信しなかったとしても、対象のIPアドレスは付与されっぱなしという状態になります。
ただし、リース期間を過ぎて通信がされていない場合は、対象のIPアドレスはDHCPサーバの元に帰ります。
またネットワークに繋がった際に先ほどの受け取り時の動作を行います。
では、リースについてもう少し細かい流れを書きます。
- リース期間が半分になった際に、同じIPアドレスの使用延長をサーバに投げる(IPアドレス受け取り時の動作と同じことを行う)
- もし延長要求をDHCPサーバに投げて応答(DHCPACK)がない場合は失敗に終わる
- 定期的に延長要求をDHCPサーバに投げる
- 応答がないままリースが切れた場合、IPアドレスはリース終了となる
いかがでしょう。DHCPの賢いところは、基本的に同じIPアドレスを使おうとするところですね。
これをすることで再度IPアドレスの設定等を考える必要はなくなります。
ということはDHCPサーバで負荷が増えることもないですよね。
DHCPの動きはこんな感じです。
じゃあ、なぜDHCPというプロトコルがあるのでしょう。
静的に全部割り当ててたらいいがな。。。という考えもあるのではないでしょうか。
DHCPってどういったメリットがあるの?
DHCPを使わない場合、全端末に対して「IPアドレス/ゲートウェイ/DNSサーバ」の設定をする…
考えただけでゾッとしますね。
社内システム部門等、管理者の人にはかなりメリットを享受出来るでしょう。
だって静的に割り当てた場合、どの端末がどのIPアドレスかを管理しないとダメですからね。。
DHCPサーバだけで一元管理が可能になるのが大きいです。
逆にデメリットは…DHCPサーバがダウンして復旧できない場合、
全てのDHCPクライアントが通信出来なくなる可能性があるところですかね。
めちゃ大きなことですが、滅多にはない事故でしょうから、あまり気にすることではないかもしれません。
まとめ
いかがでしたでしょうか。
DHCPって聞き慣れないかもしれないですが、自宅のPCはまずDHCPになってることだと思います。
弊社もDHCPで各クライアントにIPアドレスを割り当ててます。
便利なDHCPですが、構築段階でどういった構成にするかキチンと決めておかないと痛い目に合うこともあります。
リース期間が過ぎているのにIPが返却されない…なんてことになると、IPが足りなくなってユーザから
怒られまくる、ってこともありえます。
ご利用は、計画的に。