DHCP-Server

Ein DHCP-Server (DHCP = Dynamic Host Configuration Protocol) in einem Netzwerk teilt den anderen Rechnern die Angaben mit, die diese für den Betrieb im Netzwerk benötigen, also z.B. die IP-Adressen, die Netzmaske, den Domainnamen, die IP-Adressen des Gateways, der Nameserver und des WINS-Servers.

Der Vorteil eines DHCP-Servers liegt darin, dass die Rechner im Netzwerk diese Angaben von einem zentralen Server bekommen.

Ändern sich diese Daten, können sie neu vom Server geholt werden (spätestens beim Reboot), ohne dass sie auf jedem Rechner einzeln neu eingegeben werden müssen. Das ist insbesondere bei größeren Netzwerken ein entscheidender Vorteil.

Die Rechner im lokalen Netz, die sich die Netzwerkangaben vom DHCP-Server holen, können sich jedoch nur solange austauschen, wie auch der DHCP-Server läuft. Man wird deshalb je nach Art, Einrichtung (Redundanz) und Größe des lokalen Netzes überlegen, bei welchen Rechnern man die Netzwerkangaben fest einträgt und bei welchen nicht.

Insbesondere für transportable Rechner wie Laptops, die an verschiedenen Netzwerken angeschlossen werden, ist ein DHCP-Server im lokalen Netz von Vorteil. Durch die entsprechende Konfiguration des DHCP-Servers können solchen mobilen Rechnern jedoch ebenfalls feste IP-Adressen zugeordnet werden.


   Installation und Einrichtung des DHCP-Servers

  • Die Einrichtung des DCHP-Servers soll hier anhand eines Beispiels eines Servers beschrieben werden, der zwei Netzwerk-Interfaces mit den IP-Adressen 192.168.0.1 (eth0) und 192.168.1.1 (eth1) für die beiden Subnets 192.168.0.0/24 und 192.168.1.0/24 hat (s. Bild 1). Die Konfiguration kann leicht an ein Netzwerk, das aus nur einem Subnet besteht, angepasst werden. Das Interface eth2 ist z.B. für den Anschluss eines DSL-Routers vorgesehen und soll nicht vom DHCP-Server angesprochen werden.

    Linux-Server

    Bild 1: Linux-Server mit DHCP-Server


  • Mit YaST das Paket "dhcp-server (n)" installieren.

  • Steuerung des DHCP-Servers:

    • rcdhcp start (Start des DHCP-Servers)
    • rcdhcp stop (Stop des DHCP-Servers)
    • rcdhcp restart (Neustart des DHCP-Servers)
    • rcdhcp status (Status des DHCP-Servers)
  • In der Datei /etc/sysconfig/dhcpd für die Variable "DHCP_INTERFACE" die Netzwerk-Interfaces eintragen, an denen der DHCP-Server "lauschen" soll, also z.B. "eth0 eth1".

  • Der DHCP-Server kann auch mit dem Kommando "dhcpd eth0 eth1" gestartet werden. Mit dem Kommando "dhcpd -d eth0 eth1" werden zusätzlich Debug-Informationen ausgegeben.

  • Mit dem Kommando "insserv dhcpd" wird der DHCP-Server beim nächsten Booten des Rechners automatisch gestartet.

  • Die einzige Konfigurationsdatei des DHCP-Servers ist die Datei /etc/dhcpd.conf. Wenn sie geändert wird, muss der Server neu gestartet werden, damit die Änderungen wirksam werden.

       # File /etc/dhcpd.conf
    
       # Abschnitt Global (für alle Abschnitte gültig)
       server-identifier 192.168.0.1;
       option domain-name "local.netw";
       default-lease-time 600; # zehn Minuten
       max-lease-time 3600;    # eine Stunde
       ddns-update-style none;
    
       # Abschnitt für Subnet 0 (an eth0)
       subnet 192.168.0.0 netmask 255.255.255.0 {
         range 192.168.0.51 192.168.0.60;
         option broadcast-address 192.168.0.255;
         option subnet-mask 255.255.255.0;
         option domain-name-servers 192.168.0.1;
         option routers 192.168.0.1;
         option netbios-name-servers 192.168.0.1;
    
         host win1pc {
           hardware ethernet 00:12:34:56:78:9A; # MAC-Adresse
           fixed-address 192.168.0.90; # feste IP-Adresse
           default-lease-time 172800; # zwei Tage
           max-lease-time 604800; # eine Woche
         }
       }
    
       # Abschnitt für Subnet 1 (an eth1)
       subnet 192.168.1.0 netmask 255.255.255.0 {
         range 192.168.1.61 192.168.1.70;
         option broadcast-address 192.168.1.255;
         option subnet-mask 255.255.255.0;
         option domain-name-servers 192.168.1.1;
         option routers 192.168.1.1;
         option netbios-name-servers 192.168.1.1;
    
         host win2pc {
           hardware ethernet 00:22:44:66:88:AA; # MAC-Adresse
           fixed-address 192.168.1.91; # feste IP-Adresse
           default-lease-time 172800; # zwei Tage
           max-lease-time 604800; # eine Woche
         }
       }
    • Im ersten Abschnitt sind die globalen Parameter aufgeführt, die für alle weiteren Abschnitte gelten. Danach folgen die Abschnitte für das Subnet 0 und die Hosts im Subnet 0, die feste IP-Adressen erhalten sollen. Anschließend erfolgen die Angaben für das Subnet 1 in gleicher Weise.

    • Der Parameter "server-identifier" muss vorhanden sein, wenn der Server mehr als eine Netzwerkkarte hat. Als Parameter soll die IP-Adresse der ersten Netzwerkkarte des Servers eingetragen werden.

    • Die Angaben "domain-name", "broadcast-address", "subnet-mask", "domain-name-servers", "routers" und "netbios-name-servers" werden an die DHCP-Clients (also an die Rechner im Netzwerk) übermittelt.

    • Für den Router (= Gateway) ist die feste IP-Adresse des Linux-Servers angegeben, ebenso für den Nameserver und den WINS-Server, die ja auf dem Linux-Server laufen.

    • Die "default-lease-time" ist der Standardwert, die "max-lease-time" der Maximalwert für die Gültigkeit der übermittelten IP-Adressen (in Sekunden). Welche Werte sinnvoll sind, hängt vom jeweiligen Netzwerk ab, also davon, ob ausreichend IP-Adressen für alle Rechner vorhanden sind und wie oft Rechner gewechselt werden. Die Zeitspanne reicht von Minuten bis hin zu Wochen oder Monaten.

    • In den Abschnitten "subnet" befinden sich die spezifischen Angaben für die Subnets. Der Parameter "range" gibt einen Bereich von IP-Adressen vor, die den Hosts dynamisch zugeordnet werden können. Wenn die Rechner im Netz auch mit Namen angesprochen werden sollen, müssen alle möglichen Namen dieses Bereichs natürlich auch in den Zone-Dateien des Nameservers aufgeführt werden.

    • In den Abschnitten "host" werden einzelnen Rechnern feste IP-Adressen zugeordnet (die sich natürlich nicht in dem "range"-Bereich befinden dürfen). Zur Identifikation der Rechner müssen unter den Parametern "hardware ethernet" die Hardwareadressen der Netzwerkkarten (MAC-Adressen) angegeben werden. Diese Adressen kann man unter Windows mit dem Kommando "ipconfig /all", unter Linux mit dem Kommando "ifconfig" ermitteln.

    • Sowohl unter Linux als auch unter Windows kann man die Adressen der Netzwerkkarten für die anderen Rechner des Netzes mit dem Kommando "arp -a" auflisten. Wenn der gesuchte Rechner in der Liste fehlt, genügt es, ihn "anzupingen", damit er in die Liste aufgenommen wird. Ein Ping-Rundruf ergibt dann eine vollständige Liste.

  • Um die Konfiguration zu testen, sollte man die Lease-Zeiten auf einen kurzen Wert von wenigen Minuten setzen und dabei die Logdatei "/var/log/messages" auf dem Linux-Server beobachten. Sind die IP-Adressen erst einmal erfolgreich vergeben, machen sich eventuelle Fehler bei großen Lease-Zeiten erst sehr spät bemerkbar.


   Konfiguration der Clients

