Eigenen DHCP-Server unter Linux installieren und betreiben
Vorwort zur Anleitung:
Diese Anleitung hat einen erhöhten Schwierigkeitsgrad.
Installation von Linux und Kenntnisse in der Befehlszeile sind vorausgesetzt.
Ein DHCP-Server (Dynamic Host Configuration Protocol) ist ein Netzwerkdienst, der automatisch IP-Adressen und andere Netzwerkkonfigurationsparameter an Geräte in einem Netzwerk zuweist. Dadurch wird die manuelle IP-Konfiguration jedes einzelnen Geräts überflüssig.
Hier sind einige der Hauptfunktionen eines DHCP-Servers:
1. IP-Adresszuweisung:
Der Server vergibt IP-Adressen aus einem definierten Adresspool an Geräte, die sich mit dem Netzwerk verbinden.
2. Lease-Management:
Die zugewiesenen IP-Adressen werden für einen bestimmten Zeitraum (Lease-Time) vergeben. Nach Ablauf dieser Zeit kann die Adresse entweder verlängert oder neu vergeben werden.
3. Bereitstellung zusätzlicher Netzwerkinformationen:
Neben der IP-Adresse kann der DHCP-Server auch Informationen wie die Subnetzmaske, das Standard-Gateway, DNS-Server-Adressen und PXE-Pfade bereitstellen.
Durch die Automatisierung dieser Prozesse erleichtert ein DHCP-Server die Netzwerkverwaltung und minimiert das Risiko von IP-Adresskonflikten.
Vorbereitungen / Anforderungen:
Anforderungen
Schwierigkeitsgrad-Installation: Schwer
Schwierigkeitsgrad-Anwendung: Einfach
Erforderliche Kenntnisse: Linux-Befehlszeile
Systemvoraussetzungen:
Basis: Debian
Betriebssystem: Ubuntu Server (Headless)
Festplattenspeicher: Mindestens 10 GB
CPU: Mindestens 1 CPU
RAM: Mindestens 512 MB
Internetverbindung: Verfügbar
Die Systemanforderungen wurden in einer virtualisierten Umgebung getestet.
Tipp:
Wenn du mit Virtualisierung, z.B. ProxMox, vertraut bist, kannst du deine eigenen Server effizient und stromsparend betreiben!
Getestet auf:
Ubuntu-Server 22.04
Ubuntu-Server 24.10
Installationsablauf:
Durchführung von System-Upgrade
Statische IP-Adresse festlegen und anwenden
(Optional) Hostnamen festlegen
Installation und Einstellungen
Festlegen von festen IP-Adressen
Systembedienung
Störungsanalyse
Optionale Schritte können weggelassen werden, da sie lediglich unterstützende Funktionen bieten, wie zum Beispiel die Zusammenfassung von Servern in einem Rechenzentrum.
Für den Betrieb in einem Rechenzentrum sollten die optionalen Abläufe jedoch aus Gründen des beruflichen Stolzes in Betracht gezogen werden.
1. Durchführung von System-Upgrade
Vor jeder Installation ist ein System-Update erforderlich:
$> ssh DEINUSER@192.168.1.X
# Stelle eine SSH-Verbindung zu deinem Server her
$> sudo apt update
# Aktualisiere die Paketquellen
$> sudo apt upgrade -y
# Starte das System-Upgrade
$> sudo apt autoclean
# Optional: Entferne überflüssige Pakete
$> sudo apt autoremove
# Optional: Bereinige das System von Abhängigkeiten
2. Statische IP-Adresse festlegen und anwenden
Ein DHCP-Server benötigt zwingend eine statische IP-Adresse. In allen Fällen ist ein DHCP-Server der Dreh- und Angelpunkt eines Netzwerkes, weil dieser Dienst die zugewiesenen Adressen im Netzwerk verteilt.
Es besteht die Möglichkeit, sich selbst vom Server auszuschließen, wenn die IP-Adresse nicht korrekt konfiguriert ist.
$> ip addr
# Liste alle Netzwerkadapter und Informationen auf
$> sudo su
# Wechsel in die Super-User-Shell
$> cd /etc/netplan
# Wechsle ins Netplan-Verzeichnis
$> ls -l
# Zeige alle Dateien im Netplan-Verzeichnis an
$> for i in $( ls ); do mv $i $i.bak; done
# Sichere alle bestehenden Konfigurationen als Backup
$> touch /etc/netplan/01_static_ip.yaml
# Erstelle eine neue Konfigurations-Datei
$> nano /etc/netplan/01_static_ip.yaml
# Öffne die neue Konfigurations-Datei
network:
version: 2
renderer: networkd
ethernets:
ens18: #Edit this line according to your network interface name.
dhcp4: no
addresses:
- 192.168.1.1/24
gateway4: 192.168.1.1
nameservers:
addresses:
- 8.8.8.8
- 8.8.4.4 # Öffne die Datei mit einem Texteditor (Copy-Paste)
# Ersetze ens18 durch den Namen deines Netzwerk-Adapters (siehe Ausgabe von ip addr).
# Ändere die IP-Adresse und die Netzmaske nach Bedarf.
# Passen die DNS-Adressen an, falls erforderlich.
# Überprüfe und passe ggf. die Routen (Gateway) an.
Speichern und Verlassen
• Speichern der Datei: Ctrl + O
• Editor verlassen: Ctrl + X
$> netplan generate && netplan apply
# Wende die neuen Netzwerkeinstellungen an
🚨 Der Server wechselt nun zu einer neuen IP-Adresse, was dazu führt, dass deine SSH-Sitzung unterbrochen wird.
3. (Optional) Hostnamen festlegen
Durch das Ändern des Hostnamens der Server-Station vergibst du einen eindeutigen Namen für das System.
In unserem Fall könnte der Hostname beispielsweise „S1-DHCP-Server“ lauten.
Die Hosts-Datei wird verwendet, um auf Server-Ebene IP-Adressen Namen zuzuordnen, die intern genutzt werden. Wenn du den Hostnamen änderst, muss auch der entsprechende Eintrag in der Hosts-Datei aktualisiert werden. Bei produktiven Systemen sollte diese Kleinigkeit unbedingt beachtet werden, da sie ein Zeichen von Berufsethos und Professionalität ist. Für Tests und Experimente ist dies jedoch nicht zwingend erforderlich.
Der neue Hostname muss zwingen der gleiche sein wie auch im Hosts-File.
$> ssh DEINUSER@192.168.1.X
# Wiederherstellen der SSH-Verbindung
$> sudo hostnamectl set-hostname DEINHOSTNAME
# Einen neuen Host-Namen setzen
$> sudo nano /etc/hosts
# Hosts-Datei öffnen und ändere den markierten Bereich
127.0.0.1 localhost
127.0.1.1 DEINHOSTNAME
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ……..
# Speichern und Verlassen
• Speichern der Datei: Ctrl + O
• Editor verlassen: Ctrl + X
$> sudo reboot
# Server neu starten, damit die Änderungen wirksam werden
4. Installation und Einstellungen
$> ssh DEINUSER@192.168.1.X
# Wiederherstellen der SSH-Verbindung
$> sudo apt install isc-dhcp-server -y
# System installieren
$> sudo systemctl enable isc-dhcp-server.service
# Autostart Eintrag setzen
$> sudo nano /etc/dhcp/dhcpd.conf
# Konfigurations-Datei öffnen
# Rogue-DHCP-Server nicht erlauben-nur einen DHCP-Server im Netz
authoritative;
# Dynamic DNS - Push new DNS into Zone-File (interim / standard / none)
ddns-update-style none;
# One-Lease - nur ein Lease pro Client
one-lease-per-client false;
# Hostname domain lookup für alle Hosts
get-lease-hostnames false;
# Ping Check um zu verhindern dass eine Adresse doppelt existiert
ping-check false;
subnet 192.168.1.0 netmask 255.255.255.0{
#Interface über welches die Adressen verteilt werden
interface ens18;
#Adressenbereich
range 192.168.1.110 192.168.1.250;
#Eigener Domain Name
option domain-name local-network;
#DNS-Server
option domain-name-servers 1.1.1.1, 1.0.0.1;
#Broadcoast-Adresse
option broadcast-address 192.168.1.255;
#Netzwerkmaske option subnet-mask 255.255.255.0
#Gateway des Netzwerks
option routers 192.168.1.1;
# Lease Time-Dauer der Vergabe der Adressen
default-lease-time 600;
max-lease-time 7200; }
$> sudo systemctl restart isc-dhcp-server.service
# Dienst Neustart
Kurze Beschreibung zu den Anpassungen:
Authoritative
Es ist möglich, mehrere DHCP-Server im gleichen Netzwerk zu betreiben. Die Option „authoritative“ stellt jedoch sicher, dass der Server als der einzige autorisierte DHCP-Server im Netzwerk fungiert.
One-lease-per-client
Ein Benutzer kann eine oder mehrere IP-Adressen anfordern. Bevor eine IP-Adresse vergeben wird, kann der DHCP-Server den Hostnamen verifizieren (denken Sie an den optionalen Schritt „Hostnames“) und per Ping überprüfen, ob die Adresse bereits vergeben ist, um Doppelbelegungen zu vermeiden.
Get-lease-hostnames und Ping check
Bevor eine IP-Adresse vergeben wird, kann der DHCP-Server den Hostnamen verifizieren (denke an den optionalen Schritt „Hostnames“) und per Ping-Check überprüfen, ob die Adresse bereits vergeben ist, um Doppelbelegungen zu vermeiden.
Subnet und Netmask
Der Server bezieht sich auf das eigene IP (Subnet) und dessen Sichtbarkeit innerhalb des Netzwerks (Netmask), diese werden an die Clients weitergegeben.
Interface
Das Interface ist die Netzwerkschnittstelle, an der der DHCP-Server auf Anfragen lauscht.
Range
Der Range (Adressbereich) gibt an, welche IP-Adressen im Bereich „von-bis“ vergeben werden können.
DNS
Die Domain Name-Server (DNS-Server) fungieren ähnlich wie die Hosts-Datei und übersetzen Domänennamen in IP-Adressen.
Broadcast
Die Broadcast-Adresse ist eine spezielle IP-Adresse, die alle Geräte im Netzwerkbereich ansprechen kann, wenn sie direkt verwendet wird.
Subnetmask
Die Subnetzmaske definiert die Anzahl der Geräte und die Sichtweite innerhalb des Netzwerks sowie deren Kommunikationsmöglichkeiten.
Router
Der Router ist die Adresse, über die Internetanfragen das Netzwerk verlassen. Dieser wird oft auch als Gateway bezeichnet.
Lease-Time
Die Lease-Time legt die minimale oder maximale Zeit fest, während der eine zugewiesene IP-Adresse verwendet werden kann. Läuft die Lease-Time ab, wird die Adresse neu angefordert und vergeben. Bei einer großen Anzahl von Geräten (z. B. im Gäste-WLAN) sollte die Lease-Time kürzer eingestellt werden, um zu verhindern, dass Geräte dauerhaft als „Gäste“ im Netzwerk bleiben.
5. Festlegen von festen IP-Adressen
Das festlegen von IP-Adressen in Verbindung an eine MAC-Adresse ist gängige Praxis. Jedoch prüft der DHCP-Server nicht ob eine MAC-Adresse schon verwendet wurde. Dies gilt es zu berücksichtigen.
host Device-1 {
hardware ethernet AA:BB:CC:DD:11:22;
fixed-address 192.168.1.112;
option host-name "Wlan-Device";
}