KEA DHCP-Relay-Server - Netzwerk und Serveradministration

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen


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.

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

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