Die anderen Rechner im Netzwerk sollen sich nun die Netzwerkangaben vom DHCP-Server holen.

Bei Windows-Rechnern kann man unter "Systemsteuerung / Netzwerkverbindungen / LAN-Verbindung / Eigenschaften / Internetprotokoll / Eigenschaften" die Einstellung "IP-Adresse automatisch beziehen" vornehmen.

Mit dem Kommando "ipconfig /all" werden die Daten, die der DHCP-Server dem Windows-PC übermittelt, direkt angezeigt. "ipconfig /help" zeigt die Kommandooptionen, um die Netzwerkdaten freizugeben bzw. zu aktualisieren. Diese Vorgänge kann man auf dem Linux-Server in der Logdatei /var/log/messages (mit dem Kommando "tail -f /var/log/messages") gut verfolgen.

Auf Linux-Rechnern kann man mit YaST unter "Netzwerkgeräte / Netzwerkkarte" die "Automatische Adressenkonfiguration" für ein Interface auswählen.

Wenn man den Linux-Rechner neu startet, kann man im Bootlog verfolgen, wie sich der Linux-DHCP-Client mit dem Linux-DHCP-Server "unterhält".


   Links

Internet Software Consortium ... DHCP ... Server, Client, Relay Agent


   Dank

... an M., der mich auf die DHCP-Möglichkeiten ("I-Tüpfelchen") hingewiesen und mit seiner Konfigurationsdatei zu dieser Seite beigetragen hat. (22.05.2002)

Nach oben

© 1996-2022 Alfred Fokken