Wie die meisten Linux-Dienste, so hat auch der DHCP-Server eine zentrale Konfigurationsdatei, in diesem Fall die Datei /etc/dhcpd.conf. Diese Datei muß selbst angelegt werden, allerdings wird in den meisten Distributionen eine Beispieldatei in /usr/share/doc/packages/dhcp/dhcpd.conf beigelegt, die sehr gut kommentiert ist und als Einstieg sehr nützlich sein kann.

Eine einfache Konfigurationsdatei könnte folgendermaßen aussehen:

  # Identifikation des DHCP-Servers:
  server-identifier marvin.mydomain.xy;

  # Globale Einstellungen, die für alle gelten:
  option domain-name "mydomain.xy";
  option domain-name-servers 192.168.100.5, 192.168.100.200;
  option routers 192.168.100.5;
  option subnet-mask 255.255.255.0;
  
  # Die Rechner, denen dynamische IP-Adressen vergeben werden sollen:
  subnet 192.168.100.0 netmask 255.255.255.0 {
    range 192.168.100.100 192.168.100.200;
    default-lease-time 3600;
    max-lease-time 4000;
    get-lease-hostnames on;
  }

  # Die Rechner mit festen IP-Adressen:
  group {
    use-host-decl-names on;
    
    host golem {
      hardware ethernet 00:A0:24:14:82:4A;
      fixed-address 192.168.100.5;
      option routers 123.45.67.89;
    }

    host hal {
      hardware ethernet 00:A0:24:14:12:9C;
      fixed-address 192.168.100.200;
    }

  }
    

Die Syntax der Konfigurationsdatei ist sehr logisch. Einzelne Anweisungszeilen werden durch ein Semikolon (;) abgeschlossen. Alle Angaben, die alleine für sich stehen, gelten für alle Anfragen gleich. Verschiedene logische Blöcke können durch Klammerung mit geschweiften Klammern erzielt werden. Dazu zählen insbesondere die Blöcke:subnet Adresse netmask Netzmaske {…}Dieser Block bezeichnet ein Subnetz mit dynamischer Adressvergabe. Alles, was in dem Klammernpaar eingefügt ist, gilt für alle Hosts des entsprechenden Subnetzes. Das heißt, es gilt auch für die Hosts, deren Adresse sich innerhalb des Subnetzes befindet, aber deren Definition etwa als statische Adresse nicht in der entsprechenden subnet-Klammerung steht. Jede DHCP-Konfigurationsdatei muß mindestens eine Subnetz-Definition vorweisen.group {…}Mit dieser Blockbildung können beliebige Gruppen erstellt werden, die bestimmte gemeinsame Eigenschaften haben. In unserem Beispiel oben haben die beiden Rechner golem und hal die gemeinsame Einstellung use-host-decl-names on;host Hostname {…}Ein einzelner Rechner, für den bestimmte Anweisungen gelten.

Wie aus dem obigen Beispiel zu entnehmen ist, können die verschiedenen Blöcke auch verschachtelt werden, so haben wir dort zwei host-Blöcke in einer group zusammengefasst.

Wenn Anweisungen mehrfach vorkommen, so gelten immer die innersten. So kann z.B. eine Angabe global festlegen, welcher Router verwendet werden soll. Hat jetzt ein einzelner Rechner eine andere Angabe, so überschreibt die innere Angabe (die des einzelnen Rechners) die äußere (die globale). Die einzelnen Angaben (in der Reihenfolge ihres Auftretens) haben folgende Bedeutung:server-identifier DNS-Name;Der Name, mit dem sich der DHCP-Server selbst bei einer Client-Anfrage meldet. Diese Angabe ist nur dann notwendig, wenn der DHCP-Server mehrere IP-Adressen auf einer Netzwerkkarte vereint. Ansonsten würde durch eine Nameserverabfrage der entsprechende Name ermittelt.option domain-name Zeichenkette;Die Zeichenkette beinhaltet (in Anführungszeichen) den Domain-Namen.option domain-name-servers Liste von IP-Adressen;Eine durch Kommas getrennte Liste von IP-Adressen der zu verwendeten DNS-Nameserver. Sollen für Windows-Clients auch noch NetBIOS-Nameserver angegeben werden, so kann das mit option netbios-name-servers geschehen.option routers Liste von IP-Adressen;Eine durch Kommas getrennte Liste von Routern (Gateways), die verwendet werden sollen. In der Regel steht hier nur eine Adresse.option subnet-mask Netzmaske;Die zu verwendende Netzmaske.range Startadresse Endadresse;Der Adressbereich, der für die dynamische Vergabe verwendet werden darf.default-lease-time Sekunden;Die Zeitangabe gibt die Anzahl von Sekunden an, nachdem sich ein Client wieder melden soll, um zu zeigen, dass er die zugewiesene Adresse noch benötigt. Nur für dynamische Adressen gültig.max-lease-time Sekunden;Nach Ablauf dieser angegebenen Zeit, ohne dass sich der Client erneut gemeldet hat, geht der DHCP-Server davon aus, dass der Client ausgeschaltet ist, die Adresse also nicht mehr benötigt wird. Ab diesem Zeitraum darf der Server die Adresse einem anderen Client bei entsprechender Nachfrage zuordnen. Nur für dynamische Adressen gültig.get-lease-hostnames on oder off;Ist dieser Wert auf on gesetzt, so wird der Rechnername, der dem Client zurückgeschickt wird, durch einen DNS-Aufruf ermittelt. Ansonsten besteht die Möglichkeit durch die Angabe von option hostname Zeichenkette; einen festen Namen zuzuweisen (wenn z.B. kein Nameserver zur Verfügung steht. Nur für dynamische Adressen gültig.use-host-decl-names on oder off;Wenn dieser Wert auf on steht, so wird keine DNS-Abfrage gemacht, sondern der unter host {…} angegebene Name an den Client zurückgegeben. Nur innerhalb der host-Klammerung gültig.hardware Hardwaretyp MAC-Adresse;Mit diesem Wert kann bei statischer Adressvergabe angeordnet werden, dass eine bestimmte Host-Klammerung nur für Rechner mit der angegebenen – weltweit einmaligen – Mac-Adresse gilt. Der Wert des Hardwaretyps ist entweder ethernet oder token-ring. Nur innerhalb der host-Klammerung gültig.fixed-address IP-Adresse;Die statische Adresse, die einem bestimmten Host zugeordnet werden soll. Nur innerhalb der host-Klammerung gültig.Der DHCP-Daemon kennt noch einige weitere Fähigkeiten, die sich insbesondere um die Vergabe von Bootinformation für plattenlose Workstations drehen. Die Handbuchseite (man dhcpd.conf) ist alleine um die 2000 Zeilen lang. Für den Aufbau eines stabilen DHCP-Servers reichen aber die genannten Parameter völlig aus.