Server-Blog Ubuntu Server

Thema DHCP: Dynamische Hostkonfiguration mit ISC-DHCP-Server

Abschnitt 1: DHCP-Server Installieren und Konfigurieren

Installation des ISC-DHCP-Servers

Der **ISC-DHCP-SERVER** ist sehr schlank und tut genau, was er soll. Darum sind auch nur zwei Dateien zu erstellen bzw. zu bearbeiten, dann darf er schon arbeiten.

apt install isc-dhcp-server -y

Schnittstelle identifizieren

Wir brauchen zuerst wieder die Schnittstellen, auf denen wir den DHCP-Server betreiben wollen. Auf der WAN-Schnittstelle macht es jedenfalls keinen Sinn. Die Abfrage dazu erfolgt wieder mit:

ip a

Dort notieren Sie sich die Schnittstellen (z.B. `ens19`, `ens20`, `enp2s0` usw.).


Abschnitt 2: Konfiguration der DHCP-Optionen (`/etc/dhcp/dhcpd.conf`)

Öffnen Sie die zentrale Konfigurationsdatei:

nano /etc/dhcp/dhcpd.conf

Die Datei enthält eine Menge Kommentare, die als Hilfe dienen sollen. Wir aktivieren hier erstmal nur die grundlegenden globalen Optionen:

  • `default-lease-time 57600;` (16 Stunden)
  • `max-lease-time 86400;` (24 Stunden)
  • `ddns-update-style none;` (Keine dynamische DNS-Aktualisierung)
# Ausschnitt aus dhcpd.conf

default-lease-time 57600;
max-lease-time 86400;

# The ddns-updates-style parameter controls whether or not the server will
# attempt to do a DNS update when a lease is confirmed.
ddns-update-style none;

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
#authoritative; 

[...] // Viele Kommentare und Beispiele

Subnetz-Definition hinzufügen

Unsere Einstellungen für unser internes Netzwerk tragen wir am Schluss ein (Beispiel für `192.168.0.0/24`):

subnet 192.168.0.0 netmask 255.255.255.0 {
    interface ens19; // Optional, aber nützlich zur Klarstellung
    range 192.168.0.20 192.168.0.254;
    option domain-name-servers 192.168.0.1;
    option domain-name "domain.com";
    option domain-search "domain.com";
    option broadcast-address 192.168.0.255;
    option subnet-mask 255.255.255.0;
    option routers 192.168.0.1;
}

**Tipp:** Vergeben Sie die Adressen erst ab `192.168.0.20`. Somit haben Sie noch Platz für weitere Server mit statischen IPs (z.B. bis .19), die nicht per DHCP angebunden werden.

Dann speichern und schließen Sie die Datei:

STRG + O
STRG + X

Abschnitt 3: Schnittstelle zuweisen (`/etc/default/isc-dhcp-server`)

Nun zur zweiten Datei, die sagt, auf welcher Schnittstelle der DHCP-Server lauschen soll.

nano /etc/default/isc-dhcp-server

Suchen Sie die Zeile `INTERFACESv4` und tragen Sie dort die Schnittstelle ein, die Sie zuvor mit `ip a` identifiziert haben (hier exemplarisch `ens19`):

# [...]

# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
#       Separate multiple interfaces with spaces, e.g. "eth0 eth1".
INTERFACESv4="ens19"
INTERFACESv6=""

Dann speichern und schließen und den DHCP-Server neu starten.

STRG + O
STRG + X
systemctl restart isc-dhcp-server.service

Statusprüfung

Nun können wir den Status vom Dienst anzeigen und DHCP selbst befragen, ob alles in Ordnung ist.

systemctl status isc-dhcp-server.service

Die Ausgabe sollte `Active: active (running)` zeigen und die verwendete Schnittstelle auflisten:

[...]
 Active: active (running) since Fri 2025-07-11 16:35:58 CEST; 4s ago
 [...]
 └─651716 dhcpd -user dhcpd -group dhcpd -f -4 -pf /run/dhcp-server/dhcpd.pid -cf /etc/dhcp/dhcpd.conf ens19

Eine weitere Prüfung der Konfigurationsdatei mit der Schnittstelle:

root@server01:~# dhcpd -t ens19

Internet Systems Consortium DHCP Server 4.4.3-P1
Copyright 2004-2022 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
Config file: /etc/dhcp/dhcpd.conf
Database file: /var/lib/dhcp/dhcpd.leases
PID file: /var/run/dhcpd.pid