Dynamic Host Configuration Protocol

18.10.1999 von Holger Reibold
Netzwerke unterliegen einem ständigen Wandel: ältere Geräte werden aussortiert, neue Rechner kommen hinzu, mobile Anweder klinken sich ein und aus. Bei manueller Konfiguration bedeutet dies einen erheblichem Aufwand. Dynamic Host Configuration Protocol (DHCP) löst dieses Problem durch die dynamische Vergabe von IP-Adressen.

In einem TCP/IP-basierten Netzwerk besitzt jeder Rechner zumindest eine IP-Adresse und eine Subnetzmaske, um mit anderen Geräten im Netzwerk zu kommunizieren. Schon in einem kleinen Netzwerk lohnt es sich, die Adressenvergabe durch einen zentralen Rechner zu steuern. Für den Administrator hat das Verfahren gleich mehrere Vorteile: Die Pflege ist weniger zeitaufwendig, da keine Arbeiten an den einzelnen Clients erforderlich sind. Adresskonflikte gehören der Vergangenheit an, da der DHCP-Server die Vergabe der IP-Adressen zentral steuert.

DHCP basiert auf BOOTP , bietet aber gegenüber seinem Vorgänger verschiedene Vorteile. Der wohl interessanteste: die dynamische Vergabe von IP-Adressen. Dabei schöpft der DHCP-Server aus einem vorgegebenen Adressenbereich (Range, wird manchmal auch als Scope bezeichnet) und weist den anfragenden Clients eine Adresse für einen bestimmten Zeitraum (Lease) zu. Innerhalb der Lease-Zeit fordert ein DHCP-Client beim Systemstart vom Server keine neue Adresse, sondern lediglich eine Bestätigung über die bestehende Lease an.

Auch mögliche Fehlerquellen minimiert DHCP: So überträgt das Protokoll neben den IP-Adressen auf Wunsch auch weitere Parameter wie zum Beispiel Standard-Gateway und die Adressen der Nameserver. Die technischen Spezifikationen des DHCP-Protokolls sind in RFC 2131 definiert.

Interaktion zwischen Client und Server

Schon eine vereinfachte Beschreibung der Adressenvergabe macht den zyklischen Verlauf der Interaktion zwischen Client und Server deutlich. Der gesamte Verteilungs- und Abstimmungsprozess lässt sich durch vier Schritte beschreiben:

Der Client verschickt eine DHCPDISCOVER-Nachricht an die im Netzwerk befindlichen DHCP-Server. Sie entspricht im Wesentlichen der einfachen Aufforderung: "An alle DHCP-Server im Netz, ich benötige eine IP-Adresse". Da der Client bislang noch keine IP-Adresse besitzt, kann er auch nicht TCP/IP für die Kommunikation mit anderen Netzwerksystemen verwenden. Daher greift der Client zur Kommunikation auf UDP zurück.

Als Anwort auf die Anfrage des Clients übermittelt der DHCP-Server dem Client einen Vorschlag, indem er mit DHCPOFFER eine IP-Adresse übermittelt. Da in einem Netzwerk, gerade wenn es sich um ein größeres Netz handelt, nicht selten mehrere DHCP-Server existieren, ist diese Offerte von besonderer Bedeutung.

Nun ist der Client wieder an der Reihe. Er muss sich für eine der ihm angebotenen Adressen entscheiden. Hier spielt die Art und Weise der DHCP-Implementierung eine zentrale Rolle: Die Kriterien dieser Auswahl sind nicht im RFC festgelegt, sondern unterscheiden sich von Plattform zu Plattform. Sobald die Entscheidung für eine Adresse gefallen ist, sendet der Client eine DHCPREQUEST-Meldung an den entsprechenden Server aus. Auch dabei wird wieder UDP als Transportprotokoll verwendet.

Beim vorläufig letzten Schritt liegt der Ball wieder in den Händen des Servers. Auf den Request übermittelt der Server eine temporäre IP-Adresse mittels DHCPPACK an den Client. Nachdem der Client diese Nachricht entgegengenommen hat, führt er meist einen Check durch, um sicherzustellen, dass die Adresse nicht bereits ein anderer Rechner verwendet. Schließlich übernimmt der Client die übermittelten Netzwerkparameter in seine Systemkonfiguration.

DHCP-Refresh

Nachdem ein DHCP-Server einen Client mit einer IP-Adresse ausgestattet hat, weist er ihm zusätzlich die so genannte Lease-Zeit zu. Diese legt die Gültigkeitsdauer der Einstellungen fest. Im Hintergrund laufen dabei zwei Uhren: T1 entspricht der halben Lease-Zeitspanne, T2 ist auf 87,5 Prozent der maximalen Lease-Zeit gesetzt. Beide Werte lassen sich über die DHCP-Optionen des Servers bearbeiten - sofern diese Funktionen implementiert sind.

Nachdem T1 abgelaufen ist, sendet der Client eine DHCPREQUEST-Nachricht an den Server und fragt nach, ob dieser die Lease-Zeit verlängern kann. Man bezeichnet diesen Zustand auch als Renewing Status. In der Regel antwortet der Server mit einer DHCPACK-Nachricht samt einer neuen Lease-Zeit. Die Werte T1 und T2 setzt der Server dabei zurück.

