DHCPとは

DHCP(Dynamic Host Configuration Protocol)は、IPアドレスなどのTCP/IPの通信に必要な設定を自動的に行うためのプロトコルです。

TCP/IPで通信を行うためには、TCP/IPの設定が正しく行われていることが大前提です。設定が間違ってしまっていると、当然、正常な通信はできません。具体的な設定内容としては、以下が挙げられます。

  • IPアドレス/サブネットマスク
  • デフォルトゲートウェイのIPアドレス
  • DNSサーバのIPアドレス

IT技術に慣れているユーザであれば、こうした設定を難なくできるでしょう。しかし、あまり慣れていないユーザにとっては、TCP/IPの設定をユーザ自身で行うことはハードルが高い場合があります。たとえ、慣れているユーザであっても設定ミスをしてしまうことはよくあります。設定ミスなどをなくすためには、設定の自動化が有効です。そのためのプロトコルがDHCPです。

DHCPによって、ホストをネットワークに接続すれば、自動的に必要なTCP/IPの設定を行うことができます。IT技術に慣れていないユーザでも正しい設定ができます。また、単純な設定ミスによるトラブルを防ぐこともできます。DHCPは、アプリケーション層に位置するプロトコルですが、アプリケーションの機能やデータのフォーマットを定義しているのではなく、TCP/IPの通信を行うために必要な設定を行うことが目的であることに注意してください。なお、DHCPは、トランスポート層にUDPを利用して、ウェルノウンポート番号67と68です。DHCPサーバは67でDHCPクライアントが68です。

DHCPの動作の概要

DHCPを利用するには、あらかじめDHCPサーバを用意し、配布するIPアドレスなどのTCP/IPの設定を登録しておきます。DHCPサーバに登録していれるTCP/IP設定情報をDHCPプールと呼びます。DHCPクライアントのホストがネットワークに接続すると、DHCPサーバとの間で以下の4つのメッセージをやり取りして、自動的にTCP/IPの設定を行います。

  1. DHCP DISCOVER
  2. DHCP OFFER
  3. DHCP REQUEST
  4. DHCP ACK
DHCPの概要
図 DHCPの概要

以上のようなDHCPのやり取りはブロードキャストを利用します。そもそもDHCPクライアントには自分のIPアドレスがわかりません。もちろん、DHCPサーバのIPアドレスもわかりません。アドレスがわからなくても、とりあえず何らかのデータを送りたいというときにブロードキャストを利用します。ブロードキャストで同じネットワーク上のすべてに送っておけば、同じネットワーク上にDHCPサーバが存在していれば、DHCPサーバが返事を返してくれるだろうという考えです。ブロードキャストを利用するため、DHCPサーバとDHCPクライアントは原則として同じネットワーク上に接続されている必要があります。ネットワークを相互接続するルータはブロードキャストを他のネットワークに転送しないためです。

また、DHCPで設定情報を取得すると、ホストのIPアドレスがコロコロと頻繁に変わってしまう可能性があります。IPアドレスが変わってしまうと、ホストを特定するのに手間がかかることになります。DHCPでIPアドレスを自動的に設定する際、決まったIPアドレスを配布することもできます。

DHCPリレーエージェント

DHCPクライアントとDHCPサーバは同じネットワーク上であることが前提ですが、それが難しいこともあります。企業の社内ネットワークは、部署ごとなどで複数のネットワークに分割されています。各ネットワークにDHCPサーバを準備すると、たくさんのDHCPサーバが必要になり、サーバの管理が煩雑になってしまいます。複数のネットワーク上のDHCPクライアントに対して、1台のDHCPサーバでTCP/IPの設定情報を配布できるようにしたいと考えるのは、自然なことでしょう。

1台のDHCPサーバで複数のネットワークのDHCPクライアントにTCP/IP設定情報を配布するためには、各ネットワークのDHCPプールを設定しておきます。そして、DHCPリレーエージェント機能を利用します。

DHCPリレーエージェントとは、DHCPのブロードキャストメッセージをユニキャストに変換する機能です。DHCPリレーエージェント機能は、ルータで利用することが一般的です。DHCPクライアントが接続されているネットワーク上のルータでDHCPリレーエージェント機能を有効にします。

DHCPリレーエージェントによって、次のようにDHCPクライアントへTCP/IP設定情報を配布します。

  1. DHCPクライアントがDHCPDISCOVERをブロードキャストで送信します。
  2. DHCPリレーエージェントを有効にしているルータがDHCPクライアントからのDHCPDISCOVERのブロードキャストメッセージを受信すると、DHCPサーバのIPアドレスを宛先IPアドレスとしてユニキャストに変換して転送します。このとき、DHCPクライアントが接続されているネットワークの情報を付加します。
  3. DHCPサーバは、DHCPクライアントが接続されているネットワークに合わせたDHCPプールからTCP/IP設定情報をDHCPOFFERでルータに返します。
  4. ルータはDHCPOFFERをブロードキャストに変換して転送します。

以降、DHCPREQUEST、DHCPACKも同じように転送します。

DHCPリレーエージェントの概要
図 DHCPリレーエージェントの概要