Das Kernstück des DHCP-Systems ist der dhcpd-Daemon. Dieser Server least Adressen und überwacht deren Nutzung gemäß den 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 23.1, „Die Konfigurationsdatei „/etc/dhcpd.conf““ an.
Beispiel 23.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.
Die Beispieldatei lässt sich 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:
Die Zeile option domain-name
enthält die Standarddomäne des Netzwerks.
Mit dem Eintrag option domain-name-servers
können Sie bis zu drei Werte für die DNS-Server angeben, die zur Auflösung von IP-Adressen in Hostnamen (und umgekehrt) verwendet werden sollen. Idealerweise sollten Sie vor dem Einrichten von DHCP einen Namenserver auf dem Computer oder im Netzwerk konfigurieren. Dieser Namenserver sollte für jede dynamische Adresse jeweils einen Hostnamen und umgekehrt bereithalten. Weitere Informationen zum Konfigurieren eines eigenen Namenservers finden Sie in Kapitel 20, Das Domain Name System (DNS).
Die Zeile option broadcast-address
definiert die Broadcast-Adresse, die der anfragende Client verwenden soll.
Mit option routers
wird festgelegt, wohin der Server Datenpakete schicken soll, die (aufgrund der Adresse von Quell- und Zielhost sowie der Subnetzmaske) nicht im lokalen Netzwerk zugestellt werden können. Gerade bei kleineren Netzwerken ist dieser Router auch meist mit dem Internet-Gateway identisch.
Mit option subnet-mask
wird die den Clients zugewiesene Netzmaske angegeben.
Im letzten Abschnitt der Datei 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 Beispiel 23.1, „Die Konfigurationsdatei „/etc/dhcpd.conf““ können Clients Adressen zwischen 192.168.1.10
und 192.168.1.20
sowie 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 bricht mit einem Fehler ab oder gibt beim Starten nicht done
zurück), 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.
DHCP lässt sich auch verwenden, um einem bestimmten Client eine vordefinierte statische Adresse zuzuweisen. Solche expliziten Adresszuweisungen haben Vorrang vor dynamischen Adressen aus dem Pool. Im Unterschied zu den dynamischen verfallen die statischen Adressinformationen nie, 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 23.2, „Ergänzungen zur Konfigurationsdatei“ zur Konfigurationsdatei von Beispiel 23.1, „Die Konfigurationsdatei „/etc/dhcpd.conf““ hinzugefügt, weist der DHCP-Daemon dem entsprechenden Client immer dieselben Daten zu.
Beispiel 23.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 die MAC-Adresse mit dem Befehl iplink show
gefolgt vom Netzwerkgerät (z. B. eth0
) ermittelt werden. Die Ausgabe sollte in etwa wie folgt aussehen:
link/ether 00:00:45:12:EE:F4
Im vorherigen Beispiel wird also dem Client, dessen Netzwerkkarte die MAC-Adresse 00: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.
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, können Sie diese mit der Variablen DHCPD_CONF_INCLUDE_FILES
in der Datei /etc/sysconfig/dhcpd
festlegen. Damit der dhcp-Daemon aus der chroot-Umgebung heraus auch nach einem Neustart des Syslog-ng-Daemons weiter protokollieren kann, befindet sich der zusätzliche Eintrag SYSLOGD_ADDITIONAL_SOCKET_DHCP
in der Datei /etc/sysconfig/syslog
.