DHCP (Dynamic Host Configuration Protocol) Familie: Internetprotokollfamilie Einsatzgebiet: Automatischer Bezug vonIP-Adressen und weiterenParametern Ports: 67/UDP (IPv4 Server oder Relay-Agent)68/UDP (IPv4 Client) 547/UDP (IPv6 Server oder Relay-Agent)546/UDP (IPv6 Client) Standards: RFC 2131 (1997)

Das Dynamic Host Configuration Protocol (DHCP) ist ein Kommunikationsprotokoll in der Computertechnik. Es ermöglicht die Zuweisung der Netzwerkkonfiguration an Clients durch einen Server.

DHCP wurde im RFC 2131 definiert und bekam von der Internet Assigned Numbers Authority die UDP-Ports 67 und 68 zugewiesen.

Konzept DHCP ermöglicht es, angeschlossene Clients ohne manuelle Konfiguration der Netzschnittstelle in ein bestehendes Netz einzubinden. Nötige Informationen wie IP-Adresse, Netzmaske, Gateway, Name Server (DNS) und ggf. weitere Einstellungen werden automatisch vergeben, sofern das Betriebssystem des jeweiligen Clients dies unterstützt.

DHCP ist eine Erweiterung des Bootstrap-Protokolls (BOOTP), das für Arbeitsplatz-Computer ohne eigene Festplatte (Diskless-Workstation) notwendig war, wo sich der Computer beim Startvorgang zunächst vom BOOTP-Server eine IP-Adresse zuweisen ließ, um danach das Betriebssystem aus dem Netz zu laden. DHCP ist weitgehend kompatibel zu BOOTP und kann entsprechend mit BOOTP-Clients und -Servern (eingeschränkt) zusammenarbeiten.

DHCP wurde erstmals 1993 in RFC 1531 und RFC 1541 definiert, aufbauend auf dem 1985 entstandenen BOOTP (RFC 951).

Aufbau eines DHCP-Paketes 32 Bit op htype hlen hopsxid secs flags ciaddr yiaddr siaddr giaddr chaddr sname file options

op (1 Byte): Information, ob es sich um eine Anforderung (request = 1) oder eine Antwort (reply = 2) handelt htype (1 Byte): Netztyp (z. B. 1 = Ethernet, 6 = IEEE 802 Netzwerke oder 7 = ARCNET) hlen (1 Byte): Länge der physikalischen Netzadresse in Bytes (z. B. 6 = MAC/Ethernet-Adresse) hops (1 Byte, optional): Anzahl der DHCP-Relay-Agents auf dem Datenpfad xid (4 Byte): ID der Verbindung zwischen Client und Server secs (2 Byte): Zeit in Sekunden seit dem Start des Clients flags (2 Byte): Z. Zt. wird nur das erste Bit verwendet (zeigt an, ob der Client noch eine gültige IP-Adresse hat), die restlichen Bits sind für spätere Protokollerweiterungen reserviert ciaddr (4 Byte): Client-IP-Adresse yiaddr (4 Byte): eigene IP-Adresse siaddr (4 Byte): Server-IP-Adresse giaddr (4 Byte): Relay-Agent-IP-Adresse chaddr (16 Byte): Client-MAC-Adresse sname (64 Byte): Name des DHCP-Servers, falls ein bestimmter gefordert wird (enthält C-String), Angabe optional file (128 Byte): Name einer Datei (z. B. System-Kernel), die vom Server per TFTP an den Client gesendet werden soll (enthält C-String), Angabe optional options (variabel, optional): DHCP-Parameter und -Optionen (Beschreibung in RFC 2132) – Die Optionen können bis zu 312 Bytes lang sein, so dass ein IP-Paket von bis zu 576 Bytes (236 Bytes DHCP-Header + 312 Bytes DHCP-Options + 8 Bytes UDP-Header + 20 Bytes IPv4-Header) Länge auftreten kann. Eine größere maximale Byteanzahl kann zwischen Server und Client ausgehandelt werden.

Der DHCP-Server Der DHCP-Server wird – wie alle Netzwerkdienste – als Hintergrundprozess (Dienst oder Daemon) gestartet und wartet auf UDP-Port 67 auf Client-Anfragen. In seiner Konfigurationsdatei befinden sich Informationen über den zu vergebenden Adresspool sowie zusätzliche Angaben über netzwerkrelevante Parameter wie die Subnetzmaske, die lokale DNS-Domain oder das zu verwendende Gateway. Außerdem lassen sich auch weitere BOOTP-Server oder der Ort des zu verwendenden Bootimages einstellen.

