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:
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 Kapitel 24, Domain Name System.
option broadcast-address legt fest, welche
Broadcast-Adresse der anfragende Client 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
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).
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.
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.