Einrichten eines DHCP-Servers auf Rocky mit Kea

Aus Xinux Wiki
Version vom 20. Juli 2026, 11:35 Uhr von Thomas.will (Diskussion | Beiträge) (→‎Konfigurationsprüfung)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Installation

Kea ist unter Rocky Linux nicht in den Standard-Repositories enthalten, sondern kommt über EPEL.

EPEL-Repository aktivieren (falls noch nicht geschehen):

  • sudo dnf install epel-release

Kea-Pakete installieren:

  • sudo dnf install kea

Firewall und SELinux freigeben

Anders als bei Debian/AppArmor gibt es unter Rocky kein AppArmor-Profil zu deaktivieren. Stattdessen müssen Firewall (firewalld) und ggf. SELinux berücksichtigt werden.

DHCP-Dienst in firewalld dauerhaft freigeben
  • sudo firewall-cmd --permanent --add-service=dhcp
  • sudo firewall-cmd --reload
SELinux-Status prüfen
  • getenforce
Falls SELinux Probleme bereitet (AVC-Denials), zunächst analysieren statt direkt zu deaktivieren
  • sudo ausearch -m avc -ts recent
  • sudo journalctl -t setroubleshoot

Am besten anschließend ebenfalls ein Reboot durchführen:

  • sudo systemctl reboot

Konfiguration der zu vergebenden Netzwerkparameter

Die Hauptkonfigurationsdatei von Kea ist im JSON-Format

  • sudo vim /etc/kea/kea-dhcp4.conf
{
  "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"
      }
    ]
  }
}

Dienst starten und überprüfen

Konfiguration testen

  • sudo kea-dhcp4 -t /etc/kea/kea-dhcp4.conf

Dienst mit der neuen Konfiguration starten und überprüfen

  • sudo systemctl restart kea-dhcp4
  • sudo systemctl status kea-dhcp4

Dienst beim Systemstart automatisch aktivieren

  • sudo systemctl enable kea-dhcp4

Kontrolle ob der Port geöffnet ist

  • ss -lnup
State         Recv-Q        Send-Q                Local Address:Port                 Peer Address:Port        Process        
UNCONN        0             0                           0.0.0.0:67                        0.0.0.0:*            users:(("kea-dhcp4",pid=XXXX,fd=X))

Zusätzlich kann geprüft werden, ob firewalld den Dienst korrekt freigibt:

  • sudo firewall-cmd --list-services

Der Client

  • Klont das client-template und nennt es client
  • Hängt den Client ins LAN
  • Nach dem Booten ändern den Namen des client auf
  • sudo hostnamectl set-hostname client.it2XX.int

Logs

Die letzten 100 Zeilen und neue Nachrichten anschauen

  • journalctl -fn100 -u kea-dhcp4

Alternativ die Kea-spezifische Logdatei verwenden

  • tail -f /var/log/kea/kea-dhcp4.log

Lease-Verwaltung

Aktive Leases anzeigen

  • sudo cat /var/lib/kea/kea-leases4.csv

Oder mit dem Kea Control Agent (falls installiert)

  • sudo dnf install kea-ctrl-agent

Statische IP-Adressen (Reservierungen)

Statische IP-Adressen werden in Kea als "reservations" innerhalb des Subnets definiert. Diese befinden sich bereits in der Hauptkonfiguration (siehe oben).

MAC-Adresse eines Geräts herausfinden

  • ip link show
  • oder für eine spezifische Schnittstelle:
  • ip link show enp0s3

Hinweise zu Reservierungen

Die reservierten IP-Adressen sollten außerhalb des dynamischen Pools liegen Nach Änderungen an den Reservierungen muss der Dienst neu gestartet werden

  • sudo systemctl restart kea-dhcp4

Alternativ können Reservierungen auch in einer separaten Datei gespeichert werden (siehe erweiterte Konfiguration)

Den Client Eintragen

"reservations": [
  {
    "hw-address": "08:00:27:5d:76:5d",
    "ip-address": "172.26.2XX.10",
    "hostname": "client"
  }
]

Wichtige Unterschiede zu ISC DHCP

Kea verwendet JSON-Konfiguration statt ISC-Format Die Lease-Datenbank kann in verschiedenen Backends gespeichert werden (memfile, MySQL, PostgreSQL) Kea bietet eine REST-API zur Verwaltung (über kea-ctrl-agent) Modernere Architektur mit besserer Performance bei vielen Clients

Wichtige Unterschiede zu Debian

Kea-Pakete kommen über EPEL statt aus dem Standard-Repository Statt AppArmor-Profilen zu deaktivieren, wird der Dienst über firewalld freigegeben; SELinux-Kontexte (statt AppArmor-Profile) sind bei Zugriffsproblemen relevant Die Lease-Datei heißt bereits im Standardpfad kea-leases4.csv (kein manuelles Umbenennen nötig)

Konfigurationsprüfung

Vor jedem Neustart empfiehlt es sich, die Syntax zu prüfen

  • sudo kea-dhcp4 -t /etc/kea/kea-dhcp4.conf

Neu starten

  • sudo systemctl restart kea-dhcp4.service