27.3. Der DHCP-Server dhcpd

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 wird in Beispiel 27.1, „Die Konfigurationsdatei /etc/dhcpd.conf“ gezeigt.

Beispiel 27.1. 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 Client „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:

Unterhalb dieser allgemeinen Einstellungen wird nun noch ein Netzwerk samt Subnetz-Maske 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).

27.3.1. Clients mit fester IP-Adresse

Wie eingangs bereits erwähnt, kann mit DHCP auch an ein- und denselben Client bei jeder Anfrage eine ganz bestimmte, definierte Adresse vergeben werden. Solche expliziten Adresszuweisungen haben Vorrang vor dynamischen Adressen aus dem Pool. Im Gegensatz zu den dynamischen 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 Clients, bedient sich der dhcpd der so genannten Hardwareadresse. Dies ist eine weltweit 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 Beispiel 27.1, „Die Konfigurationsdatei /etc/dhcpd.conf“ um einen entsprechenden Eintrag wie in Beispiel 27.2, „Ergänzungen zur Konfigurationsdatei“ ergänzt, wird der DHCP-Daemon unter allen Umständen immer dieselben Daten an den entsprechenden Client ausliefern.

Beispiel 27.2. Ergänzungen zur Konfigurationsdatei

host erde {
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 Clients eingetragen (host hostname, hier erde) 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 Client, dessen Netzwerkkarte die MAC-Adresse 00:00:45:12:EE:F4 hat, die IP-Adresse 192.168.1.21 sowie der Rechnername erde zugewiesen. Als Hardware-Typ kommt 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.

27.3.2. Besonderheiten bei SUSE LINUX

Aus Sicherheitsgründen enthält bei SUSE LINUX der ISC DHCP-Server den „non-root/chroot“-Patch von AriEdelkind. Damit kann der dhcpd unter der Benutzerkennung nobody und in einer „chroot“-Umgebung (/var/lib/dhcp) laufen. Die Konfigurationsdatei dhcpd.conf muss dafür in /var/lib/dhcp/etc liegen; sie wird vom Init-Skript beim Start automatisch dorthin kopiert.

Dieses Verhalten lässt sich über Einträge in der Datei /etc/sysconfig/dhcpd steuern. Um den dhcpd 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 müssen 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 protokollieren kann, auch wenn der Syslog-Daemon neu gestartet wird, muss zu der Variablen SYSLOGD_PARAMS in /etc/sysconfig/syslog der Parameter -a /var/lib/dhcp/dev/log hinzugefügt werden.


SUSE LINUX Administrationshandbuch 9.3