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.

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

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/kea-leases4.csv"
    },
    "valid-lifetime": 600,
    "max-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, example.com"
      }
    ],
    
    "subnet4": [
      {
        "id": 1,
        "subnet": "172.26.2XX.0/24",
        "pools": [
          {
            "pool": "172.26.2XX.50 - 172.26.2XX.100"
          }
        ],
        "option-data": [
          {
            "name": "routers",
            "data": "172.26.2XX.1"
          }
        ],
        "reservations": [
          {
            "hw-address": "aa:bb:cc:dd:ee:ff",
            "ip-address": "172.26.2XX.10",
            "hostname": "client"
          }
        ]
      }
    ],
    "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 transparent auf Layer 2/3 und eignet sich daher am besten, um das Protokollverhalten (giaddr-Feld, Broadcast-zu-Unicast-Wandlung) 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 der de-facto Standard in professionellen Linux-Umgebungen.

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

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

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)