Das Dynamic Host Configuration Protocol (DHCP) dient dazu, einem Client-Rechner die Netzwerkparameter in einem TCP/IP-Netzwerk schon beim Boot-Vorgang zu übermitteln (IP-Adresse, Domainname, Routing, DNS-Server u.s.w.).
Oft hat die Einrichtung eines DHCP-Servers schon in einem sehr kleinen Netzwerk großen Nutzwert, gerade wenn z.B. ein Notebook in mehreren Netzen eingesetzt werden soll (z.B. Firma und zu Hause).
Dieser Artikel soll die Grundeinrichtung des DHCP-Dienstes auf einem Linux Server vorstellen.
Beim Booten kennt ein Rechner nur die MAC-Adresse seiner Netzwerkkarte. Mit dieser weltweit eindeutigen MAC-Adresse startet der Rechner eine Rundfrage (Broadcast) im Netz, mit der Bitte, ihm eine Netzwerkkonfiguration zuzuteilen.
Der DHCP-Server wartet auf solche Rundfragen und übermittelt die benötigten Daten. Desweiteren merkt sich der Server die MAC-Adresse des Rechners und die zugeteilte IP-Adresse (dhcp.leases).
Die zugeteilte IP-Adresse wird für eine bestimmte Zeit reserviert (Lease Time). Der Rechner muss in Intervallen seine zugeteilte Adresse bei dem Server erneuern (renewing). Wenn das renewing nicht funktioniert, fragt der Rechner etwas später alle Server nach seiner Adresse (rebinding). Bekommt er seine Adresse nicht erneuert, beendet der Rechner seine Netzwerkdienste, um von vorn mit dem DHCP-Protokoll zu beginnen.
Es gibt zwei Möglichkeiten, die IP-Adressen dem anfragenden Rechner zuzuteilen:
a) dynamisch aus einem Adresspool (Ein zusammenhängender Bereich von IP-Adressen) oder
b) fest aufgrund der eindeutigen MAC-Adresse.
Der gängige Linux DHCP Server kommt von ISC,
zur Zeit in der DHCP Distribution 3.0 (Current Version 3.0p1). Das
Testsystem, auf dem das hier beschriebene Netzwerk eingerichtet wurde, basiert auf der SuSE Distribution 8.1, welche die DHCP-Pakete bereits enthält. Mit dem Befehl
rpm -q dhcp-server
kann überprüft werden, ob das Paket installiert ist.
Die zentrale Konfigurationsdatei dhcpd.conf befindet sich bei SuSE im Verzeichnis /etc und kann mit jedem Texteditor angepasst werden. Die folgenden Auszüge aus einer dhcpd.conf beziehen sich auf ein Klasse-C TCP/IP-Netzwerk mit der privaten Netzadresse 192.168.1.0, einer Subnet-Mask von 255.255.255.0 und der DNS-Domain firma.de.
Teil 1 - Die allgemeinen Einstellungen
#Allgemeine Infos zum Netz
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
#Der Standard-Gateway
option routers 192.168.1.1;
#Information zur Domain
option domain-name "firma.de";
option domain-name-servers 192.168.1.1;
#Der WINS-Server
option netbios-name-servers 192.168.1.1;
#Einstellungen für die Lease Time
default-lease-time 600;
max-lease-time 7200;
#diese Zeile muss auskommentiert werden, wenn der Server
#nicht der Primäre DHCP-Server des Netzes ist
authoritative;
#Kein Abgleich mit DNS-Server durchführen
ddns-update-style none;
Nun fehlt nur noch die Konfiguration der Adressen, die der DHCP-Server an die Clients vergeben darf. Wie bereits erwähnt, gibt es 2 Möglichkeiten die Adressen zuzuteilen. Beide Möglichkeiten können einzeln oder in Kombination verwendet werden.
Teil 2a - Die dynamische Adressvergabe
# Adresspool - Bereich 192.168.1.101 bis 192.168.1.199
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.101 192.168.1.199;
}
Teil 2b - Feste Adressvergabe aufgrund der MAC-Adresse
# Der Client mit der angegebenen MAC-Adresse bekommt die IP 192.168.1.101
host test {
hardware ethernet 00:40:F6:B4:DE:F8;
fixed-address 192.168.1.101;
}
Damit ist die Konfiguration eines einfachen DHCP-Servers bereits abgeschlossen. Unter SuSE wird der DHCP-Daemon wie folgt gestartet:
/etc/init.d/dhcpd start
Erhält man beim Start eine Fehlermeldung, dass die Datenbank dhcpd.leases defekt oder nicht vorhanden ist, muss die Datenbank mit dem folgenden Befehl initialisiert und der DHCP-Daemon danach erneut gestartet werden.
touch /var/state/dhcp/dhcpd.leases
Nun kann man an einem Client die DHCP-Funktion testen. Auf Linux-Systemen muss ein entsprechender DHCP-Client installiert und konfiguriert werden, Windows-Systeme sind von Haus aus für DHCP vorkonfiguriert.
Beim Booten des Clients sollte die gewünschte Adresse und alle Parameter zugeteilt werden. Kontrollieren kann man das unter Linux mit dem Befehl ifconfig und unter Windows mit
ipconfig /all.
Auch wenn die obige Konfiguration für den Betrieb eines stabilden DHCP-Servers völlig ausreicht, kommt schnell der Wunsch nach weiteren Möglichkeiten auf.
Zum Beispiel soll ein DNS-Server automatisch über die vergebenen IP-Adressen informiert werden oder man möchte aus icherheitsgründen
mit einem zweiten Server ein Failover-Lösung implementieren. Diese erweiterten Möglichkeiten werden wir in Kürze in separaten Artikeln besprechen.
Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer