DHCP

DHCP, das Dynamic Host Control Protocol ist eigentlich ein Nachfolger des Bootstrap-Protocols, das vor DHCP benutzt wurde um IP-Adressen synamisch zuzuweisen und Diskless Workstation zu booten.

Einige Ziele bei der Entwicklung von DHCP waren:

  • Zentrale Administration von IP-Subnetzen. Alle IP-Adressen sollten zusammen mit einigen wichtigen Konfigurationsparametern in einer zentralen Datenbank gespeichert und verwaltet werden.
  • Automatische Zuweisung von IP-Adressen. Wenn ein Client-Computer startet, sollte er in der Lage sein eine IP-Adresse anzufordern und  diese auch zugewiesen bekommen. Dabei sollte ihm auch gleich mitgeteilt werden, welcher Rechner den für ihn zuständigen Nameserver beherbergt, welches der Default-Gatreway des Subnetzes ist und wie sein Name ist.
  • Rückkehr von unbenutzten IP-Adressen in einen Pool von IP-Adressen. Auf diese Art und Weise sollte es ermöglicht werden, das mehr Maschinen (wenn auch nicht gleichzeitig) auf dem Netz arbeiten konnten, als Adressen verfügbar waren. Wenn ein Client ein ein enderes Netz wechselte, so sollte seine IP-Adresse wieder für anderweitige Verwendung frei werden.

DHCP erfüllt alle diese Bedingungen. Wie es das genau macht steht in

  • RFC 1533: DHCP Options and BOOTP Vendor Extensions
  • RFC 1534: Interoperation between DHCP and BOOTP
  • RFC 1541: Dynamic Host Configuration Protocol (DHCP)
  • RFC 1542: Clarifications and Extensions for Bootstrap Protocol

DHCP-Leases

Lease ist einer der wichtigsten Begriffe bei DHCP. Jede durch DHCP vergebene Adresse hat eine Lease-Dauer, eine Zeit in der sie dem Client zur Verfügung steht.

DHCP vergibt seine Adressen ja nicht auf Dauer, sondern der DHCP-Server vermietet eine Adresse nur für eine bestimmte Zeit. Natürlich können sowohl derr Server als auch der Client den Mietvertrag jederzeit kündigen.

Lease-Zeiten können von einigen Minuten bis zu mehreren Monaten beliebig lang sein. Ist eine Lease abgelaufen und nicht erneuert werden, so kehrt die Adresse in den Adresspool, den man auch Scope nennt, zurück. Lease-Zeiten werden für jeden Scope extra eingestellt.

Leases können an eine MAC-Adresse gebunden werden, das heißt nur der Client der sich mit der zugeordneten MAC-Adresse meldet, bekommt den entsprechenden Lease.

Wie ein Client zu einer Adresse kommt

Ein DHCP-Client durchläuft einige von sechs Stadien wenn er versucht seine IP-Adresse zu bekommen.

  1. Initialisierung. Wenn der TCP/IP-Stack auf derClient-Maschine startet, bindet er sich mit einer Adresse von 0.0.0.0 . Das tut er weil jede Maschine in einem IP-Netzwerk eine IP-Adresse braucht. Da er mit dieser Adresse selbstverständlich nicht arbeiten kann, sendet er als nächstes ein DHCP Discover Packet, einen UDP-Broadcast auf Port 67 in das Netz. UDP-Port 67 ist der DHCP/BOOTP-Server-Port.
  2. Auswahl. Jeder DHCP-Server im Netz empfängt diesen Broadcast und prüft ob er eine gültige und freie IP-Adresse für diesen Client hat. Wenn ja antwortet er mit einem DHCP Offer Packet, fdas eine gültige IP-Adresse, Subnetmaske, die IP-Adresse des DHCP-Servers, die Leasedauer und die anderen Konfigurationsdetails enthält. Es handelt sich um einen UDP-Broadcast auf UDP-Port 68, den DHCP/BOOTP-Client -Port. Alle Server die dieses Paket senden reservieren diese Adresse in ihrem Scope, d.h diese Adresse kann an keinen weiteren Cleint vergeben werden, bis die Reservierung aufgehoben wird.
  3. Anforderung. Der Client wählt normalerweise die erste Antwort aus und antwortet ( wieder per Broadcast) mit einem DHCP Request Packet. Diese Paket sagt dem Server: Ja, ich nehme dein Angebot an. Da es wieder ein Bradcast ist, der die Adresse des ausgewählten Servers enthält, bekommen alle anderen DHCP-Server mit, das sich das Problem erledigt hat und heben die Reservierung der von ihnen angebotenen Lease auf. Mit dem Request-Packet kann der Client auch zusätzliche Konfigurationsoptionen vom DHCP-Server anfordern.
  4. Bindung. Wenn der Server das DHCP Request Packet empfängt, antwortet er dem Client mit einem DHCP Acknowledge Packet, das alle zusätzlichen Informationen erhält, die der Client vielleicht verlangt hat. Auch dieses Paket kommt per Broadcast. Der Server ordnet nun anhand der MAC-Adresse dem Client diese Lease zu, und der Protokollstack auf dem Client konfiguriert sich entsprechend den erhaltenen Informationen.
  5. Erneuern. Merkt ein Client dass seine Lease zu 50% abgelaufen ist, dann versucht er sie zu erneuern. Das macht er mit einem gerichteten UDP-Packet an den Server, von dem er den Lease erhalten hat. Dieses Paket ist ein DHCP-Request, der anfragt ob der Client diese Lease behalten kann. Wenn der Server verfügbar ist, dann ist er normalerweise einverstanden und sendet einen DHCP-Acknowledge an den Client.

  6. Wiederverbinden. Wenn die Lease etwa 87.5 Prozent ihrer Laufzeit erreicht hat, dann versucht der Client ( falls es bei 50 % nicht geklappt hat ) noch einmal seine Lease zu erneuern. Wenn das nicht klappt, dann versucht der Client irgendeinen DHCP-Server zu erreichen um eine gültige IP-Adresse zu bekommen. Wenn ein anderer DHCP-Server ihm diese Adresse liefern kann, dann ist er wiederverbunden, allerdings diesmal im Scope des anderen Servers. Wenn die Lease völlig abgelaufen ist, dann muss der Client die IP-Adresse aufgeben.