Erhält der Client bis zum Ablauf von T2 keine DHCPACK-Nachricht, beginnt der Rebinding Status. Der Client muss nun eine DHCPREQUEST-Nachricht verschicken, damit die Lease-Zeit verlängert wird. Diese Anforderung kann der Server durch DHCPACK bestätigen. Bleibt auch dieser Request unbeantwortet, muss der Client eine komplett neue IP-Adresse anfordern. Hierbei kommt der ursprüngliche Mechanismus zum Einsatz, der alle DHCP-Server im Netz anspricht.

Range und Lease

Bevor ein DHCP-Server die angeschlossenen Netzwerk-Clients überhaupt mit IP-Adressen versorgen kann, muss man ihn mit Informationen füttern, welche Ranges er verwenden darf. Eine Range stellt einen IP-Adressbereich dar, der durch eine Start- und End-Adresse definiert ist. Je nach Implementierung sind auch Ausschlussbereiche vorgesehen, also Adressen, die nicht für die Vergabe herangezogen werden können. Auf diese Weise ist sichergestellt, dass feste und dynamische IP-Adressen in einem Netzwerk problemlos nebeneinander existieren können.

Die Lease-Dauer wird in der Regel durch die Angabe von Tagen, Stunden und Minuten definiert. Eine allgemeine Regel für die optimalen Parameter gibt es nicht. Diese Einstellungen, sofern sie denn überhaupt in den einzelnen Produkten implementiert sind, müssen auf Beanspruchung des Servers, Client-Verhalten und Netzwerkstabilität abgestimmt sein. Entscheidend ist zum einen die Anzahl der möglichen Clients. Als Richtwert gilt: Die Lease-Zeit ist doppelt so lange, wie die Zeitspanne, die beim Serverausfall für die Wiederinbetriebnahme benötigt wird. Wichtig: Bei längeren Lease-Zeiten dauert es entsprechend länger, bis Änderungen der DHCP-Optionen auf der Client-Seite greifen.

DHCP-Konfiguration unter Win32

Einzig die Serverversion von Windows-NT ist von Haus aus mit einem DHCP-Server ausgestattet. Die Installation erfolgt über den Dienste-Eintrag der Netzwerksteuerung. Die Konfiguration übernimmt der DHCP-Manager, der sich in der Programmgruppe Verwaltung (Allgemein) befindet. Die Einrichtung der Ranges inklusive der Lease-Dauer geschieht über den Menüeintrag Bereiche. Zudem bietet der Manager eine Vielzahl von DHCP-Optionen an, die allerdings zum Teil Plattformabhängig sind.

Alle Einstellungen legt Windows NT in der DHCP-Datenbank ab, die sich im Unterverzeichnis winnt\\system32\\dhcp befindet. Die gesamte DHCP-Konfiguration besteht aus verschiedenen Dateien. Die beiden wichtigsten: dhcp.mdb (die eigentliche Datenbank, in der die DHCP-Konfiguration samt Client-Einstellungen abgelegt ist) und system.mdb (Informationen über die Datenbankstruktur). Zusätzlich erzeugt der DHCP-Server verschiedene Logfiles und ein Backup-Verzeichnis.

Client-seitig muss in den TCP/IP-Einstellungen das Betriebssystem für das Zusammenspiel mit dem DHCP-Server konfiguriert sein. Der Client ist in der Regel in der Lage, die DHCP-Einstellungen ohne einen Neustart vom Server zu beziehen. Die Hilfsprogramme ipconfig (Windows NT) und winipcfg (Windows 9x) zeigen die aktuell zugewiesenen Einstellungen an. Auf der Client-Seite sind diese in der Registry abgelegt. Der zugehörige Schlüssel trägt die Bezeichnung HKEY_LOCAL_MACHINE\\System\\ CurrentControlSet\\Service\\DHCP. Der Unterschlüssel Parameter enthält die Einstellungen für IP-Adresse, Lease-Dauer und sonstige Optionen.

DHCP-Konfiguration unter Linux

Nach der Installation des DHCP-Deamon unter Linux ist zunächst etwas Konfigurationsarbeit erforderlich. Bevor der DHCP-Daemon ordnungsgemäß startet, müssen in der Datei /etc/dhcpd.conf die Einstellungen über die zur Verfügung stehenden Ranges vorhanden sein. Unter KDE gibt es inzwischen sogar eine grafische Schnittstelle für die Konfiguration, kcmdhcpd, die dem DHCP-Manager von Windows NT sehr ähnlich ist. Wer die Einstellungen von Hand vornehmen will, kann sich an folgendem Beispiel orientieren:

server-identifier rechnername.de;
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.3 192.168.1.254;
default-lease-time 600;
max-lease-time 7200;
option routers 192.168.1.1;
option domain-name-servers 192.168.1.2;
option domain-name "intranet.rechnername.de";
option broadcast-address 192.168.1.255;
option subnet-mask 255.255.255.0;
host server.rechnername.de {
hardware ethernet 00:80:AD:DF:D1:03;
fixed-address 192.168.1.1;
}
}

Anschließend kann der Aufruf des DHCP-Daemons erfolgen. Damit der DHCP-Daemon beim Hochfahren gestartet wird, muss er im entsprechenden Runlevel registriert sein. (mhe)