第5章 アプリケーション層|5-2|コース全体 19本中17本目
DHCPとは ― IPアドレスを自動で配るしくみ
DHCPとは、
前の記事 ・5-1 DNSとは ― 名前解決のしくみ
DHCPは、IPアドレスと一緒に3つの設定も自動で配る
端末をネットワークにつなぐと、多くの場合は何も入力しなくても通信が始まります。これはDHCP(Dynamic Host Configuration Protocol)の働きです。DHCPサーバは、新しく参加した端末に次の4つをまとめて配ります。
- 1
IPアドレス
この端末自身の住所です。
- 2
サブネットマスク
住所のうち、どこまでがネットワークを示す部分かの境目です。
- 3
デフォルトゲートウェイ
外向けの通信を預ける相手です。
- 4
DNSサーバ
ドメイン名をIPアドレスに変換してくれる相手です。配られるのは、その相手のIPアドレスです。
それぞれの中身は、IPアドレス・サブネットマスク・デフォルトゲートウェイ・DNSの各記事で説明しています。
まだIPアドレスがない端末は、どう話しかけるのか
通常の通信では、宛先IPアドレスを指定して1対1で送ります。この送り方をユニキャストと呼びます。しかし、DHCPで最初にやり取りする端末は、まだIPアドレスを持っていません。宛先のDHCPサーバのIPアドレスも分かりません。
この問題を、DHCPはブロードキャストで解決します。ブロードキャストは、同一ネットワーク内の全員に一斉に届ける通信方法です。宛先は、255.255.255.255 にします。住所を持たない端末でも、宛先を名指しせずに「まだ住所がありません。DHCPサーバはいますか」と送り出せます。
255.255.255.255 は、自分のネットワーク全体を指す宛先です。このアドレスを、限定ブロードキャストと呼びます。
サブネットマスクの記事で説明したブロードキャストアドレスは、ネットワークごとに決まります。ホスト部がすべて1のアドレスで、たとえば 192.168.10.255 です。限定ブロードキャストは、自分のネットワーク情報がまだ分かっていなくても使えます。この点で、ネットワークごとのブロードキャストアドレスとは使う場面が違います。
宛先の種類による届く範囲の違いは、ユニキャスト・ブロードキャスト・マルチキャストの記事にまとめています。
DORA:4段階のやり取りでIPアドレスが決まる
DHCPでIPアドレスが決まるまでには、4つのメッセージをやり取りします。順に、DISCOVER、OFFER、REQUEST、ACKです。この流れを、4つのメッセージの頭文字を取ってDORAと呼びます。
DISCOVERとREQUESTは、必ずブロードキャストです。OFFERとACKは、端末側の実装しだいで、ブロードキャストになる場合とユニキャストになる場合があります。
① DISCOVER:端末がDHCPサーバを探す
端末は、「DHCPサーバはいませんか、IPアドレスをください」という要求をブロードキャストします。自分のIPアドレスがまだないため、送信元は 0.0.0.0 のままです。
② OFFER:サーバが候補を提案する
DISCOVERを受け取ったDHCPサーバは、割り当て候補のIPアドレスをOFFERで返します。OFFERには、サブネットマスク・デフォルトゲートウェイ・DNSサーバ・リース期間もまとめて入れます。
DISCOVERメッセージには、応答をブロードキャストで欲しいかどうかを示す印があります。この印をBROADCASTフラグと呼びます。端末がこのフラグを立てていれば、サーバはブロードキャストで返します。立てていなければ、端末のMACアドレス宛にユニキャストで返します。
このフラグを立てるかどうかは、端末の実装によって異なります。macOSやLinuxの標準的なDHCPクライアントは、通常は立てません。同じネットワークにDHCPサーバが複数あれば、それぞれが別々のOFFERを返すことがあります。
③ REQUEST:端末がどれか1つを選ぶ
端末は、届いたOFFERの中から1つを選びます。そして、「このIPアドレスをください」というREQUESTを送ります。OFFERとは違い、このREQUESTは常にブロードキャストです。
選んだサーバにだけユニキャストで伝えないのには、理由があります。他にOFFERを出した別のDHCPサーバにも、「あなたの提案は選ばれませんでした」と伝えるためです。そのサーバは、提案していたIPアドレスを解放し、他の端末に割り当てられるようにします。
④ ACK:選ばれたサーバが確定を返す
REQUESTで選ばれたDHCPサーバは、ACKを返します。ACKは、そのIPアドレスの割り当てを確定する知らせです。ACKもOFFERと同じく、端末のBROADCASTフラグの立て方しだいで、ブロードキャストかユニキャストかが決まります。
端末はACKを受け取って初めて、通知された4つの設定を自分に反映します。
リースには期限があり、定期的に更新する
DHCPで配られたIPアドレスは、永久に使えるわけではありません。期限つきで貸し出す形で割り当てられます。この貸し出しをリースと呼びます。期限が切れる前に、端末はサーバに更新を申し出ます。
更新を試みるタイミングは、リース期間の50%が経過した時点です。この時点をT1と呼びます。たとえばリース期間が8時間なら、4時間経過した時点で最初の更新を試みます。
この更新のREQUESTは、リースを出したDHCPサーバに直接ユニキャストで送られます。DORAの最初のREQUESTとは違います。端末はすでにIPアドレスを持ち、相手のサーバも分かっているためです。
更新が成功すると、リース期間はその時点から数え直しになります。
T1でのユニキャストによる更新に、応答がない場合もあります。そのとき、端末はそのまま待つわけではありません。リース期間の87.5%が経過した時点で、もう一度更新を試みます。この時点をT2と呼びます。
T2では、特定のサーバを指定せず、ブロードキャストで更新を試みます。同じネットワークにいる別のDHCPサーバでも、応答できるようにするためです。
T2でも更新できないまま、リース期間が満了することもあります。そうなると、そのIPアドレスは失効します。端末は最初のDISCOVERからやり直し、新しくIPアドレスを取得します。
DHCPはUDPを使い、ポート67と68を使い分ける
DHCPは、コネクションを確立しないUDPでやり取りします。宛先IPアドレスがそもそも決まっていない以上、TCPのようにコネクションを結んでから話す方式は使えません。ポート番号は役割ごとに固定です。
| 役割 | ポート番号 |
|---|---|
| DHCPサーバ | 67 |
| DHCPクライアント | 68 |
DISCOVERとREQUESTは宛先67番、OFFERとACKは宛先68番です。サーバ側が常に67番、クライアント側が常に68番を使います。
固定IPとDHCP、どちらを使うか
サーバやプリンタ、ルータ・スイッチ自身などは、他の機器から名指しでアクセスされます。こうした機器は、IPアドレスが変わると困ります。そこで、固定IPを手動で設定します。
一方、PCやスマートフォンなどは、自分からアクセスする側の機器です。IPアドレスが多少変わっても困りません。DHCPに任せたほうが、設定の手間が省け、IPアドレスが重複する事故も防げます。
| 機器の | 向いている |
|---|---|
| サーバ、ファイルサーバ | 固定IP |
| プリンタ、ルータ・スイッチ自身 | 固定IP |
| PC、スマートフォン、タブレット | DHCP(自動) |
手動で設定せずに、DHCPで同じアドレスを毎回配る方法もあります。この方法と手動の設定の違いは、固定IPアドレスの記事で比べています。
DHCPの注意点
ブロードキャストはルータを越えない
IPアドレスを取得するときのDORAでは、DISCOVERとREQUESTは必ずブロードキャストです。ブロードキャストは、同一ネットワーク内にしか届きません。ルータを越えて、別のネットワークに転送されることはありません。
そのため、DHCPサーバが別のネットワークにしかない場合、端末のDISCOVERはそのままでは届きません。この場合は、ルータなどにブロードキャストを代理で中継させます。この仕組みをDHCPリレーエージェントと呼びます。
DHCPサーバが見つからないとどうなるか
DISCOVERを送っても、一定時間OFFERが返ってこないことがあります。その場合、OSは169.254.0.0/16の範囲で、暫定的なアドレスを自分で割り当てます。このアドレスをAPIPAと呼びます。IPアドレスの構造にも出てきます。
このアドレスが付いているのは、DHCPサーバとの通信に失敗した証拠です。正常なDHCPでの割り当てではありません。
IPv6での自動設定
ここまでのDHCPは、IPv4のものです。IPv6には、似た働きをするDHCPv6があります。ほかに、DHCPサーバなしで端末自身がアドレスを組み立てる仕組みもあり、SLAACと呼びます。どちらもIPv6の記事で説明しています。
不正なDHCPサーバが混ざるとどうなるか
DORAのやり取りには、応答してきた相手が正規のDHCPサーバかどうかを確かめる仕組みがありません。端末は、届いたOFFERの送り主が正規のサーバかどうかを区別できません。同じLANに攻撃者が用意した不正なDHCPサーバが混ざると、端末がそちらのOFFERを選んでしまうことがあります。スイッチ側でこれを防ぐ仕組みが、DHCPスヌーピングです。
練習問題(全5問)
正解:IPアドレス・サブネットマスク・デフォルトゲートウェイ・DNSサーバ
DHCPは
正解:DISCOVER → OFFER → REQUEST → ACK
まず
正解:255.255.255.255
端末は、
正解:67番
DHCPサーバは
正解:リース期間の
端末は、
選んでから「採点する」を押すと、解説つきで答え合わせができます。
おすすめの本 PR
ネットワークを初めて学ぶ人向けの入門書です。
![『[改訂新版]3分間ネットワーク基礎講座』の表紙](https://m.media-amazon.com/images/P/4774143731.09.MZZZZZZZ.jpg)