Es gibt drei verschiedene Betriebsmodi eines DHCP-Servers: statische, automatische und dynamische Zuordnung.

Statische Zuordnung In diesem Modus (statisches DHCP) werden am DHCP-Server die IP-Adressen bestimmten MAC-Adressen fest zugeordnet. Die Adressen werden der MAC-Adresse auf unbestimmte Zeit zugeteilt. Der Nachteil kann darin liegen, dass sich keine zusätzlichen Clients in das Netz einbinden können, da die Adressen fest vergeben sind. Das kann unter Sicherheitsaspekten erwünscht sein.

Statische Zuordnungen werden vor allem dann vorgenommen, wenn der DHCP-Client beispielsweise Server-Dienste zur Verfügung stellt und daher unter einer festen IP-Adresse erreichbar sein soll. Auch Port-Weiterleitungen von einem Router an einen Client benötigen in der Regel eine feste IP-Adresse.

Automatische Zuordnung Bei der automatischen Zuordnung wird am DHCP-Server ein Bereich von IP-Adressen (range) definiert. IP-Adressen werden automatisch an die MAC-Adressen von neuen DHCP-Clients zugewiesen, was in einer Tabelle festgehalten wird. Im Unterschied zur dynamischen Zuordnung sind automatische Zuordnungen permanent und werden nicht entfernt. Der Vorteil ist, dass Hosts immer dieselbe IP-Adresse erhalten und eine zugewiesene IP-Adresse keinem anderen Host zugewiesen wird. Der Nachteil ist, dass neue Clients keine IP-Adresse erhalten, wenn der gesamte Adressbereich vergeben ist, auch wenn IP-Adressen nicht mehr aktiv genutzt werden.

Dynamische Zuordnung Dieses Verfahren gleicht der automatischen Zuordnung, allerdings hat der DHCP-Server hier in seiner Konfigurationsdatei eine Angabe, wie lange eine bestimmte IP-Adresse an einen Client „verliehen“ werden darf, bevor der Client sich erneut beim Server melden und eine „Verlängerung“ beantragen muss. Meldet er sich nicht, wird die Adresse frei und kann an einen anderen (oder auch denselben) Rechner neu vergeben werden. Diese vom Administrator bestimmte Zeit heißt Lease-Time (zu Deutsch also: „Leihdauer“).

Manche DHCP-Server vergeben auch von der MAC-Adresse abhängige IP-Adressen, d. h. ein Client bekommt hier selbst nach längerer Netzwerkabstinenz und Ablauf der Lease-Zeit die gleiche IP-Adresse wie zuvor (es sei denn natürlich, diese ist inzwischen schon anderweitig vergeben).

DHCP-Nachrichten DHCPDISCOVER: Ein Client ohne IP-Adresse sendet eine Broadcast-Anfrage nach Adress-Angeboten an alle DHCP-Server im lokalen Netz. DHCPOFFER: Die DHCP-Server antworten mit entsprechenden Werten auf eine DHCPDISCOVER-Anfrage. DHCPREQUEST: Der Client fordert eine der angebotenen IP-Adressen, weitere Daten sowie Verlängerung der Lease-Zeit von einem der antwortenden DHCP-Server. DHCPACK: Bestätigung des DHCP-Servers zu einer DHCPREQUEST-Anforderung oder die Übermittlung von Konfigurationsparametern, die vorher durch DHCPINFORM vom Client angefordert wurden. DHCPNAK: Ablehnung einer DHCPREQUEST-Anforderung durch den DHCP-Server. DHCPDECLINE: Ablehnung durch den Client, da die IP-Adresse schon verwendet wird. DHCPRELEASE: Der Client gibt die eigene Konfiguration frei, damit die Parameter wieder für andere Clients zur Verfügung stehen. DHCPINFORM: Anfrage eines Clients nach weiteren Konfigurationsparametern, z. B. weil der Client eine statische IP-Adresse besitzt.

DHCP-Relay DHCP-Relay ist eine Funktion, um DHCP über Netzgrenzen (Broadcastdomäne) hinaus nutzen zu können. Damit wird die Notwendigkeit der Bereitstellung eines DHCP-Servers in jedem Subnetz, in dem sich DHCP-Clients befinden, vermieden. Die DHCP-Relay-Funktion wird meist durch den Router selbst erbracht. Dabei werden Client-seitig mittels Broadcast verschickte DHCP-Anfragen durch den DHCP-Relay empfangen und mittels Unicast einem oder mehreren DHCP-Servern zugestellt. Der DHCP-Relay-Agent wird funktional auf der Schnittstelle des Routers platziert.

