試験項目 1.7 · CCNA-036
DHCPv4 Client / Server Process
DHCPv4 Client / Server / Relay · Cisco IOS · Troubleshooting
このページのゴール
DHCPv4 Message FlowとClient / Server / Relayの役割を理解し、Message 確認情報から処理がどの段階まで進んでいるか判断できるようにする。
このページで学ぶこと
- DORA Sequence
- DHCPDISCOVER Role
- DHCPOFFER Role
- DHCPREQUEST / Server 選択
- DHCPACK Role
- DHCPNAK Meaning
- DHCPDECLINE Meaning
- DHCPRELEASE Meaning
- DHCPINFORM Meaning
- UDP 67 / 68
- Direct vs Relayed Client
- DHCP Relay / ip helper-address Role
- giaddr Relayed Pool 選択
- Direct Client Pool 選択
- Message 停止段階の特定
1. DHCPv4は「アドレスをもらう」だけではなくメッセージフローで理解する
DHCPv4では、クライアントがIPv4設定を取得するまでに、クライアント、サーバー、必要に応じてリレーが役割を分担します。
初回取得の代表的なフローは、
クライアント DHCPサーバー
| |
| ------ DHCPDISCOVER -----------> |
| <------- DHCPOFFER ------------- |
| ------ DHCPREQUEST ------------> |
| <------- DHCPACK --------------- |
| |です。
この4つを、
Discover
Offer
Request
Acknowledgeの頭文字から、
DORAと呼びます。
ただし、すべてのDHCP通信が常にDORAの4メッセージだけで構成されるわけではありません。
2. DORAは初期アドレス取得の基本フロー
DORAでは、それぞれのメッセージに役割があります。
| メッセージ | 主な役割 |
|---|---|
| DHCPDISCOVER | 利用可能なDHCPサーバーを探索する |
| DHCPOFFER | サーバーがアドレスや設定を提案する |
| DHCPREQUEST | クライアントが利用したいOFFERを示す |
| DHCPACK | サーバーが要求を受け入れ設定を確定する |
単純に順番だけ暗記するのではなく、
探索
↓
提案
↓
選択・要求
↓
確定として理解します。
3. DHCPDISCOVERはサーバーを探索するメッセージ
IPv4アドレスをDHCPで取得しようとするクライアントは、利用可能なDHCPサーバーを探すためDHCPDISCOVERを送信します。
初期取得ではクライアントはまだ利用可能なIPv4アドレスを持っていないため、代表的には、
送信元IP
0.0.0.0
宛先IP
255.255.255.255のようなブロードキャスト通信を使用します。
4. DHCPDISCOVERの目的はアドレス確定ではない
DHCPDISCOVERを送った時点では、
クライアントのIPv4アドレスが確定したわけではありません。
DHCPDISCOVERの役割は、
利用可能なDHCPサーバーを見つける
と
アドレスと設定の提案を求めることです。
5. DISCOVERを見ただけでDHCP取得成功とは判断しない
パケットキャプチャやデバッグなどで、
DHCPDISCOVERを確認できても、
DHCP取得成功とは判断できません。
まだ、
OFFER
REQUEST
ACKが必要です。
6. DHCPOFFERはサーバーからの提案
DHCPサーバーがクライアントへ提供可能なアドレスや設定パラメーターを持っている場合、DHCPOFFERを返します。
DHCPOFFERには代表的に、
- 提案するIPv4アドレス
- リースに関する情報
- Server Identifier
- その他の設定パラメーター
などが含まれます。
7. OFFERはリース確定ではない
DHCPOFFERを受信しても、
そのIPv4アドレスの利用が最終確定したわけではありません。
OFFERはあくまで、
サーバーからクライアントへの提案です。
その後クライアントがOFFERを選び、DHCPREQUESTを送信します。
8. 複数サーバーからOFFERを受け取ることがある
同じクライアントのDHCPDISCOVERを複数のDHCPサーバーが受信すると、複数のDHCPOFFERが返る可能性があります。
例えば、
サーバーA
192.168.10.101をOFFER
サーバーB
192.168.10.150をOFFERのような状態です。
クライアントは受信したOFFERの中から1つを選択します。
9. 最初に届いたOFFERを必ず選ぶとは限らない
複数の提案からどれを選ぶかはクライアント実装などに依存します。
そのため、
最初に届いたDHCPOFFER
=
必ず選択されるサーバーとは判断しません。
実際にどのサーバーが選択されたかは、後続するDHCPREQUESTなどから確認します。
10. DHCPREQUESTでクライアントが選択を示す
初回取得のDORAでは、クライアントは選択したDHCPOFFERに対してDHCPREQUESTを送ります。
このDHCPREQUESTには、
どのサーバーを選択したかを識別するためのServer Identifierなどが含まれます。
11. DHCPREQUESTは選択されたサーバーだけへの秘密のメッセージではない
初回取得のSELECTING状態では、クライアントはDHCPREQUESTをブロードキャストします。
これにより、
選択されたサーバーだけでなく、
提案したが選択されなかったサーバーも結果を知ることができます。
12. 選択されなかったサーバーはOFFERが採用されなかったと判断できる
例えば、
サーバーA → OFFER A
サーバーB → OFFER B
クライアント → REQUEST
Server Identifier = サーバーBなら、
サーバーB
→ 選択された
サーバーA
→ 自分の提案は選択されなかったと判断できます。
13. DHCPREQUESTは常にサーバー選択だけを意味するわけではない
DHCPREQUESTは初回DORAだけで使用されるメッセージではありません。
例えば、
- 初回OFFERの選択
- 再起動後の以前のアドレス確認
- リース更新
などでも使用されます。
したがって、
DHCPREQUESTを見た
=
必ず複数OFFERからサーバーを選択しているとは判断しません。
メッセージをクライアント状態や前後の通信と合わせて読みます。
14. 初回DORAではREQUESTをServer Identifierと合わせて読む
初回アドレス取得で、
DISCOVER
↓
複数OFFER
↓
REQUESTと進んでいる場合、
DHCPREQUEST内のServer Identifierは、
クライアントがどのDHCPサーバーを選択したかを判断する重要な情報になります。
15. DHCPACKは要求を受け入れたことを示す
選択されたDHCPサーバーがクライアントの要求を受け入れると、DHCPACKを返します。
DHCPACKには、
- 確定したIPv4アドレス
- リース情報
- 必要な設定パラメーター
などが含まれます。
16. ACKはOFFERより後の確定段階
DORAを役割で並べると、
DISCOVER
サーバー探索
OFFER
候補を提案
REQUEST
クライアントが要求
ACK
サーバーが要求を受け入れるとなります。
したがって、
OFFERと
ACKを同じ意味として扱ってはいけません。
17. DHCPACK後にクライアントは取得した設定を利用する
DHCPACKを受け入れたクライアントは、取得したIPv4設定を利用できる状態へ進みます。
代表的には、
IPv4アドレス
サブネットマスク
デフォルトゲートウェイ
DNSサーバー
リース情報などです。
実際にどのオプションが提供されるかはサーバー設定によって異なります。
18. ACKを見た後もクライアント側の状態確認は必要
サーバー側でDHCPACKが確認できても、
クライアントが必ず正常に設定を適用したことまで自動的に証明されるわけではありません。
トラブルシューティングでは、
ACKまで確認できたという情報から、
DHCPメッセージフローはかなり後段まで進んでいると判断します。
19. DHCPNAKは要求を受け入れられないことを示す
DHCPサーバーはクライアントが要求するアドレスを利用させるべきでない場合などにDHCPNAKを返すことがあります。
例えば、
クライアントが以前のネットワークで使っていたアドレスを要求
↓
現在のサブネットでは不適切といったシナリオです。
20. NAKをACKと混同しない
DHCPACKは要求を受け入れたことを示します。
DHCPNAKは要求したアドレスをそのまま利用できないことを示します。
したがって、
REQUEST
↓
NAKなら、正常なリース確定には進んでいません。
21. DHCPNAK後はそのアドレスを継続利用する前提にしない
DHCPNAKを受け取ったクライアントは、
要求したアドレスが有効であるという前提を維持できません。
必要に応じてアドレス取得処理をやり直します。
22. DHCPDECLINEはクライアントがアドレス競合等を検知したときに使う
DHCPDECLINEは、
サーバーから提案・割り当てられたアドレスを
クライアントが利用できないと判断したことをサーバーへ通知するメッセージです。
代表例は、
そのアドレスが既にネットワーク上で使用されていることを検知した場合です。
23. DECLINEはサーバーがクライアントを拒否するメッセージではない
名前が似ていますが、
DHCPDECLINEはクライアントからサーバーへ送ります。
一方、
DHCPNAKはサーバーからクライアントへ送ります。
方向と意味を区別します。
24. DHCPDECLINEとDHCPNAKを比較する
| メッセージ | 主な送信側 | 意味 |
|---|---|---|
| DHCPNAK | サーバー | クライアントのアドレス要求を受け入れない |
| DHCPDECLINE | クライアント | 提示されたアドレスを利用できないと通知 |
似た否定系メッセージでも責任が異なります。
25. DHCPRELEASEはリースを返却するメッセージ
クライアントが保持しているリースを不要と判断した場合、
DHCPRELEASEをサーバーへ送信できます。
役割は、
このリースをもう利用しないことをサーバーへ知らせることです。
26. RELEASEは新しいアドレスを探すメッセージではない
DHCPRELEASEは、
新しいDHCPサーバーを探索するためのメッセージではありません。
それはDHCPDISCOVERの役割です。
RELEASEは、
現在保持しているリースを手放すために使用されます。
27. DHCPRELEASEは通常既知のサーバーへ送る
クライアントはリースを提供したDHCPサーバーを認識しているため、DHCPRELEASEは通常そのサーバーへ送信します。
初回DHCPDISCOVERのような、
利用可能なサーバーをブロードキャストで探す目的とは異なります。
28. DHCPINFORMはアドレスを既に持つクライアントが追加情報を要求する
DHCPINFORMは、
クライアントが既にIPv4アドレスを持っている場合に、DHCPサーバーへ追加設定パラメーターを問い合わせるために使用できます。
例えば、
DNS等の追加パラメーターを取得したいシナリオです。
29. INFORMは新しいリースアドレスを取得するためのメッセージではない
DHCPINFORMを送るクライアントは、既に外部の方法などでIPv4アドレスを持っています。
したがって、
DHCPINFORM
=
新しいIPv4リースを要求ではありません。
30. INFORMへの応答ではアドレス割り当てそのものが目的ではない
DHCPINFORMに対してサーバーは設定パラメーターを返しますが、
新しいIPv4アドレスリースを提供することが目的ではありません。
アドレス割り当てと設定パラメーター取得を分けて理解します。
31. DHCPメッセージの方向を整理する
代表的な方向は、
| メッセージ | 代表的な方向 |
|---|---|
| DHCPDISCOVER | クライアント → サーバー |
| DHCPOFFER | サーバー → クライアント |
| DHCPREQUEST | クライアント → サーバー |
| DHCPACK | サーバー → クライアント |
| DHCPNAK | サーバー → クライアント |
| DHCPDECLINE | クライアント → サーバー |
| DHCPRELEASE | クライアント → サーバー |
| DHCPINFORM | クライアント → サーバー |
です。
方向を理解するとパケットキャプチャを読みやすくなります。
32. DHCPv4はUDPを使用する
DHCPv4はトランスポート層でUDPを使用します。
基本ポートは、
DHCPサーバー
UDP 67
DHCPクライアント
UDP 68です。
33. クライアントからサーバーへの基本ポート
クライアントからDHCPサーバーへ送る代表的なメッセージでは、
送信元ポート
UDP 68
宛先ポート
UDP 67として確認できます。
代表例は初回のDHCPDISCOVERです。
34. サーバーからクライアントへ直接配送する基本ポート
DHCPサーバーからクライアントへ直接配送される代表的な応答では、
送信元ポート
UDP 67
宛先ポート
UDP 68として確認できます。
代表例は、リレーを介さずクライアントへ配送されるDHCPOFFERやDHCPACKです。
一方、DHCPリレーを経由する場合、サーバーはリレーエージェントへ応答を返します。
DHCPサーバー
UDP 67
↓
DHCPリレーエージェント
UDP 67つまりサーバー → リレー区間では、
UDP 67 → UDP 67となります。
その後リレーエージェントがクライアントへDHCPメッセージを転送します。
したがって、
サーバーからのDHCP応答
=
常に宛先UDP 68とは判断しません。
35. ポート番号とメッセージ種別を混同しない
UDP 67/68は、
どのDHCPメッセージかを示す番号ではありません。
メッセージ種別はDHCPオプション内などで識別されます。
ポートはクライアント・サーバー・リレー間の通信エンドポイントを識別する情報です。
36. DHCPDISCOVERの代表的な初期通信をまとめる
初期取得のクライアントでは代表的に、
送信元IP 0.0.0.0
宛先IP 255.255.255.255
送信元UDP 68
宛先UDP 67
DHCPメッセージ DHCPDISCOVERとして確認できます。
37. サーバー応答は常に同じIP配送方式とは限らない
DHCPOFFERやDHCPACKは状況やクライアントのブロードキャストフラグ、リレーの有無などによって配送方法が変わることがあります。
したがって、
DHCPOFFERは必ずIPブロードキャストのように固定して暗記しません。
重要なのは、直接接続クライアントへの基本応答ではサーバーがUDP 67、クライアントがUDP 68を使用し、リレー経由ではサーバー → リレー区間がUDP 67 → 67となることです。
38. クライアントとサーバーが同一サブネットなら直接やり取りできる
DHCPクライアントとDHCPサーバーが同一IPサブネットに存在する場合、クライアントのブロードキャストをサーバーが直接受信できます。
クライアント
|
| DHCPDISCOVERブロードキャスト
v
同一サブネット
|
DHCPサーバーこの場合、DHCPリレーは必須ではありません。
39. 直接接続クライアントではgiaddrは0
DHCPリレーを経由していない直接接続クライアントのDHCPメッセージでは、
giaddr = 0.0.0.0です。
この情報は、
リレー経由か
直接接続クライアントかを判断する重要な材料になります。
40. クライアントとサーバーが別サブネットならブロードキャスト境界を考える
通常ルーターは、クライアントが送信したローカルブロードキャストをそのまま別IPサブネットへ転送しません。
そのため、
クライアントサブネット
192.168.10.0/24
DHCPサーバー
192.168.100.10のように別サブネットへサーバーが存在する場合、リレーが必要になります。
41. DHCPリレーはクライアントブロードキャストをサーバーへ届ける
DHCPリレーエージェントはクライアント側サブネットでブロードキャストされたDHCPメッセージを受信し、リモートDHCPサーバーへ転送します。
概念的には、
クライアント
|
| ブロードキャスト
v
クライアント側L3インターフェース
|
| DHCPリレー
v
リモートDHCPサーバーとなります。
42. Cisco IOSではip helper-addressがDHCPリレーの代表的な仕組み
Cisco IOSおよびIOS XEでは、
ip helper-addressがDHCPリレーを実現する代表的なインターフェース設定です。
役割は、
クライアント側で受信したDHCPブロードキャスト
↓
指定したDHCPサーバーへリレーです。
具体的なIOS設定や確認コマンドは後で扱います。
43. helper-addressはクライアント側L3インターフェース側で考える
DHCPリレーは、
クライアントがブロードキャストを送信するサブネットを受けるL3インターフェースで動作する必要があります。
概念例:
クライアントLAN
192.168.10.0/24
|
v
ルーターインターフェース
192.168.10.1
DHCPリレー
|
v
DHCPサーバー
192.168.100.10です。
44. リレーは単なるブロードキャストフラッディングではない
DHCPリレーは、
クライアントブロードキャストをそのまま全ネットワークへフラッディングするものではありません。
リレーエージェントはDHCPメッセージを処理し、リモートサーバーへ転送します。
45. リレーエージェントはgiaddrを設定する
リレーされたDHCPメッセージでは、リレーエージェントが、
giaddr
ゲートウェイIPアドレスフィールドへクライアント側サブネットを識別するためのアドレスを設定します。
Cisco IOSおよびIOS XEの一般的なリレー動作では、クライアントからDHCPメッセージを受信したインターフェースのアドレスがこの判断に使用されます。
46. giaddrはDHCPサーバーにクライアントサブネットを伝える
リモートDHCPサーバーから見ると、クライアントは別サブネットにいます。
サーバーは、
giaddrを使って、
どのクライアントサブネット向けのアドレスを割り当てるべきかを判断できます。
47. リレー経由クライアントではgiaddrがプール選択の重要情報
例えば、
giaddr
192.168.10.1なら、サーバーは、
192.168.10.1が属するサブネットに対応するDHCPプールを探します。
例えば、
192.168.10.0/24のプールです。
48. giaddrはクライアントへ割り当てるアドレスそのものではない
例えば、
giaddr = 192.168.10.1だからといって、
クライアントアドレス = 192.168.10.1ではありません。
giaddrはリレーとクライアントサブネットを識別するためのゲートウェイアドレス情報です。
49. リレーされたDISCOVERではgiaddrは0ではない
基本的な比較は、
直接接続クライアント
giaddr = 0
リレー経由クライアント
giaddr ≠ 0です。
これによりサーバー側パケット情報からリレーの有無を判断できます。
50. 直接接続クライアントではプール選択方法が異なる
Cisco IOS XE DHCPサーバーでクライアントが直接接続されている場合、
giaddr = 0です。
その場合サーバーは、
DHCPDISCOVERを受信したインターフェースに設定されたサブネットと一致するDHCPプールを探します。
51. 直接接続クライアントのプール選択をgiaddrだけで説明しない
次の説明は誤りです。
DHCPサーバーは常にgiaddrだけを見てプールを選択する直接接続クライアントではgiaddr = 0だからです。
Cisco IOS XEサーバーでは、
直接接続クライアント
→ 受信インターフェースのサブネット
リレー経由クライアント
→ giaddrのサブネットとして区別します。
52. 直接接続クライアントの例
サーバーインターフェース:
GigabitEthernet0/0
192.168.20.1/24クライアントのDHCPDISCOVER:
giaddr = 0.0.0.0サーバーに、
192.168.20.0/24に対応するDHCPプールがあれば、そのプールが候補になります。
53. リレー経由クライアントの例
トポロジ:
クライアントサブネット
192.168.30.0/24
リレーインターフェース
192.168.30.1
DHCPサーバー
192.168.100.10リレー後のメッセージで、
giaddr = 192.168.30.1なら、サーバーは、
192.168.30.0/24に対応するプールを選択します。
54. サーバー自身のサブネットではなくクライアントサブネットが重要
リレー環境では、DHCPサーバー自身が、
192.168.100.0/24に存在していても、
クライアントが、
192.168.30.0/24に存在するなら、
クライアントへ割り当てるアドレスはクライアント側サブネットに対応するプールから選ぶ必要があります。
その判断材料がgiaddrです。
55. サーバーへの到着インターフェースだけでリレー経由クライアントのプールを選ばない
リレー環境では、
DHCPサーバーがパケットを受信したサーバー側インターフェースのサブネットだけを基準にすると、クライアントサブネットを正しく判別できません。
そのためサーバーはリレーが設定したgiaddrを利用します。
56. 直接接続とリレーを比較する
| 状態 | giaddr | Cisco IOS XEサーバーの主なプール判断情報 |
|---|---|---|
| 直接接続クライアント | 0.0.0.0 | DHCPDISCOVERを受信したインターフェースのサブネット |
| リレー経由クライアント | 0以外 | giaddrが属するサブネット |
この違いはDHCPv4の重要な判断ポイントです。
57. Option 82はここでは深掘りしない
DHCPリレーでは、リレーエージェント情報オプション(Relay Agent Information Option)、いわゆるOption 82を利用する構成もあります。
ただしここでは、
giaddr
と
直接接続クライアントとリレー経由クライアント
と
基本的なプール選択に集中します。
Option 82の詳細動作は扱いません。
58. DHCPメッセージを「どこまで進んだか」で読む
トラブルシューティングではメッセージの存在を、
DHCP処理がどの段階まで進んだかという証拠として利用できます。
例えば、
DISCOVERあり
OFFERなしと、
OFFERあり
REQUESTなしでは、確認すべき段階が異なります。
59. DISCOVERすら確認できない場合
期待する確認地点でDHCPDISCOVERが見えない場合、
DHCP処理の最初の段階より前
または
そこまでメッセージが届いていない可能性を考えます。
ただしこの時点だけで具体的根本原因を決めません。
60. DISCOVERあり・OFFERなし
確認情報が、
DHCPDISCOVER
確認できる
DHCPOFFER
確認できないなら、
クライアントからの探索メッセージまでは進んだと判断できます。
次に見る範囲は、
サーバーとリレーへの到達
サーバー側処理
プール等の応答条件です。
具体的な修正は後のトラブルシューティングで扱います。
61. OFFERありならサーバーは少なくとも応答段階まで進んでいる
DISCOVER
↓
OFFERまで確認できたなら、
少なくとも、
クライアントのDISCOVERをサーバー側が処理
↓
サーバーがOFFERを生成する段階まで進んでいます。
62. OFFERあり・REQUESTなし
確認情報が、
DISCOVER
OFFER
確認済み
REQUEST
確認できないなら、
DHCPサーバーがOFFERを生成するところまでは進んでいます。
その次は、
クライアントがOFFERを受信・選択できたかという段階を確認します。
63. REQUESTあり・ACKもNAKもない
REQUEST
確認済み
ACK/NAK
確認できないなら、
クライアント側は要求を送る段階まで進んでいます。
次の確認範囲は、
サーバーによるREQUEST処理
と
サーバーからの応答です。
64. REQUEST後にNAKがある場合は「応答なし」ではない
REQUEST
↓
NAKの場合、サーバーは応答しています。
問題は、
サーバーから返事がないことではなく、
クライアントの要求が受け入れられていないことです。
65. ACKまで確認できた場合
DISCOVER
OFFER
REQUEST
ACKが一連で確認できれば、
DHCPサーバー側メッセージフローはリース確定段階まで進んでいます。
クライアントが依然として期待アドレスを持たない場合は、
ACK後のクライアント側適用など、より後段を確認する必要があります。
66. メッセージ確認有無と根本原因を分ける
例えば、
DISCOVERあり
OFFERなしだからといって、
DHCPサーバー故障確定とは判断しません。
原因候補には、
- リレー
- ネットワーク経路
- サーバーサービス
- プール条件
- その他サーバー側条件
などがあります。
この段階では、
どこまで処理が進んだかを判断します。
67. メッセージの「送信」と「受信」を区別する
クライアント側で、
DISCOVER送信を確認しても、
サーバー側で、
DISCOVER受信できているとは限りません。
同様に、
サーバーがOFFER送信しても、
クライアントがOFFER受信したことまで自動的には証明されません。
68. 同じメッセージでも確認地点によって意味が変わる
例えば、
クライアント側キャプチャ
DISCOVER確認と、
サーバー側キャプチャ
DISCOVER確認では得られる情報が違います。
前者は、
クライアントがDISCOVERを送った証拠です。
後者は、
DISCOVERがサーバーまで到達した証拠になります。
69. リレー環境では確認地点を3つに分ける
リレー環境では、
クライアント
↓
リレー
↓
サーバーという3つの役割があります。
そのため、
クライアントがDISCOVER送信
リレーがDISCOVER受信
サーバーがリレー経由のDISCOVER受信を分けて考えます。
70. giaddrが入っているかはリレー処理の重要な確認情報
サーバー側でリレー経由のDHCPDISCOVERを確認したとき、
giaddrが期待するクライアント側サブネットのアドレスになっているかを確認できます。
これは、
リレーがどのクライアントサブネットからメッセージを転送したかを判断する材料です。
71. giaddrが期待サブネットと異なる場合
例えばクライアントが、
192.168.30.0/24にいるのに、サーバーが受信したメッセージのgiaddrが別サブネットを示している場合、
サーバーのプール選択へ影響する可能性があります。
このページでは、
giaddrとクライアントサブネットが整合しているかまで判断します。
具体的なリレー設定修正は後で扱います。
72. DHCP処理を一つのフローとして読む
初回取得では、
クライアントがサーバーを探索
↓
サーバーが候補を提示
↓
クライアントが候補を選択
↓
サーバーが要求を確定という責任の受け渡しがあります。
トラブルシューティングでは、
最後に正常確認できたメッセージと、
次に期待するメッセージを組み合わせます。
73. 試験での判断例1:DORA順序
正しい初期取得順序は、
DHCPDISCOVER
↓
DHCPOFFER
↓
DHCPREQUEST
↓
DHCPACKです。
74. 試験での判断例2:サーバー探索
クライアントが利用可能なDHCPサーバーを探すために送るメッセージは、
DHCPDISCOVERです。
75. 試験での判断例3:サーバーからの提案
サーバーがクライアントへアドレスや設定を提案するメッセージは、
DHCPOFFERです。
OFFER時点ではリース確定ではありません。
76. 試験での判断例4:OFFER選択
複数サーバーからOFFERを受けたクライアントが、選択したサーバーを示す初回取得メッセージは、
DHCPREQUESTです。
Server Identifierも重要な確認情報になります。
77. 試験での判断例5:リース確定
サーバーがクライアントの要求を受け入れ、アドレスと設定を確定するメッセージは、
DHCPACKです。
78. 試験での判断例6:UDPポート
DHCPv4の基本ポートは、
サーバー側UDP 67
クライアント側UDP 68です。
クライアントからサーバー方向では代表的に、
68 → 67として読みます。
リレー経由ではサーバー → リレー区間が、
67 → 67になる点も区別します。
79. 試験での判断例7:別サブネットのサーバー
クライアントとDHCPサーバーが別サブネットにいる場合、
DHCPリレーがクライアントブロードキャストをリモートサーバーへ転送します。
Cisco IOSおよびIOS XEではip helper-addressが代表的な仕組みです。
80. 試験での判断例8:リレー経由クライアントのプール
サーバーが受け取ったDHCPDISCOVERで、
giaddr = 10.10.20.1なら、
サーバーは、
10.10.20.1が属するサブネットに対応するプールを選択します。
81. 試験での判断例9:直接接続クライアントのプール
Cisco IOS XE DHCPサーバーへクライアントが直接接続し、
giaddr = 0なら、
サーバーは、
DHCPDISCOVERを受信したインターフェースのサブネットに対応するプールを選択します。
82. 試験での判断例10:NAK
クライアントのアドレス要求をサーバーが受け入れられない場合のメッセージは、
DHCPNAKです。
83. 試験での判断例11:アドレス重複検知
クライアントが提示されたアドレスが既に使用されていることを検知した場合に送るメッセージは、
DHCPDECLINEです。
84. 試験での判断例12:リース返却
クライアントが保持リースをサーバーへ返却するメッセージは、
DHCPRELEASEです。
85. 試験での判断例13:追加設定パラメーター
既にアドレスを持つクライアントが追加設定パラメーターを要求するメッセージは、
DHCPINFORMです。
86. 試験での判断例14:DISCOVER・REQUEST・RELEASEの違い
DHCPDISCOVER
→ サーバー探索
DHCPREQUEST
→ アドレスやOFFERなどを要求
DHCPRELEASE
→ 保持リースを返却です。
役割を混同しません。
87. 試験での判断例15:DORAがOFFERで止まる
確認結果:
DISCOVER
確認
OFFER
確認
REQUEST
なしなら、
サーバーがOFFERを返す段階までは成功しています。
次に見るのはクライアントがOFFERを受信・選択してREQUESTへ進む段階です。
88. 試験での判断例16:複数OFFERから選ばれたサーバー
サーバーA → OFFER
サーバーB → OFFER
REQUEST
Server Identifier = サーバーBなら、
クライアントが選択したサーバー
=
サーバーBと判断できます。
89. 試験での判断例17:直接接続クライアント
サーバーとクライアントが同一サブネットで、
giaddr = 0なら、
直接接続クライアントとして受信インターフェースサブネットをプール選択の判断材料にします。
90. 試験での判断例18:リレーの役割
クライアントブロードキャストを別サブネット上のDHCPサーバーへ届ける役割は、
DHCPリレーエージェントです。
Cisco IOSおよびIOS XEではip helper-addressが代表的な実現方法です。
91. 試験での判断例19:67と68
UDP 67
→ DHCPサーバー
UDP 68
→ DHCPクライアントです。
リレーエージェントもサーバー側ではUDP 67を使用するため、リレー環境ではサーバー → リレーが67 → 67になることがあります。
92. 試験での判断例20:ACKとNAK
DHCPACK
→ 要求を受け入れる
DHCPNAK
→ 要求したアドレスをそのまま利用させられないとして区別します。
93. 試験での判断例21:DECLINEとRELEASE
DHCPDECLINE
→ 提示アドレスを利用できないとクライアントが通知
DHCPRELEASE
→ 保持リースをクライアントが返却です。
どちらもクライアント → サーバーですが意味は異なります。
94. 試験での判断例22:INFORM
クライアントが既にIPv4アドレスを持っており、追加設定パラメーターだけをDHCPサーバーから取得したい場合は、
DHCPINFORMです。
95. 試験での判断例23:OFFERの意味
DHCPOFFERを受信した状態は、
サーバーから提案を受けたことを示します。
リースが最終確定したことを示すわけではありません。
96. 試験での判断例24:giaddrからサブネットを判断
サーバーが受信したメッセージに、
giaddr
172.16.40.1が設定されている場合、
172.16.40.1が属するクライアントサブネットを基準として対応プールを判断します。
サーバー自身のLANだけを見ません。
97. 試験での判断例25:停止段階
確認結果:
DISCOVER
OFFER
REQUEST
確認
ACK/NAK
なしなら、
クライアントがREQUESTを送る段階までは進んだと判断できます。
次に見るのはサーバーのREQUEST処理と応答段階です。
98. メッセージ停止段階の比較表
| 確認結果 | 確認できた段階 | 次に注目する段階 |
|---|---|---|
| DISCOVERなし | 初期探索前後 | クライアントから最初のメッセージ |
| DISCOVERあり・OFFERなし | クライアント探索まで | サーバーまたはリレー側の応答 |
| OFFERあり・REQUESTなし | サーバー提案まで | クライアントのOFFER受信・選択 |
| REQUESTあり・ACK・NAKなし | クライアント要求まで | サーバーのREQUEST処理 |
| REQUEST → NAK | サーバー応答あり | 要求アドレスが受け入れられない理由 |
| ACKあり | リース確定段階まで | クライアント側適用・後続状態 |
この表だけで根本原因を確定するのではなく、処理段階を絞ります。
99. 直接接続クライアントとリレー経由クライアントの比較
| 項目 | 直接接続クライアント | リレー経由クライアント |
|---|---|---|
| サーバーとの位置 | 同一サブネット | 通常は別サブネット |
| リレー | 不要 | 必要 |
| giaddr | 0 | 0以外 |
| クライアントブロードキャスト | サーバーが直接受信 | リレーが受信してサーバーへ転送 |
| IOS XEサーバーのプール判断 | 受信インターフェースサブネット | giaddrのサブネット |
この違いを理解するとDHCPサーバー側のパケット情報を読みやすくなります。
100. DHCPメッセージ比較
| メッセージ | 主な方向 | 役割 |
|---|---|---|
| DHCPDISCOVER | クライアント → サーバー | サーバー探索 |
| DHCPOFFER | サーバー → クライアント | アドレスやパラメーター提案 |
| DHCPREQUEST | クライアント → サーバー | OFFER選択・アドレス要求等 |
| DHCPACK | サーバー → クライアント | 要求受理・設定確定 |
| DHCPNAK | サーバー → クライアント | アドレス要求を拒否 |
| DHCPDECLINE | クライアント → サーバー | アドレスを利用できないと通知 |
| DHCPRELEASE | クライアント → サーバー | リース返却 |
| DHCPINFORM | クライアント → サーバー | アドレス以外のパラメーター要求 |
101. DHCPv4処理を判断する基本フロー
DHCPDISCOVERは確認できるか
├─ なし
│ └─ クライアントから最初のメッセージが出る段階を確認
│
└─ あり
↓
DHCPOFFERは確認できるか
├─ なし
│ └─ リレーまたはサーバーの応答段階までを確認
│
└─ あり
↓
DHCPREQUESTは確認できるか
├─ なし
│ └─ クライアントのOFFER受信・選択段階を確認
│
└─ あり
↓
DHCPACKまたはDHCPNAKは確認できるか
├─ なし
│ └─ サーバーのREQUEST処理・応答段階を確認
│
├─ NAK
│ └─ 要求アドレスはそのまま利用できない
│
└─ ACK
↓
リース確定段階まで進んでいる102. リレー環境を判断する基本フロー
クライアントとサーバーは同一サブネットか
├─ あり
│ ↓
│ 直接接続クライアント
│ giaddr = 0
│ 受信インターフェースサブネットでプール判断
│
└─ なし
↓
DHCPリレーが必要
↓
クライアント側L3インターフェースでブロードキャストを受信
↓
リレーがgiaddrを設定
↓
リモートDHCPサーバーへ転送
↓
サーバーはgiaddrのサブネットでプール判断103. DORAだけで終わらせない
試験では、
DORAという4文字だけを覚えるのではなく、
どのメッセージを誰が送るかそのメッセージは何を意味するかどこまで処理が進んだかを判断できる必要があります。
104. OFFERとACKの違いを確実にする
特に混同しやすいのが、
DHCPOFFERと、
DHCPACKです。
OFFER
→ 提案
ACK
→ 要求受理・確定として区別します。
105. NAKとDECLINEの方向を確実にする
DHCPNAK
サーバー → クライアント
DHCPDECLINE
クライアント → サーバーです。
NAK
→ サーバーが要求を受け入れない
DECLINE
→ クライアントが提示アドレスを利用できないと通知という責任の違いがあります。
106. DISCOVERとINFORMも目的が違う
DHCPDISCOVER
→ アドレスを取得するためサーバーを探索
DHCPINFORM
→ アドレスを既に持つクライアントが追加パラメーターを要求です。
INFORMをDHCPDISCOVERの代わりに使うわけではありません。
107. リレーとサーバーを同じ役割として扱わない
DHCPリレーは、
アドレスリースを決定するサーバーではありません。
基本的な役割は、
クライアントとリモートDHCPサーバーの間でDHCPメッセージを中継することです。
アドレスを提供する役割はDHCPサーバーにあります。
108. giaddrの役割を一文で説明する
giaddrは、
リレー経由のDHCPメッセージで
DHCPサーバーがクライアント側サブネットを識別するための
ゲートウェイIPアドレス情報として理解します。
109. 直接接続クライアントでは受信インターフェースが重要
giaddr = 0の直接接続クライアントに対してCisco IOS XE DHCPサーバーは、
DHCPDISCOVERをどのインターフェースで受信したかを利用して対応するサブネットやプールを判断します。
したがって、
giaddrが0
→ プールを選択できないではありません。
110. ここではIOSコマンド暗記へ進みすぎない
この段階で重要なのは、
クライアント
サーバー
リレー
DORA
その他メッセージ
UDP 67/68
giaddr
直接接続とリレー経由のプール選択の関係です。
具体的な、
DHCPクライアント設定
DHCPプール設定
`show`系コマンド
`debug`系コマンド
`release`/`renew`系コマンドは次の段階で扱います。
111. 総合的な根本原因修正までは進まない
ここでは、
DISCOVERあり
OFFERなしなどのメッセージ情報から、
どの段階で処理が止まっているかを判断します。
具体的に、
プールを修正する
ヘルパーアドレスを修正する
サービスを再有効化する
バインディングや競合を修正するといった総合トラブルシューティングは後で扱います。
112. 最終的に判断できるようにすること
次の対応を迷わず判断できるようにします。
DISCOVER
→ クライアントがサーバーを探索OFFER
→ サーバーがアドレスやパラメーターを提案REQUEST
→ クライアントがアドレスやOFFERを要求ACK
→ サーバーが要求を受け入れるNAK
→ サーバーが要求アドレスを受け入れないDECLINE
→ クライアントが提示アドレスを利用できないと通知RELEASE
→ クライアントがリースを返却INFORM
→ アドレスを持つクライアントが追加パラメーターを要求113. 直接接続とリレー経由の判断も確実にする
giaddr = 0
と
サーバーとクライアントが直接接続
→ 受信インターフェースサブネットを基準giaddr ≠ 0
と
リレー経由
→ giaddrのサブネットを基準としてCisco IOS XE DHCPサーバーのプール選択を判断します。
114. メッセージ停止段階も確実にする
DISCOVERなし
→ 最初のクライアント送信段階以前を確認DISCOVERあり・OFFERなし
→ サーバーまたはリレーの応答段階OFFERあり・REQUESTなし
→ クライアントのOFFER受信・選択段階REQUESTあり・ACK・NAKなし
→ サーバーのREQUEST処理・応答段階ACKあり
→ リース確定段階まで進行と読みます。
まとめ
DHCPv4の初回アドレス取得では、
DHCPDISCOVER
↓
DHCPOFFER
↓
DHCPREQUEST
↓
DHCPACKというDORAが基本です。
ただしDHCPには、
DHCPNAK
DHCPDECLINE
DHCPRELEASE
DHCPINFORMもあり、それぞれ送信方向と役割が異なります。
DHCPv4の基本ポートは、
サーバー
UDP 67
クライアント
UDP 68です。
直接接続クライアントへのサーバー応答では代表的に、
67 → 68となります。
一方、リレー経由ではサーバー → リレーエージェント区間が、
67 → 67となり、リレーエージェントがクライアントへメッセージを転送します。
クライアントとサーバーが別サブネットならDHCPリレーを使用し、Cisco IOSおよびIOS XEではip helper-addressが代表的なリレーの仕組みです。
リレー経由クライアントでは、
giaddr ≠ 0
→ giaddrが属するサブネットからプールを判断し、直接接続クライアントでは、
giaddr = 0
→ 受信インターフェースに設定されたサブネットからプールを判断します。
トラブルシューティングでは単にDORAを暗記するのではなく、
最後に確認できたメッセージ
↓
次に期待されるメッセージ
↓
DHCP処理がどの段階まで進んだかを判断することが重要です。
理解確認
このページの内容を14問で確認します。
理解確認14問へ →