43.3. Der DHCP-Server dhcpd

Das Herz des DHCP-Systems ist der dhcpd-Daemon. Dieser Server least Adressen und überwacht deren Nutzung gemäß der Vorgaben in der Konfigurationsdatei /etc/dhcpd.conf. Über die dort definierten Parameter und Werte stehen dem Systemadministrator eine Vielzahl von Möglichkeiten zur Verfügung, das Verhalten des Programms anforderungsgemäß zu beeinflussen. Sehen Sie sich die einfache Beispieldatei /etc/dhcpd.conf in Beispiel 43.1, „Die Konfigurationsdatei "/etc/dhcpd.conf"“ an.

Beispiel 43.1. Die Konfigurationsdatei "/etc/dhcpd.conf"

default-lease-time 600;         # 10 minutes
max-lease-time 7200;            # 2  hours

option domain-name "cosmos.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 der DHCP-Server im Netzwerk IP-Adressen zuweisen kann. Bitte achten Sie insbesondere auf die Semikolons am Ende jeder Zeile, ohne die dhcpd nicht startet.

Wie Sie sehen, lässt sich obige Beispieldatei in drei Abschnitte unterteilen. Im ersten Abschnitt wird definiert, wie viele Sekunden eine IP-Adresse standardmäßig an einen anfragenden Client geleast wird, bevor dieser eine Verlängerung anfordern sollte (default-lease-time). Hier wird auch festgelegt, wie lange ein Computer maximal eine vom DHCP-Server vergebene IP-Adresse behalten darf, ohne für diese eine Verlängerung anfordern zu müssen (max-lease-time).

Im zweiten Abschnitt werden einige grundsätzliche Netzwerkparameter global festgelegt:

Im letzten Abschnitt werden ein Netzwerk und eine Subnetzmaske angegeben. Abschließend muss noch ein Adressbereich gewählt werden, aus dem der DHCP-Daemon IP-Adressen an anfragende Clients vergeben darf. In diesem Beispiel können Clients Adressen zwischen 192.168.1.10 und 192.168.1.20 sowie zwischen 192.168.1.100 und 192.168.1.200 zugewiesen werden.

Nach dem Bearbeiten dieser wenigen Zeilen sollten Sie bereits in der Lage sein, den DHCP-Daemon mit dem Befehl rcdhcpd start zu aktivieren. Der DHCP-Daemon ist sofort einsatzbereit. Mit dem Befehl rcdhcpd check-syntax können Sie eine kurze Überprüfung der Konfigurationsdatei vornehmen lassen. Sollte wider Erwarten ein Problem mit der Konfiguration auftreten (z. B. der Server fällt aus oder beim Starten wird nicht done zurückgegeben), finden Sie in der zentralen Systemprotokolldatei/var/log/messages meist ebenso Informationen dazu wie auf Konsole 10 (Strg-Alt-F10).

Auf einem SUSE Linux-Standardsystem wird der DHCP-Daemon aus Sicherheitsgründen in einer chroot-Umgebung gestartet. Damit der Daemon die Konfigurationsdateien finden kann, müssen diese in die chroot-Umgebung kopiert werden. In der Regel müssen Sie dazu nur den Befehl rcdhcpd start eingeben, um die Dateien automatisch zu kopieren.

43.3.1. Clients mit statischen IP-Adressen

Wie eingangs bereits erwähnt, kann mit DHCP einem bestimmten Client bei jeder Anforderung eine vordefinierte statische Adresse zugewiesen werden. Solche expliziten Adresszuweisungen haben Vorrang vor dynamischen Adressen aus dem Pool. Im Gegensatz zu den dynamischen verfallen die statischen Adressinformationen, z. B. wenn nicht mehr genügend freie Adressen zur Verfügung stehen und deshalb eine Neuverteilung unter den Clients erforderlich ist.

Zur Identifizierung eines mit einer statischen Adresse konfigurierten Clients verwendet dhcpd die Hardware-Adresse. Dies ist eine global eindeutige, fest definierte Zahl aus sechs Oktettpaaren, über die jedes Netzwerkgerät verfügt, z. B. 00:00:45:12:EE:F4. Werden die entsprechenden Zeilen, wie z. B. in Beispiel 43.2, „Ergänzungen zur Konfigurationsdatei“ zur Konfigurationsdatei von Beispiel 43.1, „Die Konfigurationsdatei "/etc/dhcpd.conf"“ hinzugefügt, weist der DHCP-Daemon dem entsprechenden Client unter allen Umständen immer dieselben Daten zu.

Beispiel 43.2. Ergänzungen zur Konfigurationsdatei

host earth {
hardware ethernet 00:00:45:12:EE:F4;
fixed-address 192.168.1.21;
}

Der Name des entsprechenden Clients (host Hostname, hier earth) wird in die erste Zeile und die MAC-Adresse wird in die zweite Zeile eingegeben. Auf Linux-Hosts kann diese Adresse mit dem Befehl ifstatus gefolgt vom Netzwerkgerät (z. B. eth0) ermittelt werden. Gegebenenfalls müssen Sie zuvor die Karte mit ifup eth0 aktivieren. Die Ausgabe sollte in etwa wie folgt aussehen:

link/ether 00:00:45:12:EE:F4

In vorhergehendem Beispiel wird also dem Client, dessen Netzwerkkarte die MAC-Adresse00:00:45:12:EE:F4 hat, automatisch die IP-Adresse 192.168.1.21 und der Hostname "earth" zugewiesen. Als Hardwaretyp kommt heutzutage in aller Regel ethernet zum Einsatz, wobei durchaus auch das vor allem bei IBM-Systemen häufig zu findende token-ring unterstützt wird.

43.3.2. Besonderheiten bei der SUSE Linux-Version

Aus Sicherheitsgründen enthält bei SUSE Linux der DHCP-Server von ISC den non-root/chroot-Patch von Ari Edelkind. Damit kann dhcpd unter der Benutzer-ID nobody und in einer chroot-Umgebung (/var/lib/dhcp) ausgeführt werden. Um dies zu ermöglichen, muss sich die Konfigurationsdatei dhcpd.conf im Verzeichnis /var/lib/dhcp/etc befinden. 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 die Variable DHCPD_RUN_CHROOTED in der Datei /etc/sysconfig/dhcpd auf „no“.

Damit der dhcpd auch in der chroot-Umgebung Hostnamen auflösen kann, müssen außerdem einige weitere Konfigurationsdateien kopiert werden:

  • /etc/localtime

  • /etc/host.conf

  • /etc/hosts

  • /etc/resolv.conf

Diese Dateien werden beim Starten des Init-Skripts in das Verzeichnis /var/lib/dhcp/etc/ kopiert. Diese Dateien müssen aktualisiert gehalten werden, wenn sie durch ein Skript wie/etc/ppp/ip-up dynamisch modifiziert werden. Falls in der Konfigurationsdatei anstelle von Hostnamen nur IP-Adressen verwendet werden, sind jedoch keine Probleme zu erwarten.

Wenn in Ihrer Konfiguration weitere Dateien in die chroot-Umgebung kopiert werden müssen, so können Sie diese mit der Variable DHCPD_CONF_INCLUDE_FILES in der Datei /etc/sysconfig/dhcpd angeben. Damit der dhcp-Daemon aus der chroot-Umgebung heraus auch nach einem Neustart des Syslog-Daemons weiter protokollieren kann, muss die Option "-a /var/lib/dhcp/dev/log" unter SYSLOGD_PARAMS in der Datei /etc/sysconfig/syslog hinzugefügt werden.