ネットワーク●●○○○

DHCP

でぃーえいちしーぴー

ネットワークに参加した機器へIPアドレス等の設定を自動配布するプロトコル。

概要

DHCP(Dynamic Host Configuration Protocol)は、ネットワークに参加してきた機器へ、IPアドレスをはじめとする通信に必要な設定一式を自動で配布するプロトコルです。スマホを自宅の Wi-Fi につないだ瞬間、何も設定していないのにインターネットが使える — あの「つないだら勝手に使える」体験の裏で働いているのが DHCP です。

配布する側を DHCP サーバと呼びますが、専用の機械が必要なわけではありません。家庭用の Wi-Fi ルーターにはほぼ例外なく DHCP サーバ機能が内蔵されており、あなたの家でも今まさに動いています。企業ネットワークやクラウドの仮想ネットワークでも、機器やインスタンスへのアドレス配布は DHCP(またはその発想を継いだ仕組み)が担っており、「ネットワークの受付係」として最も身近なプロトコルのひとつです。

なぜ生まれたか

IP ネットワークでは、すべての機器が重複しないIPアドレスを持ち、さらにゲートウェイ(外への出口となるルーター)や DNS サーバの所在も知らなければ通信できません。DHCP 以前、これらはすべて管理者が 1 台ずつ手で設定していました。数台なら耐えられますが、数百台の職場では台帳でアドレスを管理し、設定ミスや台帳の記入漏れによる「アドレス重複」が起きるたびに 2 台の機器が同時に不調になる、という消耗戦でした。

決定打になったのはノート PC の普及です。持ち運ばれる機器は、つなぐ場所が変わるたびに適切なアドレスへ設定し直さなければなりません。「機器が固定の場所にある」前提が崩れた結果、人手による設定は完全に破綻しました。そこで 1993 年に標準化されたのが DHCP です。設定情報をサーバに集約し、機器がネットワークに参加した時点で自動配布する。しかも「貸与」という形にして期限を付けることで、いなくなった機器のアドレスを自動回収し、限られたアドレスを使い回せるようにしました。

詳細

DORA — 4 つのメッセージで契約が成立する

DHCP のやり取りは、DISCOVER → OFFER → REQUEST → ACK という 4 つのメッセージで完結します。頭文字を取って DORA と呼ばれる、この分野の基本フローです。

DHCPサーバクライアントDHCPサーバクライアント以後クライアントは配布された設定で通信を開始DISCOVER サーバを探す ブロードキャストOFFER このアドレスはどうですかREQUEST それをください ブロードキャストACK 確定です リース期間はこれだけ

順に追いましょう。まず参加したての機器は、自分のアドレスも DHCP サーバの場所も知りません。そこで(1)DISCOVER を「同一ネットワークの全員宛て」(ブロードキャスト)で叫びます。宛先を知らなくても届く、この始まり方が DHCP の面白いところで、まだ IP アドレスを持たない機器が通信するために、応答不要・軽量な UDP が使われます。(2)それを聞いた DHCP サーバは、管理しているアドレスプールから空きをひとつ選び、「これはどうですか」と OFFER を返します。(3)機器は「では、それをください」と REQUEST を返します。これもブロードキャストで送るのがポイントで、ネットワークに DHCP サーバが複数あった場合に「どのサーバの提案を採用したか」を全サーバへ知らせ、選ばれなかったサーバが提案分を回収できるようにしています。(4)最後にサーバが ACK で確定を告げ、契約成立です。

リース — アドレスは「もらう」のではなく「借りる」

ACK で渡されるアドレスには必ず有効期限(リース期間)が付いています。買い取りではなく賃貸です。クライアントは期限の半分を過ぎたあたりで「延長させてください」と更新要求を送り、サーバが認めればそのまま同じアドレスを使い続けます。更新されないまま期限が切れると、サーバはそのアドレスを空き在庫に戻し、次の機器へ貸し出せます。カフェの Wi-Fi のように客が次々入れ替わる環境では短め(1 時間など)、社内 LAN では長め(数日)と、機器の入れ替わりの激しさに合わせてリース期間を設計します。短すぎれば更新トラフィックが増え、長すぎれば去った機器がアドレスを抱えたままになる、というトレードオフです。

配られるのはアドレスだけではない

DHCP が配布するのは IP アドレス単体ではなく、通信を始めるための設定一式です。最低限、(1) IP アドレスとサブネットマスク(自分のネットワークの範囲)、(2) デフォルトゲートウェイ(外の世界への出口)、(3) DNS サーバのアドレス(名前解決の問い合わせ先)の 3 点セットが揃って初めて「インターネットが使える」状態になります。このほかオプションとして時刻サーバや、ネットワークブート用の情報なども配れます。逆に言えば、DHCP サーバの設定ミスは全端末に一斉配布される、ということでもあります。誤った DNS を配れば全員が名前解決できなくなりますし、ネットワーク内に野良の DHCP サーバ(設定ミスで DHCP 機能が有効なまま持ち込まれたルーターなど)が現れると、正規サーバと配布競争になってネットワーク全体が不調になります。原因が一見バラバラの不具合として現れるため、切り分けの難しいトラブルの定番です。

固定割当との使い分け

すべてを動的配布にすればよいわけではありません。社内の DNS サーバやプリンタ、ロードバランサ配下の機器のように「他の機器から名指しでアクセスされる側」は、アドレスが変わると参照が壊れるため固定である必要があります。方法は 2 つあり、機器側に手動設定する静的設定と、DHCP サーバ側で「この機器(MAC アドレスで識別)には常にこのアドレスを貸す」と決めておく固定リース(予約)です。後者なら設定の集中管理という DHCP の利点を保ったまま固定化でき、実務ではこちらが好まれます。一般的な設計は「サーバ類は固定、ノート PC・スマホなどのクライアントは動的」という住み分けで、家庭のルーターの設定画面にも同じ思想の「DHCP 固定割当」欄が存在します。身近なルーターの管理画面を眺めてみると、この語彙の全要素 — アドレスプール、リース一覧、固定割当 — が実物として並んでいるはずです。