17.3 DHCP
Der DHCP-Service [Fn. DHCP bedeutet Dynamic Host Configuration Protocol und ist der Nachfolger des BOOTP-Protokolls.] dient zur automatischen Konfiguration von Netzwerksystemen. DHCP ist Client/Server-basiert und funktioniert nach folgendem Schema:
Ein Netzwerkrechner bootet und kennt zum Zeitpunkt X nur die Hardwareadresse seiner Netzwerkschnittstelle (auch MAC-Adresse genannt). Da er als DHCP-Client konfiguriert ist, sendet er eine Broadcast-Nachricht an alle Hosts des Subnetzwerks. Diese Nachricht, die abstrakt gesehen den Inhalt »Ich bitte darum, dass mir irgendjemand eine IP-Adresse gibt« hat, wird vom lokalen DHCP-Server empfangen. Dieser sendet (adressiert an die MAC-Adresse des DHCP-Clients) die entsprechenden Informationen an den Client. Dabei handelt es sich natürlich hauptsächlich um die jeweilige IP-Adresse, aber auch einige weitere Informationen können zur automatischen Konfiguration des DHCP-Clients versendet werden, zum Beispiel die Netzmaske oder das Standard-Gateway.
Da DHCP Client/Server-basiert arbeitet, werden wir uns sowohl mit der Konfiguration des Servers als auch mit der recht einfachen Konfiguration eines Clients beschäftigen.
17.3.1 dhcpd
Kommen wir zunächst zur Server-Software. Normalerweise setzt man hierfür den dhcpd ein, der zum Standardumfang von Unix-Derivaten und Linux-Distributionen gehört. Die Konfigurationsdatei des Dienstes heißt dhcpd.conf und befindet sich meistens in /etc.
dhcpd.conf
In der dhcpd.conf legt man nun erst einmal einen Subnet-Block an. Dazu verwendet man das Keyword subnet, gefolgt von der Netzadresse und der Netzmaske, die man via netmask angibt. In geschweiften Klammern werden dann die genaueren Eigenschaften des Subnetz-Blocks definiert.
Netz(maske)
In diesem Beispiel vergeben wir IP-Adressen des Netzes 192.168.1.0 mit der Netzmaske 255.255.255.0. Es gehören also alle IP-Adressen von 192.168.1.1 bis 192.168.1.255 zu diesem Subnetz.
Range
Allerdings sollten in den meisten Fällen nicht alle IP-Adressen des gesamten Subnetzes vergeben werden. Schließlich verwendet der DHCP-Server selbst oft eine Adresse, die aus diesem Adressbereich stammt, und zudem sind oftmals noch einige Server und/oder Gateways im Subnetz mit einer festen IP-Adresse platziert. Um eventuelle Probleme mit doppelt vergebenen IP-Adressen zu vermeiden, gibt es das Keyword range. Ihm folgen die Anfangs- und Endadresse des Adressbereiches, den man durch DHCP zuweisen will – in unserem Fall also alle Adressen von 192.168.1.50 bis 192.168.1.99.
Vergabezeit
Die Zeit, die ein Host über eine Adresse verfügen soll, wird mit dem Schlüsselwort default-lease-time in Sekunden angegeben. Die Maximalzeit, wie lange eine Adresse vergeben werden darf, wird in derselben Zeiteinheit mit max-lease-time angegeben. Spätestens nach Ablauf dieser Zeitspanne muss der Client eine neue IP-Adresse anfordern.
Gateway, Broadcast, Netmask
Das Standard-Gateway für die DHCP-Clients im Netzwerk wird mit der Option routers spezifiziert, die Broadcast-Adresse mit broadcast-address und die Subnetz-Maske mit subnet-mask.
DNS, WINS, Domain
Es folgt die Angabe eines DNS-Servers, den die Clients verwenden sollen, und – das ist für Windows-Clients wichtig – der WINS-Server des Netzes. Die Standarddomain der Hosts kann durch die Option domain-name angegeben werden.
Listing 17.9 Beispiel einer dhcpd.conf
subnet 192.168.1.0 netmask 255.255.255.0 {
# zu vergebender Adressbereich
range 192.168.1.50 192.168.1.99;
# Vergebe-Zeiten für Adressen
default-lease-time 86400;
max-lease-time 86400;
# Standardgateway
option routers 192.168.1.1;
option broadcast-address 192.168.1.255;
option subnet-mask 255.255.255.0;
# DNS-Server
option domain-name-servers 192.168.1.11;
# Domainname
option domain-name "example.org";
# WINS-Server
option netbios-name-servers 192.168.1.100;
}
Adressreservierung
Nun sollen bestimmte Hosts, etwa Serversysteme [Fn. Für Serversysteme sollten eigentlich keine dynamischen Adressen verwendet werden, um deren Verfügbarkeit auch bei einem Ausfall des DHCP-Systems zu gewährleisten und ein Durcheinander zu vermeiden.], immer dieselbe IP-Adresse bekommen. Dazu legt man im jeweiligen Subnetz-Bereich einen Unterbereich über das Keyword host, gefolgt vom entsprechenden Hostnamen, an.
Listing 17.10 Explizite Adressvergabe
host Fileserver {
hardware ethernet 08:00:2b:4c:59:23;
fixed-address 192.168.1.222;
}
DHCP identifiziert einzelne Hosts über die bereits erwähnte MAC-Adresse der Netzwerkkarte. Diese wird über hardware ethernet für Ethernet-Netze angegeben und kann durch ifconfig beim Client erfragt werden. Mit fixed-address verpasst man dem System dann eine »statische« IP-Adresse.
Start
Gestartet wird der dhcpd direkt über /usr/sbin/dhcpd oder über ein entsprechendes Init-Skript.
17.3.2 Client-Konfiguration
Nun müssen die Clients nur noch darauf konfiguriert werden, einen DHCP-Server zu verwenden. Dies geschieht beim Bootvorgang (oder auch für die aktuelle Laufzeit temporär) mit dem allseits beliebten Tool ifconfig.
Unter Linux wird generell während der Systeminstallation abgefragt, wie eine Netzwerkkarte verwendet werden soll. Mit Tools wie netconfig oder yast2 kann man dies aber auch sehr komfortabel nachholen. Wem dieser Luxus nicht vergönnt ist, der kann noch immer auf dhclient zurückgreifen. Dieses Tool konfiguriert einen DHCP-Client und gehört zum Standardumfang der meisten Distributionen. Nach dem Start der Software versucht sie automatisch, die Netzwerk-Interfaces zu konfigurieren, indem DHCP-Server periodisch angesprochen werden. Besondere Einstellungen muss man anschließend nicht mehr vornehmen. Wer allerdings ganz bestimmte Vorstellungen davon hat, wie sein DHCP-Client vorgehen soll, der kann dhclient über /etc/dhclient.conf konfigurieren. Die gleichnamige Manpage enthält weitere Details.
[»]Bedenken Sie aber: dhclient konfiguriert standardmäßig alle Devices automatisch. Möchte man z. B. nur eth0 via DHCP konfigurieren, so kann man den Schnittstellennamen als Parameter an dhclient übergeben.
Auf einigen Systemen wird anstelle der Programmdatei dhclient das Programm dhcp-client verwendet. Die Verwendung ist ebenfalls sehr einfach:
Listing 17.11 eth1 mittels dhcp-client konfigurieren lassen
# dhcp-client -i eth1
Unter OpenBSD erstellt man einfach die Datei /etc/hostname.XXX (wobei XXX die Schnittstellenbezeichnung repräsentiert (also etwa rl0 oder ne3)) und trägt das Keyword dhcp ein, gefolgt von optionalen Parametern etwa zur Medium-Konfiguration.
Ihr Kommentar
Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.