DHCP

aus WB Wiki; freien Wissensdatenbank rund ums Thema Computer
Wechseln zu: Navigation, Suche

Das Netzwerkprotokoll DHCP (Dynamic Host Configuration Protocol) ermöglicht mit Hilfe eines entsprechenden Servers die dynamische Zuweisung einer IP-Adresse und weiterer Konfigurationsparameter an Computern in einem Netzwerk (z.B. Intranet oder LAN).

Inhaltsverzeichnis

Dynamische Zuweisung

Die IP-Adresse wird dem Client "dynamisch" beim Hochfahren vom sog. DHCP-Server zugewiesen - der Client besitzt keine "statische / feste" IP-Adresse. Vorteile sind, dass mehr Computer am Netzwerk angeschlossen sein können, als IP-Adressen verfügbar sind (sofern nicht alle gleichzeitig aktiv teilnehmen wollen), sowie das einfache Hinzufügen neuer Computer - man stellt auf einem neuen einfach "verwende DHCP" ein und spart sich die weitere Konfiguration.

Das Dynamic Host Configuration Protocol ist definiert im RFC 2131 und bekam von der Internet Assigned Numbers Authority (IANA) die UDP-Ports 67 und 68 zugewiesen. Das bedeutet, dass der Client und der Server über diese zwei Ports miteinander kommunizieren. Das DHCP Protokoll ist eine Erweiterung des BOOTP-Protokolls. Das BOOTP-Protokoll kann auch die IP dynamisch zuweisen, aber das DHCP kann weitaus mehr Konfigurationen übergeben. Beim Start des Clients fragt dieser über einen Broadcast im gesamten Netzwerk nach (s)einer IP-Adresse. Als Antwort auf seinen Broadcast erhält er folgende Informationen:

  • IP-Adresse
  • Lease-Time
  • Default-Route
  • Netzmaske
  • DNS-Server-Adressen
  • WINS-Server
  • Broadcast-Adresse
  • IP-Varialen
  • weitere Parameter

Von den oben genannten Parametern ist aber nur die Übermittlung der IP-Adresse und der Lease-Time (in etwa zu verstehen als Haltbarkeit der IP-Adresse) zwingend notwendig. Alle anderen Parameter sind optional.

Adressvergabe

Der Ablauf der Adressvergabe sieht im Detail wie folgt aus:

Nehmen wir mal an, wir befinden uns in einem schulischen Computerraum, wo sich jeder Rechner an einem im Netzwerk befindlichen Server anmelden muss. Wenn der Client eingeschaltet wird, ist es so gedacht, dass er eine IP-Adresse vom Server zugewiesen bekommt.
Die Kommunikation zwischen den Client und Server läuft mittels UDP über die Ports 67 und 68. Hierbei kommuniziert der Server über Port 67 und der Client über Port 68.

Beim Booten des Clients sendet er eine DHCPDISCOVER-Nachricht via Broadcast in das Netzwerk und fragt nach seiner Konfiguration. Weiterhin gibt der Client seine MAC-Adresse als Parameter an. Da er noch keine IP-Adresse besitzt, kann er hier noch keine angeben. Der Server, welcher im Netzwerk diese Broadcast-Nachricht empfängt, antwortet mit einer DHCPOFFER-Nachricht und schlägt dem Client eine IP aus seinem noch nicht vergebenen Adressen-Pool vor.
Wenn der Client das Angebot des Servers annimmt, schickt er eine DHCPREQUEST-Nachricht an den Server. Hierauf folgt vom Server als Antwortet eine DHCPPACK-Nachricht und bestätigt somit die Konfiguration. Nach dem Absenden dieser Nachricht besitzt der Client eine IP. Schlägt das aber fehl, weil der Client oder der Server erkennen, das diese angebotene IP-Adresse schon im Netzwerk vergeben ist, sendet er eine DHCPDECLINE-Nachricht und das ganze beginnt wieder von neuem. Als Folge des DHSPDECLINE sperrt der Server jetzt die IP-Adresse für die interne Vergebung.

Zusammen mit seiner IP-Adresse erhält der Client in der DHCPACK-Nachricht auch eine Lease-Time mitgeteilt, welche ihm sagt, wie lange die IP-Adresse für ihn reserviert bzw. gültig ist (vergleichbar mit dem Bücher-Ausleihen in einer Bibliothek). Der RFC Standard sieht hierbei vor, das der Client nach der Hälfte der Lease-Time einen erneuten DHCPREQUEST sendet und so dem Server mitteilt, dass er weiterhin die für ihn reservierte IP-Adresse benutzen will. Nach Erhalt dieser Nachricht sendet der Server eine identische DHCPACK-Nachricht an den Client zurück, in der die neue Lease-Time mitgeteilt wird (vergleichbar mit einer Verlängerung der Leihfrist in der Bibliothek). Nun ist die IP-Adresse verlängert und der DCHP-Refresh ist komplett.

Beim Herunterfahren des Client gibt es zwei Möglichkeiten, mit der vergebenen IP-Adresse umzugehen.

  1. Er schickt eine DHCPRELEASE-Nachricht an den Server und teilt ihn mit, das er diese IP-Adresse nicht behalten will und sie freigibt.
  2. Eine andere Möglichkeit ist, das sich der Client seine IP-Adresse über den Reboot hinweg "merken" kann, weil sein Lease-Time noch nicht abgelaufen ist oder er besitzt eine feste IP. Dies hat den Vorteil, dass beim erneuten Hochfahren des Rechners die ersten Schritte des DHCP-Protokoll übersprungen werden können.

Hier eine Abbildung, um das Protokoll zu veranschaulichen:

DHCP.jpg

Wie kommunizieren DHCP und DNS miteinander?

Wie sieht eigentlich die Kommunikation zwischen DHCP und DNS aus? Einige DHCP-Server können mit dem DNS zusammenarbeiten, indem sie IP-Adresse, Rechnernamen und "Lease-Time" an den DNS-Server weiterleiten. Im Normalfall kommuniziert der Client direkt mit den DNS Server.

Wie sieht es mit der Sicherheit aus?

Wie bereits erwähnt, basiert DHCP auf UDP und ist somit sehr leicht zu manipulieren. Es wäre möglich, alle Adressen eines DHCP-Servers zu reservieren und anschließend selbst als DHCP Server aufzutreten. Ein solches Vorgehen wird auch als Spoofing bezeichnet. Nach einem erfolgreichen Spoofing könnte man falsche oder verfälschte Daten an die Clients weiterreichen.
Ein weiteres, großes Problem ist die Verwendung von SSH. SSH-Clients merken sich bei jeder Verbindung den Namen und die IP. Wenn man jetzt z.B. die IP ändert, wertet SSH dies als Angriff.