KEA DHCP-Relay-Server - Netzwerk und Serveradministration
Version vom 31. März 2026, 11:59 Uhr von Thomas.will (Diskussion | Beiträge) (→DHCP-Ablauf mit Relay (giaddr))
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.
Hinweis zu DHCP-Relay-Agents
- Der klassische ISC DHCP Server ist seit Ende 2022 End-of-Life (EOL).
- Das zugehörige Werkzeug isc-dhcp-relay wird jedoch aufgrund seiner hohen Stabilität und einfachen Handhabung weiterhin in vielen Projekten eingesetzt.
- Kea DHCP selbst bietet keinen eigenen Relay-Agent an und setzt auf externe Lösungen.
- Alternativen:
- dnsmasq: Ein leichtgewichtiger Service, der auch als DHCP-Relay fungieren kann.
- Standard-Relays: Viele Router und Layer-3-Switches bringen eigene Relay-Funktionen ("IP-Helper") mit.
Vorarbeiten
- Der Kea DHCP Server muss die Netze hinter dem Router bedienen
- Der DHCP-Relay-Agent setzt im DHCP-Request das sogenannte giaddr-Feld (Gateway IP Address)
- Der Kea-Server verwendet dieses Feld, um das passende Subnetz auszuwählen
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" ]
},
"control-socket": {
"socket-type": "unix",
"socket-name": "/run/kea/kea4-ctrl-socket"
},
"lease-database": {
"type": "memfile",
"persist": true,
"name": "/var/lib/kea/kea-leases4.csv"
},
"valid-lifetime": 7200,
"option-data": [
{
"name": "domain-name-servers",
"data": "10.88.2XX.21"
},
{
"name": "domain-name",
"data": "it2XX.int"
},
{
"name": "domain-search",
"data": "it2XX.int"
}
],
"subnet4": [
{
"id": 1,
"subnet": "172.26.2XX.0/24",
"pools": [
{
"pool": "172.26.2XX.100 - 172.26.2XX.200"
}
],
"option-data": [
{
"name": "routers",
"data": "172.26.2XX.1"
}
],
"reservations": [
{
"hw-address": "08:00:27:5d:76:5d",
"ip-address": "172.26.2XX.99",
"hostname": "client"
}
]
},
{
"id": 2,
"subnet": "10.88.2XX.0/24",
"pools": [
{
"pool": "10.88.2XX.50 - 10.88.2XX.100"
}
],
"option-data": [
{
"name": "routers",
"data": "10.88.2XX.1"
}
]
},
{
"id": 3,
"subnet": "10.2XX.1.0/24",
"pools": [
{
"pool": "10.2XX.1.50 - 10.2XX.1.100"
}
],
"option-data": [
{
"name": "routers",
"data": "10.2XX.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 isc-dhcp-relay
DHCP-Relay-Agent in der Praxis
- In diesem Kurs verwenden wir den isc-dhcp-relay.
- Begründung: Während Kombi-Lösungen wie dnsmasq viele Dienste (DNS, DHCP, TFTP) in einem Prozess vereinen, ist der ISC-Relay ein spezialisiertes Werkzeug.
- Er arbeitet auf Layer 3 (IP) und verändert gezielt DHCP-Felder (z. B. giaddr).
- Dadurch eignet er sich besonders gut, um das Protokollverhalten (insbesondere das giaddr-Feld und die Umwandlung von Broadcast zu Unicast) im Netzwerk-Monitor (tcpdump/Wireshark) nachzuvollziehen.
Hinweis zur Software-Wahl: Obwohl der ISC-DHCP-Server (Dienst für die Adressvergabe) End-of-Life ist, bleibt das Relay-Modul aufgrund seiner Zuverlässigkeit und der einfachen Konfiguration über Schnittstellen-Parameter ein etablierter und in der Praxis weit verbreiteter Standard.
Konfiguration von isc-dhcp-relay als DHCP-Relay
- Eine sehr simple Konfiguration
- cat /etc/default/isc-dhcp-relay
SERVERS="172.26.213.2" INTERFACES="enp0s8 enp0s9 enp0s10" OPTIONS=""
- Starten und enablen
- systemctl start isc-dhcp-relay
- systemctl enable isc-dhcp-relay
- Logging
- journalctl -fu isc-dhcp-relay
- DHCP-Traffic auf dem Router mitschneiden
- sudo tcpdump -i enp0s8 -n port 67 or port 68
DHCP-Ablauf mit Relay (giaddr = Gateway IP Address)
- Der Client sendet einen DHCPDISCOVER als Broadcast (0.0.0.0 → 255.255.255.255)
- Der Relay-Agent empfängt das Paket auf dem Client-Interface (z. B. enp0s8)
- Der Relay-Agent setzt das Feld giaddr auf seine eigene IP-Adresse im Client-Netz (z. B. 10.88.2XX.1)
- Der Relay-Agent sendet die Anfrage per Unicast an den DHCP-Server
- Der DHCP-Server verwendet das giaddr-Feld zur Auswahl des passenden Subnetzes
- Der DHCP-Server antwortet an den Relay-Agent zurück
- Der Relay-Agent sendet die Antwort wieder als Broadcast in das Client-Netz