Das so genannte „Dynamic Host Configuration Protocol“ dient dazu, Einstellungen in einem Netzwerk zentral von einem Server aus zu vergeben, statt diese dezentral an einzelnen Arbeitsplatzrechnern zu konfigurieren. Ein mit DHCP konfigurierter Client verfügt selbst nicht über statische Adressen, sondern konfiguriert sich voll und ganz selbstständig nach den Vorgaben des DHCP-Servers.
Dabei ist es möglich, jeden Client anhand der Hardware-Adresse seiner Netzwerkkarte zu identifizieren und ständig mit denselben Einstellungen zu versorgen, sowie Adressen aus einem dafür bestimmten Pool „dynamisch“ an jeden „interessierten“ Rechner zu vergeben. In diesem Fall wird sich der DHCP-Server bemühen, jedem Client bei jeder Anforderung (auch über längere Zeiträume hinweg) dieselbe Adresse zuzuweisen — dies funktioniert natürlich nicht, wenn es mehr Rechner im Netz als Adressen gibt.
Ein Systemadministrator kann somit gleich in zweierlei Hinsicht von DHCP profitieren. Einerseits ist es möglich, selbst umfangreiche Änderungen der Netzwerk-Adressen oder der Konfiguration komfortabel in der Konfigurationsdatei des DHCP-Servers zentral vorzunehmen, ohne dass eine Vielzahl von Clients einzeln konfiguriert werden müssen. Andererseits können vor allem neue Rechner sehr einfach ins Netzwerk integriert werden, indem sie aus dem Adress-Pool eine IP-Nummer zugewiesen bekommen. Auch für Laptops, die regelmäßig in verschiedenen Netzen betrieben werden, ist die Möglichkeit, von einem DHCP-Server jeweils passende Netzwerkeinstellungen zu beziehen, sicherlich interessant.
Neben IP-Adresse und Netzmaske werden der Rechner- und Domain-Name, der zu verwendende Gateway und Nameserver-Adressen dem Client mitgeteilt. Im Übrigen können auch etliche andere Parameter zentral konfiguriert werden, zum Beispiel ein Timeserver, von dem die jeweils aktuelle Uhrzeit abrufbar ist oder ein Printserver. Im Folgenden möchten wir Ihnen nun einen kurzen Einblick in die Welt von DHCP geben. Wir möchten Ihnen anhand des DHCP-Servers dhcpd zeigen, wie einfach auch in Ihrem Netzwerk die gesamte Netzwerkkonfiguration zentral per DHCP erledigt werden kann.
Bei SUSE LINUX stehen Ihnen sowohl ein DHCP-Server- , als auch zwei Client-Pakete zur Verfügung. Der vom Internet Software Consortium herausgegebene DHCP-Server dhcpd stellt die Server Dienste zur Verfügung, als Clients können sowohl der vom ISC herausgegebene dhclient als auch der so genannte „DHCP Client Daemon“ im Paket dhcpcd verwendet werden.
Der bei SUSE LINUX standardmäßig installierte dhcpcd ist sehr einfach zu handhaben und wird beim Starten des Rechners automatisch gestartet, um nach einem DHCP-Server zu suchen. Er kommt ohne eine Konfigurationsdatei aus und sollte im Normalfall ohne weitere Konfiguration funktionieren.
Für komplexere Situationen kann man auf den ISC dhclient zurückgreifen, der sich über die Konfigurationsdatei /etc/dhclient.conf steuern lässt.
Der Dynamic Host Configuration Protocol Daemon ist das Herz eines DHCP-Systems. Er „vermietet“ Adressen und wacht über deren Nutzung, wie in der Konfigurationsdatei /etc/dhcpd.conf festgelegt. Über die dort definierten Parameter und Werte stehen dem Systemadministrator eine Vielzahl von Möglichkeiten zur Verfügung, das Verhalten des DHCP nach seinen Wünschen zu beeinflussen.
Ein Beispiel für eine einfache /etc/dhcpd.conf-Datei:
Beispiel 14.28. Die Konfigurationsdatei /etc/dhcpd.conf
default-lease-time 600; # 10 minutes
max-lease-time 7200; # 2 hours
option domain-name "kosmos.all";
option domain-name-servers 192.168.1.1, 192.168.1.2;
option broadcast-address 192.168.1.255;
option routers 192.168.1.254;
option subnet-mask 255.255.255.0;
subnet 192.168.1.0 netmask 255.255.255.0
{
range 192.168.1.10 192.168.1.20;
range 192.168.1.100 192.168.1.200;
}
Diese einfache Konfigurationsdatei reicht bereits aus, damit DHCP im Netzwerk IP-Adressen zuweisen kann. Bitte achten Sie insbesondere auf die Strichpunkte am Ende jeder Zeile, ohne die dhcpd nicht starten wird!
Wie Sie sehen, lässt sich obige Beispieldatei in drei Blöcke unterteilen. Im ersten Abschnitt wird definiert, wie viele Sekunden eine IP-Adresse standardmäßig an einen anfragenden Rechner „vermietet“ wird, bevor sich dieser um eine Verlängerung bemühen sollte (default-lease-time). Auch wird hier angegeben, wie lange ein Rechner maximal eine vom DHCP-Server vergebene IP-Nummer behalten darf, ohne für diese eine Verlängerung zu beantragen (max-lease-time).
Im zweiten Block werden nun einige grundsätzliche Netzwerk-Parameter global festgesetzt:
Mit option domain-name wird die Default-Domain Ihres Netzwerks definiert.
Bei option domain-name-servers können bis zu drei DNS-Server angegeben werden, die zur Auflösung von IP-Adressen in Hostnamen (und umgekehrt) verwendet werden sollen. Idealerweise sollte auf Ihrem System bzw. innerhalb Ihres Netzwerks ein Nameserver bereits in Betrieb sein, der auch für dynamische Adressen jeweils einen Hostnamen und umgekehrt bereit hält. Mehr über die Einrichtung eines eigenen Nameservers erfahren Sie in Abschnitt 14.6. “DNS – Domain Name System”.
option broadcast-address legt fest, welche Broadcast-Adresse der anfragende Rechner verwenden soll.
option routers definiert, wohin Datenpakete geschickt werden können , die (aufgrund der Adresse von Quell- und Zielhost sowie Subnetz-Maske) nicht im lokalen Netz zugestellt werden können. Gerade bei kleineren Netzen ist dieser Router auch meist der Übergang zum Internet.
option subnet-mask gibt die an den Client zu übergebende Netzmaske an.
Unterhalb dieser allgemeinen Einstellungen wird nun noch ein Netzwerk samt Subnet Mask definiert. Abschließend muss noch ein Bereich gewählt werden, aus dem der DHCP-Daemon Adressen an anfragende Clients vergeben darf. Im Beispiel stehen alle Adressen zwischen 192.168.1.10 und 192.168.1.20 bzw. 192.168.1.100 und 192.168.1.200 zur Verfügung.
Nach diesen wenigen Zeilen sollten Sie bereits in der Lage sein, den DHCP-Daemon mit dem Kommando rcdhcpd start zu aktivieren, der sogleich zur Verfügung steht.
Bei SUSE LINUX wird der DHCP-Daemon aus Sicherheitsgründen per default in einer chroot-Umgebung gestartet. Damit die Konfigurationsdateien gefunden werden, müssen diese mit in die neue Umgebung kopiert werden. Dies geschieht mit dem Befehl rcdhcpd start automatisch.
Auch können Sie mit rcdhcpd check-syntax eine kurze, formale Überprüfung der Konfigurationsdatei vornehmen lassen. Sollte wider Erwarten ein Problem mit der Konfiguration auftreten und der Server mit einem Fehler abbrechen und nicht mit einem „done“ starten, finden Sie in der zentralen Systemprotokolldatei /var/log/messages meist ebenso Informationen dazu wie auf Konsole 10 (Strg + Alt + F10).
Wie eingangs bereits erwähnt, kann mit DHCP auch an ein- und denselben Rechner bei jeder Anfrage eine ganz bestimmte, definierte Adresse vergeben werden.
Selbstverständlich haben solche expliziten Adresszuweisungen Vorrang vor solchen aus dem Pool der dynamischen Adressen. Im Gegensatz zu diesen verfallen die festen Adressinformationen in keinem Fall, wie es bei den dynamischen der Fall ist, wenn nicht mehr genügend freie Adressen zur Verfügung stehen und deshalb eine Neuverteilung erforderlich ist.
Zur Identifizierung eines mit einer statischen Adresse definierten Systems, bedient sich der dhcpd der so genannten Hardwareadresse. Dies ist eine weltweit i.d.R. einmalige, fest definierte Nummer aus sechs Oktettpaaren, über die jedes Netzwerkgerät verfügt, zum Beispiel 00:00:45:12:EE:F4.
Wird nun die Konfigurationsdatei aus Datei 14.28. “Die Konfigurationsdatei /etc/dhcpd.conf” um einen entsprechenden Eintrag wie in Datei 14.29. “Ergänzungen zur Konfigurationsdatei” ergänzt, wird dhcpd unter allen Umständen dieselben Daten an den entsprechenden Rechner ausliefern.
Beispiel 14.29. Ergänzungen zur Konfigurationsdatei
host earth {
hardware ethernet 00:00:45:12:EE:F4;
fixed-address 192.168.1.21;
}
Der Aufbau dieser Zeilen ist nahezu selbsterklärend:
Zuerst wird der Name des zu definierenden Rechners eingetragen (host <hostname>) und in der folgenden Zeile die MAC-Adresse angegeben. Diese Adresse kann bei Linux-Rechnern mit dem Befehl ifstatus plus Netzwerkdevice (zum Beispiel eth0) festgestellt werden. Gegebenenfalls müssen Sie zuvor die Karte aktivieren: ifup eth0. Sie erhalten dann eine Ausgabe wie:
link/ether 00:00:45:12:EE:F4
In unserem Beispiel wird also dem Rechner, dessen Netzwerkkarte die MAC-Adresse 00:00:45:12:EE:F4 hat, die IP-Adresse 192.168.1.21 sowie der Rechnername earth zugewiesen.
Als Hardware-Typ wird heutzutage in aller Regel ethernet zum Einsatz kommen, wobei durchaus auch das vor allem bei IBM-Systemen häufig zu findende token-ring unterstützt wird.
Aus Sicherheitsgründen enthält die SUSE Version des ISC DHCP-Servers den 'non-root/chroot'-Patch von Ari Edelkind. Damit kann der dhcpd
als User 'nobody' laufen
in einer chroot-Umgebung laufen (/var/lib/dhcp)
Die Konfigurationsdatei /etc/dhcpd.conf muss dafuer in /var/lib/dhcp/etc liegen, und wird vom Init-Skript beim Start automatisch dorthin kopiert.
Dieses Verhalten lässt sich in der Datei /etc/sysconfig/dhcpd steuern. Um den dhcpd weiterhin ohne chroot-Umgebung laufen zu lassen, setzen Sie in der Datei /etc/sysconfig/dhcpd die Variable DHCPD_RUN_CHROOTED auf „no“
Damit der dhcpd auch in der chroot-Umgebung Hostnamen auflösen kann, müssen einige weitere Konfigurationsdateien mit kopiert werden. Dies sind:
/etc/localtime
/etc/host.conf
/etc/hosts
/etc/resolv.conf
Beim Start des Init-Skriptes werden diese deshalb nach /var/lib/dhcp/etc/ kopiert. Diese Dateien muessen auf dem Laufenden gehalten werden, wenn sie durch ein Skript wie /etc/ppp/ip-up dynamisch modifiziert werden. Wenn in der Konfigurationsdatei nur IP-Adressen anstelle von Hostnamen verwendet werden, sind keine Probleme zu erwarten.
Wenn in Ihrer Konfiguration weitere Dateien mit in die chroot-Umgebung kopiert werden müssen, so können Sie diese mit dem Parameter DHCPD_CONF_INCLUDE_FILES in der Datei etc/sysconfig/dhcpd angeben.
Damit der dhcp-Daemon aus der chroot-Umgebung heraus weiter loggen kann, auch wenn der Syslog-Daemon neu gestartet wird, muss zu der Variable SYSLOGD_PARAMS in /etc/sysconfig/syslog "-a /var/lib/dhcp/dev/log" hinzugefügt werden.
Wenn Sie an zusätzlichen Informationen interessiert sind, bietet sich zum Beispiel die Seite des Internet Software Consortium an, auf der detaillierte Informationen zu DHCP verfügbar sind: http://www.isc.org/products/DHCP/.
Auch die neue Version 3 des Protokolls, die sich im Moment im Beta-Test befindet, wird dort dokumentiert. Im Übrigen stehen Ihnen selbstverständlich auch die Manpages zur Verfügung, dies sind insbesondere man dhcpd, man dhcpd.conf, man dhcpd.leases und man dhcp-options.
Auf dem Markt sind einige Bücher erschienen, die sich umfassend mit den Möglichkeiten des Dynamic Host Name Configuration Protocol auseinander setzen.
Übrigens, dhcpd kann sogar anfragenden Rechnern eine in der Konfigurationsdatei mit dem filename-Parameter definierte Datei anbieten, die einen bootbaren Betriebssystemkern enthält. Damit lassen sich Clients aufbauen, die über keine Festplatte verfügen und sowohl ihr Betriebssystem wie auch ihre Daten ausschließlich über das Netzwerk laden (diskless clients). Dies kann sowohl aus Kosten- als auch aus Sicherheitsgründen interessant sein.