KEA DHCP-Relay-Server - Netzwerk und Serveradministration
Was ist ein DHCP-Relay?
- DHCP-Relay ist eine Funktion, um DHCP über Netzgrenzen (Broadcastdomäne) hinaus nutzen zu können.
- Damit wird die Notwendigkeit der Bereitstellung eines DHCP-Servers in jedem Subnetz, in dem sich DHCP-Clients befinden, vermieden.
- Die DHCP-Relay-Funktion wird meist durch den Router selbst erbracht.
- Dabei werden Client-seitig mittels Broadcast verschickte DHCP-Anfragen durch den DHCP-Relay empfangen und mittels Unicast einem oder mehreren DHCP-Servern zugestellt.
- Der DHCP-Relay-Agent wird funktional auf der Schnittstelle des Routers platziert.
Wichtiger Hinweis zu ISC DHCP
- ISC DHCP ist End-of-Life (EOL) seit Ende 2022
- Kea DHCP bietet selbst keinen Relay-Agent
- Empfohlene moderne Alternative: dnsmasq als DHCP-Relay
- dnsmasq unterstützt sowohl DHCPv4 als auch DHCPv6 Relay
Vorarbeiten
- Der Kea DHCP Server muss die Netze hinter dem Router bedienen
Netze einfügen auf dem Kea DHCP Server
- sudo vim /etc/kea/kea-dhcp4.conf
- Mehrere Subnetze werden im subnet4-Array definiert:
{
"Dhcp4": {
"interfaces-config": {
"interfaces": [ "enp0s3" ]
},
"lease-database": {
"type": "memfile",
"persist": true,
"name": "/var/lib/kea/dhcp4.leases"
},
"valid-lifetime": 600,
"max-valid-lifetime": 7200,
"option-data": [
{
"name": "domain-name-servers",
"data": "10.88.1XX.21"
},
{
"name": "domain-name",
"data": "it1XX.int"
},
{
"name": "domain-search",
"data": "it1XX.int, example.com"
}
],
"subnet4": [
{
"subnet": "10.88.1XX.0/24",
"pools": [
{
"pool": "10.88.1XX.50 - 10.88.1XX.100"
}
],
"option-data": [
{
"name": "routers",
"data": "10.88.1XX.1"
}
]
},
{
"subnet": "10.1XX.1.0/24",
"pools": [
{
"pool": "10.1XX.1.50 - 10.1XX.1.100"
}
],
"option-data": [
{
"name": "routers",
"data": "10.1XX.1.1"
}
]
}
],
"loggers": [
{
"name": "kea-dhcp4",
"output_options": [
{
"output": "/var/log/kea/kea-dhcp4.log"
}
],
"severity": "INFO"
}
]
}
}
Konfiguration testen und Dienst neu starten:
- sudo kea-dhcp4 -t /etc/kea/kea-dhcp4.conf
- sudo systemctl restart kea-dhcp4-server
Installation auf dem Router (Firewall)
- apt install dnsmasq
Hinweis: dnsmasq ist ein leichtgewichtiger DNS- und DHCP-Server, der auch DHCP-Relay-Funktionalität bietet und als moderne Alternative zum EOL ISC DHCP Relay dient.
Konfiguration von dnsmasq als DHCP-Relay
- DHCP-Relay konfigurieren
- sudo vim /etc/dnsmasq.conf
# DHCP Server deaktivieren (nur Relay nutzen) no-dhcp-interface= # DHCP-Relay konfigurieren # Syntax: dhcp-relay=<lokale Adresse>,<Server Adresse>[,<Interface>] # Relay für enp0s8 dhcp-relay=10.88.1XX.1,172.16.1XX.2,enp0s8 # Relay für enp0s9 dhcp-relay=10.1XX.1.1,172.16.1XX.2,enp0s9 # Optional: weitere Interfaces # dhcp-relay=<lokale IP>,172.16.1XX.2,enp0s10 # Logging aktivieren (optional) log-dhcp log-queries
Erklärung der Parameter
- Lokale Adresse: IP-Adresse des Interfaces auf dem Router, auf dem DHCP-Anfragen empfangen werden
- Server Adresse: IP-Adresse des Kea DHCP Servers (muss eine IP-Adresse sein, kein Hostname)
- Interface: (Optional) Interface-Name zur zusätzlichen Sicherheit - akzeptiert nur Antworten auf diesem Interface
Alternative: Minimale Konfiguration
Falls dnsmasq bereits läuft und nur Relay-Funktionalität hinzugefügt werden soll:
- sudo vim /etc/dnsmasq.d/dhcp-relay.conf
# DNS-Funktionalität deaktivieren falls nicht benötigt port=0 # DHCP-Relay dhcp-relay=10.88.1XX.1,172.16.1XX.2,enp0s8 dhcp-relay=10.1XX.1.1,172.16.1XX.2,enp0s9 log-dhcp
Start
Konfiguration testen
- sudo dnsmasq --test
Dienst starten
- sudo systemctl restart dnsmasq
- sudo systemctl enable dnsmasq
Check
- sudo systemctl status dnsmasq
● dnsmasq.service - dnsmasq - A lightweight DHCP and caching DNS server
Loaded: loaded (/lib/systemd/system/dnsmasq.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2025-10-20 14:30:15 CET; 2min ago
Main PID: 1234 (dnsmasq)
Tasks: 1 (limit: 2337)
Memory: 2.5M
CPU: 15ms
CGroup: /system.slice/dnsmasq.service
└─1234 /usr/sbin/dnsmasq -x /run/dnsmasq/dnsmasq.pid -u dnsmasq -7 /etc/dnsmasq.d,.dpkg-dist,.dpkg-old,.dpkg-new --local-service
Oct 20 14:30:15 firewall systemd[1]: Starting dnsmasq - A lightweight DHCP and caching DNS server...
Oct 20 14:30:15 firewall dnsmasq[1234]: started, version 2.89 cachesize 150
Oct 20 14:30:15 firewall dnsmasq[1234]: DHCP relay from 10.88.1XX.1 to 172.16.1XX.2
Oct 20 14:30:15 firewall dnsmasq[1234]: DHCP relay from 10.1XX.1.1 to 172.16.1XX.2
Oct 20 14:30:15 firewall systemd[1]: Started dnsmasq - A lightweight DHCP and caching DNS server.
- Port-Check
- ss -lnup | grep 67
UNCONN 0 0 0.0.0.0:67 0.0.0.0:* users:(("dnsmasq",pid=1234,fd=5))
Logs
Live-Logs anzeigen
- journalctl -fn100 -u dnsmasq
Oder direkt im syslog
- tail -f /var/log/syslog | grep dnsmasq
Wichtige Hinweise
- dnsmasq kann nicht gleichzeitig als DHCP-Server und DHCP-Relay auf demselben Interface arbeiten - die Relay-Funktion hat Vorrang
- Für produktive Umgebungen sollte die Konfiguration in
/etc/dnsmasq.d/erfolgen - dnsmasq unterstützt sowohl DHCPv4 als auch DHCPv6 Relay
- Die Server-Adresse muss eine IP sein, keine Domain
- Mehrere Relay-Ziele können durch mehrfache
dhcp-relay-Direktiven definiert werden
Troubleshooting
DHCP-Relay funktioniert nicht
- Routing prüfen:
- ip route
- Firewall-Regeln prüfen:
- sudo iptables -L -v -n | grep 67
- sudo iptables -L -v -n | grep 68
- DHCP-Traffic auf dem Router mitschneiden:
- sudo tcpdump -i enp0s8 -n port 67 or port 68
dnsmasq startet nicht
- Konfiguration auf Syntaxfehler prüfen:
- sudo dnsmasq --test
- Prüfen ob Port 53 oder 67 bereits belegt:
- sudo ss -lnup | grep -E ':(53|67)'
Empfehlung
Für eine moderne, zukunftssichere Infrastruktur:
- Kea DHCP Server zentral auf einem dedizierten Server
- dnsmasq als DHCP-Relay auf den Routern/Firewalls
- Vorteil: dnsmasq wird aktiv gepflegt und ist in allen modernen Linux-Distributionen verfügbar
- ISC DHCP Relay sollte nicht mehr verwendet werden (EOL)