DHCP und Active Directory Bei einem Active Directory (AD) ist der DHCP-Dienst in die AD-Datenbank integriert. Dabei dürfen nur autorisierte Server Leases verteilen. Um einen Server zu autorisieren, muss dieser ein Domain Controller sein oder ein Domänenkonto besitzen.

Ablauf der DHCP-Kommunikation mini|Ablauf der Zuweisung einer IP-Adresse per DHCP Damit der Client einen DHCP-Server nutzen kann, muss sich dieser im selben Netzwerksegment befinden, da DHCP Broadcasts verwendet und Router keine Broadcasts weiterleiten (Router bilden Broadcast-Domänen). Befindet sich der DHCP-Server in einem anderen Netzwerksegment, so muss ein so genannter DHCP-Relay-Agent installiert werden, der die DHCP-Anfragen an den eigentlichen Server weitergibt.

Initiale Adresszuweisung (Lease/Vergabe) 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 selben 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. Die DHCP-Server antworten mit DHCPOFFER und machen Vorschläge für eine IP-Adresse. Das geschieht entweder mit einem Broadcast an die Adresse 255.255.255.255 mit UDP-Quellport 67 und UDP-Zielport 68 oder mit einem Unicast an die vorgeschlagene IP-Adresse und die MAC-Adresse des Clients, je nachdem ob der Client in der DHCPDISCOVER-Nachricht das Broadcast-Bit gesetzt hat.

Der Client darf nun unter den eingetroffenen Angeboten (DHCPOFFER) 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. 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).

Bevor der Client sein Netzwerkinterface mit der zugewiesenen Adresse konfiguriert, sollte er noch prüfen, ob nicht versehentlich noch ein anderer Rechner die Adresse verwendet. Das geschieht üblicherweise durch einen ARP-Request mit der soeben zugeteilten IP-Adresse. Antwortet ein anderer Host im Netz auf diesen Request, so wird der Client die vorgeschlagene Adresse mit einer DHCPDECLINE-Nachricht zurückweisen.

DHCP-Refresh (nur bei dynamischer Zuordnung) Zusammen mit der IP-Adresse erhält der Client in der DHCPACK-Nachricht neben der „lease time“, also der Gültigkeitsdauer der IP-Konfiguration, zwei Fristen: Die „renewal time“ T1 und die „rebinding time“ T2. Der Standard schlägt vor, dass T1 auf die Hälfte und T2 auf 7/8, also 87,5 % der Gültigkeitsdauer der lease time gesetzt wird. Für beide Werte kann der DHCP-Server optional andere Werte vorgeben.

Nach Ablauf der Zeit T1 versucht der Client, seine lease time zu verlängern. Dazu sendet der Client wieder DHCPREQUESTs per Unicast an den Server, der die IP-Konfiguration vergeben hat. Der Server sollte dann in der Regel ein DHCPACK mit identischen Daten wie vorher, aber einer neuen lease time senden. Damit gilt die Gültigkeitsdauer der IP-Konfiguration des Clients als verlängert.

Antwortet der Server nicht, weil er zum Beispiel abgeschaltet wurde und nun ein neuer Server für die Verwaltung der IP-Adressen zuständig ist, so kann der Client die IP-Konfiguration ohne Einschränkungen weiter verwenden, bis die lease time abgelaufen ist. Er wird jedoch nach Ablauf von T2 anfangen, DHCPREQUESTs nunmehr per Broadcast zu versenden, um eine neue IP-Konfiguration von irgendeinem anderen DHCP-Server zu erhalten.

Sollte der Client es versäumen, bis zum Ablauf der Lease-Zeit eine Verlängerung zu beantragen, muss er seine Netzwerkkarte dekonfigurieren und wieder bei DHCPDISCOVER mit einer initialen Adresszuweisung beginnen. Sollte der DHCP-Server keine Adressen mehr zur Verfügung haben oder während des Vorganges schon ein anderer Client seine letzte Adresse zugesagt bekommen haben, sendet der Server ein DHCPNAK (DHCP-Not Acknowledged), und der Vorgang der Adressanfrage beginnt erneut.

Sonstiges