In diesem Artikel möchte ich die WIKI Theorie mit eigenen Beobachtungen ergänzen.
- Wichtige Hinweise findet man auch bei Microsoft.
- Das passende RFC zum Thema DHCP ist hier.
- Das Thema REBIND und RENEW kann hier separat nachgelesen werden.
- Hier sind einige Wireshark Traces.
Initiale Adressvergabe der IP Adresse in 4 Schritten (4 Datenpaketen)
Im Trace kann man 4 Pakete / 4 Schritte sehen.
Schritt 1
Wenn ein Client erstmals eine IP-Adresse benötigt, schickt er eine DHCPDISCOVER-Nachricht (mit seiner MAC-Adresse) als Netzwerk-Broadcast an die verfügbaren DHCP-Server (es kann durchaus mehrere davon im gleichen Subnetz geben). Dieser Broadcast hat als Absender-IP-Adresse 0.0.0.0 und als Zieladresse 255.255.255.255, da der Absender noch keine IP-Adresse besitzt und seine Anfrage „an alle“ richtet. Dabei ist der UDP-Quellport 68 und der UDP-Zielport 67.
0.0.0.0 -> 255.255.255.255 DHCP Discover
Was fiel auf ?
Wenn der Client bereits eine IP Adresse hatte und selbst wenn diese mit ipconfig / release entfernt wurde und der PC sogar neu gestartet wurde, teilt der Client bereits in diesem Schritt seine Wunsch-IP erneut mit. Es ist unklar, wo sich der Client seine bisherige IP merkt. In der Registry findet sich keine Spur.
Siehe Option „Requested IP Address 10.136.176.2“
Schritt 2.
Die Kommunikation des Clients erfolgte über einen im Switch befindlichen DHCP Relay 10.136.176.1. Anstelle der Servers sieht man daher den Relay 10.136.176.1 antworten.
Der / die DHCP-Server antworten mit DHCPOFFER und machen Vorschläge für eine IP-Adresse. Das geschieht ebenfalls mit einem Broadcast an die Adresse 255.255.255.255 mit UDP-Quellport 67 und UDP-Zielport 68.
10.136.176.1 -> 255.255.255.255 DHCP Offer
In diesem Beispiel wurde die Leasezeit auf 1 Tag und 1 Minute konfiguriert.
Renewal Time Value : Anzahl der Sekunden bis zum nächsten RENEW Versuch des Clients. Diese Zeit beträgt standardmäßig 50% der Lease Time, kann im Scope angepasst werden oder per User Class am DHCP Server festgelegt werden. Auch per NetShell kann diese Zeit festgelegt werden.
RFC: This option specifies the time interval from address assignment until the client transitions to the RENEWING state. The value is in units of seconds, and is specified as a 32-bit unsigned integer.
Rebinding Time Value : Anzahl der Sekunden before der Client den Rebindung Status erreicht, wenn er bisher seine Adresse nicht per Renew erneuern konnte. Der Wert liegt typisch 87.5 Prozent der vollen Lease Time. Diese Zeit kann im Scope angepasst werden oder per User Class am DHCP Server festgelegt werden. Auch per NetShell kann diese Zeit festgelegt werden.
RFC: This option specifies the time interval from address assignment until the client transitions to the REBINDING state. The value is in units of seconds, and is specified as a 32-bit unsigned integer.
IP Address Lease Time: Die Leasezeit
Schritt 3.
Der Client darf nun unter den eingetroffenen Angeboten (DHCP-Offers) wählen. Wenn er sich für eines entschieden hat (z. B. wegen längster Lease-Zeit oder wegen Ablehnung eines speziellen, evtl. falsch konfigurierten DHCP-Servers, oder einfach für die erste Antwort), kontaktiert er per Broadcast und einem im Paket enthaltenen Serveridentifier den entsprechenden Server mit der Nachricht DHCPREQUEST. Alle eventuellen weiteren DHCP-Server werten das als Absage für ihre Angebote.
Schritt 4.
Der vom Client ausgewählte Server bestätigt in einer DHCPACK-Nachricht (DHCP-Acknowledged) die IP-Adresse mit den weiteren relevanten Daten, oder er zieht sein Angebot zurück (DHCPNAK, siehe auch sonstiges).
Was fiel auf ?
In der Zeile DHCP Server Identifier = 10.136.20.240 teilt der DHCP Server seine eigene Adresse mit. Das heißt, dass der DHCP Helper die Broadcasts des Clients aus den Schritten 1-4 an den DHCP Server schickt, sobald der Client aber eine eindeutige IP besitzt klärt er weitere Schritte immer DIREKT mit dem DHCP Server selbst.
Vorsicht !
Wenn man einen Loadbalancer mit ins Spiel bringt, um vielleicht zwei DHCP Servern (einer aktiv, der andere passiv) aus Redundanzgründen zu betreiben, sollte man diese Tatsache nicht vergessen. Es könnte sein, das man zwar -wie auch immer- die Clients durch den Loadbalancer am anderen DHCP Server erwartet, diese jedoch immer noch dem „alten“ DHCP Server die Treue halten und das Chaos ist vorprogrammiert.
IP-Adresse erneuern / DHCP Lease Renewal und Rebinding Prozess
Nachdem der Client seine Adresse erhalten hatte, kommt er in den BOUND State. Der Client ist dann in seinem regulärem Mode mit einer gültigen IP Adresse und anderen Konfigurationsparametern, die er vom DHCP Server erhalten hatte.
Solange sich der Client im BOUND State befindet passiert DHCP-seitig nicht viel. Der DHCP Client wacht auf, wenn es an der Zeit ist den Lease zu erneuern. Diese RENEWAL Prozedur sorgt für wiederholtes Nutzen der IP Adresse und verfügt über ihre eigene Struktur.
1. Renewal Timer (T1) läuft ab
Der renewal Timer T1 beträgt üblicherweise 50% der Lease Dauer. Nachdem er abläuft wechselt der Client vom BOUND Status in den RENEWING Status.
Wichtig : Der Client darf die Renewal Prozedur bereits vor dem Ablauf des T1 Timers starten, wenn er so wünscht.
2. Der Client sendet eine DHCPREQUEST Renewal Message
Der Client erzeugt eine DHCPREQUEST Nachricht, die ihn und seinen Lease identifiziert. Diese Nachricht befördert der DIREKT zu „seinem“ DHCP Server als UNICAST.
Wichtig : Beachte, dass diese DHCPREQUEST Nachricht von einem DHCPREQUEST, der für die initiale Adressvergabe genutzt wird, abweicht. Dort wird ein BROADCAST genutzt. Der Client darf sich eine spezielle LEASE Time wünschen, aber letzten Endes entscheidet der DHCP Server.
Abbildung DHCPREQUEST bei der initialen Adressvergabe : BROADCAST
Abbildung DHCPREQUEST im Renewalmodus : UNICAST
Abbildung fehlt.
3. Der Server erhält und verarbeitet die DHCPREQUEST Nachricht und erstellt eine Antwort
Nehmen wir an, der DHCP Server ist erreichbar und kann die renewal Anfrage verarbeiten. Es gibt dann zwei mögliche Antworten:
- Der Server stimmt dem Renew zu: Der Server entscheidet sich den Client Lease zu verlängern. Er bereitet eine DHCPACK Message, um die Lease Verlängerung zu bestätigen. Diese enthält die neue Lease Dauer sowie alle Parameter, die sich seit dem letzten Beziehen der Adresse geändert haben
- Server verweigert den Lease zu erneuern, warum auch immer: Er erzeugt eineDHCPNAK Message.
4. Server sendet die Antwort
Der Server sendet die DHCPACK oder DHCPNAK Message zurück zum Client.
5. Der Client erhält und verarbeitet die Nachricht des Servers
- Positive Nachricht: Der Client erhält ein DHCPACK und erneuert seinen Lease, passt die neuen Timer T1 und T2 Parameter an die zugeteilte Lease und wechselt in den Bound Modus. In diesem Falle sendet der Client keinen ARP request, um seine IP Adresse zu checken.
- Negative Nachricht: Der Client erhält ein DHCPNAK und startet danach sofort eine neue Anfrage.
6. Rebinding Timer (T2) läuft ab
Wenn der Client keine Antwort vom Server erhält, bleibt es im RENEWING Status und schickt wiederholt sein DHCPREQUEST als UNICAST zum Server. Während dieser Zeit arbeitet der Client aus der Sicht der Benutzers normal. Wenn sich der DHCP Server nicht meldet kann eventuell der rebindung Timer (72) ablaufen. Dies versetzt den Client in den Rebinding Status.
7. Der Client sendet eine DHCPREQUEST Rebinding Message
Nachdem der Client keine Antwort von „seinem“ Server erhielt „gibt er auf“ und versucht einen anderen Server zu kontaktieren, der den Lease verlängern könnte.
Er erzeugt eine DHCPREQUEST Message und schriebt seine IP Adresse in das CIAddr Feld, um eindeutig seine aktuelle IP Adresse anzuzeigen. Dieser Request geht als Broadcast an das lokale Netz.
8. Der Server verarbeitet die DHCPREQUEST Message und antwortet
- Server stimmt dem Rebind zu: Der Server entscheidet sich den Client Lease zu verlängern. Er bereitet eine DHCPACK Message, um die Lease Verlängerung zu bestätigen. Diese enthält die neue Lease Dauer sowie alle Parameter, die sich seit dem letzten Beziehen der Adresse geändert haben
- Server verweigert den Lease zu erneuern, warum auch immer: Er erzeugt eine DHCPNAK Message.
9. Server antwortet die Antwort
Jeder Server antwortet mit DHCPACK oderr DHCPNAK .
10. Der Client erhält die Serverantwort(en)
- Positive Nachricht: Der Client erhält ein DHCPACK und erneuert seinen Lease, passt die neuen Timer T1 und T2 Parameter an die zugeteilte Lease und wechselt in den Bound Modus
- Negative Nachricht: Der Client erhält ein DHCPNAK und startet danach sofort eine neue Anfrage.
11. Lease läuft ab
Wenn der Client keinen DHCP Server kontaktieren kann läuft sein Lease ab und er kann nicht mehr mit dem Netz kommunizieren.
Und dies wurde auch erkannt :