1.理論
名前が示すとおり、動的ホスト構成プロトコル(DHCP)は、ネットワークデバイス設定を動的に構成するために使用されます。
DHCPプロトコルの動作は、動的構成を必要とするクライアントがDISCOVERY要求を送信するという事実から始まります。 次のようになります。
Frame 34 (342 bytes on wire, 342 bytes captured)
Ethernet II, Src: 02:00:4c:4f:4f:50 (02:00:4c:4f:4f:50), Dst: Broadcast (ff:ff:ff:ff:ff:ff)
#-
Internet Protocol, Src: 0.0.0.0 (0.0.0.0), Dst: 255.255.255.255 (255.255.255.255)
#IP-
User Datagram Protocol, Src Port: bootpc (68), Dst Port: bootps (67)
#UDP- 68 67
Client IP address: 0.0.0.0 (0.0.0.0)
# , , , ip-
Your (client) IP address: 0.0.0.0 (0.0.0.0)
# , DHCP-
Next server IP address: 0.0.0.0 (0.0.0.0)
# DHCP-
Relay agent IP address: 0.0.0.0 (0.0.0.0)
# Relay-, ( )
Client MAC address: 02:00:4c:4f:4f:50 (02:00:4c:4f:4f:50)
#-
次はオプションフィールドです。オプション番号は0〜255の範囲で指定でき、各オプションには独自の目的があります。
Option: (t=50,l=4) Requested IP Address = 192.168.13.2
# 50 4 , IP-,
Option: (t=12,l=8) Host Name = "MainHost"
# 12 8 , ,
Option: (t=55,l=11) Parameter Request List
# 55, , 11 ,
![](https://habrastorage.org/getpro/habr/post_images/7ef/7ff/2ff/7ef7ff2ff811a5cac217bd7eddcc939b.png)
応答として、サーバーはOFFER句を送信します。OFFER句は、クライアントに割り当てるアドレスを示し、オプションに適切な値を入力します。
![](https://habrastorage.org/getpro/habr/post_images/997/c42/c58/997c42c58a5d86ab6f8dcad72dc5637d.png)
クライアントは、複数のDHCPサーバー(複数ある場合)から複数のOFFERオファーを受け取ることができ、どのサーバーを選択するか、クライアントが選択します。 通常、クライアントは最初にオファーを受け取ったサーバーを選択します。
クライアントは、構成を取得するサーバーを自分で決定した後、 REQUEST要求を送信します。 要求はすべてのDHCPサーバーが受信できるようにブロードキャストされ、クライアントが選択したサーバーのアドレスは特別なオプションで示されます。
Option: (t=54,l=4) DHCP Server Identifier = 192.168.13.1
このようにして、クライアントは、ブロードキャストドメイン内のすべてのサーバーに、どちらを優先するかを伝えます。
次のステップは、サーバー側からのリクエスト( ACKメッセージ)を確認することです。 サーバーも確認をブロードキャストしますが、メッセージの本文でクライアントのMACアドレスを明示的に示します。
Client MAC address: 02:00:4c:4f:4f:50 (02:00:4c:4f:4f:50)
アドレスを割り当てるとき、クライアントとサーバーの両方がその一意性を検証します。 アドレス192.168.13.2で始まるサーバーにアドレスプールが構成されているとします。 最初のプールアドレスは、ネットワークユーザーのいずれかによって手動で割り当てられます。 DHCPを介してこのようなアドレスを割り当てると、競合が発生するため、競合を解き放つために、次のメカニズムが存在します。
![](https://habrastorage.org/getpro/habr/post_images/130/f7e/f58/130f7ef582eb032ad73209d8fde78567.png)
DISCOVERYメッセージを受信した後(1行目)、サーバーはプールから最初のアドレス(この場合は192.168.13.2)を選択し、ARP要求を送信します(2行目)
このようなアドレスを持つコンピューターがネットワーク上に存在するため、サーバーは応答を受け取ります(3行目)。
アドレス192.168.13.2のノードがネットワークにあることを確認するために、サーバーはこのアドレスにエコー要求を送信し(行4)、応答を受信します(行5)。
この場合、サーバーはプールから次の空きアドレス(この場合は192.168.13.3)を取得し、ARP要求を送信します(6行目)
応答を待たずに(ほぼ15秒が経過)、サーバーはアドレスが空いていると見なし、REQUESTメッセージでクライアントに提供します(行7)。
クライアントは、アドレスの受信を確認し(8行目)、サーバーからの確認を待って(9行目)、発行されたアドレスがビジーかどうかもチェックします。
これは、クライアントがARP要求を送信することで行われます(10〜12行目)。要求に対する応答が到着しなかった場合、クライアントは受信したアドレスをインターフェイスに割り当てます。
2. Ciscoルーターでの基本セットアップ
ルーター上に単一のアドレスプールが構成され、サーバーがクライアントと同じブロードキャストドメインにある場合の最も単純なケースを考えます。
! , , 192.168.13.1 192.168.13.10...192.168.13.15
ip dhcp excluded-address 192.168.13.1
ip dhcp excluded-address 192.168.13.10 192.168.13.15
! lan_pool1
ip dhcp pool lan_pool1
! ,
network 192.168.13.0/24
! -
ip default-router 192.168.13.1
! DNS-
dns-server 192.168.13.10 192.168.13.11
!
domain-name example.ua
! 5 (- 1 )
lease 5
この構成では、サーバーは、構成されたプールと同じネットワーク上にあるアドレスを持つインターフェイスを介して要求が送信されたクライアントにのみアドレスを発行します。
これですべてです。ご関心をお寄せいただきありがとうございます:)。 将来的には、DHCP-Relayの動作といくつかの特定のオプションをより詳細に説明する予定です。