KEA DHCP - Netzwerk und Serveradministration: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(7 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 3: Zeile 3:
 
=== Installation ===
 
=== Installation ===
  
* sudo apt install kea-dhcp4-server
+
* sudo apt install kea-dhcp4-server kea-dhcp-ddns-server
 +
 
  
 
=== Entfernen aus Apparmor ===
 
=== Entfernen aus Apparmor ===
Zeile 10: Zeile 11:
 
;Symlink erstellen (verhindert das Laden beim Booten)
 
;Symlink erstellen (verhindert das Laden beim Booten)
 
*ln -sf /etc/apparmor.d/usr.sbin.kea-dhcp4 /etc/apparmor.d/disable/
 
*ln -sf /etc/apparmor.d/usr.sbin.kea-dhcp4 /etc/apparmor.d/disable/
 +
*ln -sf /etc/apparmor.d/usr.sbin.kea-dhcp-ddns  /etc/apparmor.d/disable/
 
;AppArmor Dienst anweisen, Profile neu zu laden (das entfernt die deaktivierten)
 
;AppArmor Dienst anweisen, Profile neu zu laden (das entfernt die deaktivierten)
 
*systemctl reload apparmor
 
*systemctl reload apparmor
Zeile 31: Zeile 33:
 
     "valid-lifetime": 600,
 
     "valid-lifetime": 600,
 
     "max-valid-lifetime": 7200,
 
     "max-valid-lifetime": 7200,
   
 
 
     "option-data": [
 
     "option-data": [
       {
+
       { "name": "domain-name-servers", "data": "10.88.2XX.21" },
        "name": "domain-name-servers",
+
       { "name": "domain-name", "data": "it2XX.int" },
        "data": "10.88.2XX.21"
+
       { "name": "domain-search", "data": "it2XX.int, example.com" }
      },
 
       {
 
        "name": "domain-name",
 
        "data": "it2XX.int"
 
      },
 
       {
 
        "name": "domain-search",
 
        "data": "it2XX.int, example.com"
 
      }
 
 
     ],
 
     ],
   
 
 
     "subnet4": [
 
     "subnet4": [
 
       {
 
       {
 
         "id": 1,
 
         "id": 1,
 
         "subnet": "172.26.2XX.0/24",
 
         "subnet": "172.26.2XX.0/24",
         "pools": [
+
         "pools": [ { "pool": "172.26.2XX.50 - 172.26.2XX.100" } ],
          {
+
         "option-data": [ { "name": "routers", "data": "172.26.2XX.1" } ],
            "pool": "172.26.2XX.50 - 172.26.2XX.100"
+
         "reservations": [  
          }
+
           { "hw-address": "aa:bb:cc:dd:ee:ff", "ip-address": "172.26.2XX.10", "hostname": "client" }  
        ],
 
         "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"
 
          }
 
 
         ]
 
         ]
 
       }
 
       }
Zeile 74: Zeile 52:
 
       {
 
       {
 
         "name": "kea-dhcp4",
 
         "name": "kea-dhcp4",
         "output_options": [
+
         "output_options": [ { "output": "/var/log/kea/kea-dhcp4.log" } ],
          {
 
            "output": "/var/log/kea/kea-dhcp4.log"
 
          }
 
        ],
 
 
         "severity": "INFO"
 
         "severity": "INFO"
 
       }
 
       }
Zeile 151: Zeile 125:
 
"reservations": [
 
"reservations": [
 
   {
 
   {
     "hw-address": "01:08:00:27:5d:76:5d",
+
     "hw-address": "08:00:27:5d:76:5d",
 
     "ip-address": "172.26.2XX.99",
 
     "ip-address": "172.26.2XX.99",
 
     "hostname": "client"
 
     "hostname": "client"
Zeile 157: Zeile 131:
 
]
 
]
 
</syntaxhighlight>
 
</syntaxhighlight>
 
=== DHCP Anfragen über die Kommandozeile ===
 
 
* apt install isc-dhcp-client
 
Bei den folgenden Befehlen kann man auch eine spezifische Netzwerkkarte angeben
 
 
==== Neue IP-Adresse anfragen ====
 
 
* sudo dhclient enp0s3
 
 
==== Lease der IP-Adresse freigeben ====
 
 
* sudo dhclient -r enp0s3
 
  
 
=== Wichtige Unterschiede zu ISC DHCP ===
 
=== Wichtige Unterschiede zu ISC DHCP ===
Zeile 182: Zeile 143:
 
Vor jedem Neustart empfiehlt es sich, die Syntax zu prüfen
 
Vor jedem Neustart empfiehlt es sich, die Syntax zu prüfen
 
* sudo kea-dhcp4 -t /etc/kea/kea-dhcp4.conf
 
* sudo kea-dhcp4 -t /etc/kea/kea-dhcp4.conf
 +
Neu starten
 +
* sudo systemctl restart kea-dhcp4-server.service
  
 
=== Globale vs. Subnet-spezifische Optionen ===
 
=== Globale vs. Subnet-spezifische Optionen ===
Zeile 205: Zeile 168:
 
   "Dhcp4": {
 
   "Dhcp4": {
 
     "option-data": [
 
     "option-data": [
       {
+
       { "name": "domain-name-servers", "data": "10.88.1XX.21, 8.8.8.8" },
        "name": "domain-name-servers",
+
       { "name": "domain-name", "data": "it1XX.int" },
        "data": "10.88.1XX.21, 8.8.8.8"
+
       { "name": "domain-search", "data": "it1XX.int, beispiel.de, firma.local" }
      },
 
       {
 
        "name": "domain-name",
 
        "data": "it1XX.int"
 
      },
 
       {
 
        "name": "domain-search",
 
        "data": "it1XX.int, beispiel.de, firma.local"
 
      }
 
 
     ],
 
     ],
 
     "subnet4": [
 
     "subnet4": [
 
       {
 
       {
 
         "subnet": "172.16.1XX.0/24",
 
         "subnet": "172.16.1XX.0/24",
         "option-data": [
+
         "option-data": [ { "name": "routers", "data": "172.16.1XX.1" } ]
          {
 
            "name": "routers",
 
            "data": "172.16.1XX.1"
 
          }
 
        ]
 
 
       }
 
       }
 
     ]
 
     ]
Zeile 239: Zeile 188:
 
   "Dhcp4": {
 
   "Dhcp4": {
 
     "option-data": [
 
     "option-data": [
       {
+
       { "name": "domain-name-servers", "data": "10.88.1XX.21" }
        "name": "domain-name-servers",
 
        "data": "10.88.1XX.21"
 
      }
 
 
     ],
 
     ],
 
     "subnet4": [
 
     "subnet4": [
Zeile 248: Zeile 194:
 
         "subnet": "172.16.1XX.0/24",
 
         "subnet": "172.16.1XX.0/24",
 
         "option-data": [
 
         "option-data": [
           {
+
           { "name": "routers", "data": "172.16.1XX.1" },
            "name": "routers",
+
           { "name": "domain-name-servers", "data": "172.16.1XX.53" }
            "data": "172.16.1XX.1"
 
          },
 
           {
 
            "name": "domain-name-servers",
 
            "data": "172.16.1XX.53"
 
          }
 
 
         ]
 
         ]
 
       }
 
       }

Aktuelle Version vom 31. März 2026, 14:17 Uhr

Einrichten eines DHCP-Servers auf Debian mit Kea

Installation

  • sudo apt install kea-dhcp4-server kea-dhcp-ddns-server


Entfernen aus Apparmor

Verzeichnis für Deaktivierung sicherstellen
  • mkdir -p /etc/apparmor.d/disable
Symlink erstellen (verhindert das Laden beim Booten)
  • ln -sf /etc/apparmor.d/usr.sbin.kea-dhcp4 /etc/apparmor.d/disable/
  • ln -sf /etc/apparmor.d/usr.sbin.kea-dhcp-ddns /etc/apparmor.d/disable/
AppArmor Dienst anweisen, Profile neu zu laden (das entfernt die deaktivierten)
  • systemctl reload apparmor

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-server
  • sudo systemctl status kea-dhcp4-server

Dienst beim Systemstart automatisch aktivieren

  • sudo systemctl enable kea-dhcp4-server

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))

Der Client

Startet nun den grafischen Client im LAN

Logs

Ab Debian 12

Die letzten 100 Zeilen und neue Nachrichten anschauen

  • journalctl -fn100 -u kea-dhcp4-server

Alternativ die Kea-spezifische Logdatei verwenden

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

Lease-Verwaltung

Aktive Leases anzeigen

  • sudo cat /var/lib/kea/dhcp4.leases

Oder mit dem Kea Shell Tool (falls installiert)

  • sudo apt 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-server

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.99",
    "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

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-server.service

Globale vs. Subnet-spezifische Optionen

Hierarchie der Optionen

Kea unterstützt verschiedene Ebenen für DHCP-Optionen:

Globale Ebene - gelten für alle Subnetze (im Hauptbereich "Dhcp4")

Subnet-Ebene - gelten nur für ein bestimmtes Subnet

Pool-Ebene - gelten nur für einen bestimmten Pool

Host-Reservierung-Ebene - gelten nur für einen bestimmten Host

Spezifischere Optionen überschreiben allgemeinere Optionen.

Beispiel: Globale Optionen

{
  "Dhcp4": {
    "option-data": [
      { "name": "domain-name-servers", "data": "10.88.1XX.21, 8.8.8.8" },
      { "name": "domain-name", "data": "it1XX.int" },
      { "name": "domain-search", "data": "it1XX.int, beispiel.de, firma.local" }
    ],
    "subnet4": [
      {
        "subnet": "172.16.1XX.0/24",
        "option-data": [ { "name": "routers", "data": "172.16.1XX.1" } ]
      }
    ]
  }
}

Beispiel: Subnet überschreibt globale Option

{
  "Dhcp4": {
    "option-data": [
      { "name": "domain-name-servers", "data": "10.88.1XX.21" }
    ],
    "subnet4": [
      {
        "subnet": "172.16.1XX.0/24",
        "option-data": [
          { "name": "routers", "data": "172.16.1XX.1" },
          { "name": "domain-name-servers", "data": "172.16.1XX.53" }
        ]
      }
    ]
  }
}

In diesem Beispiel verwendet das Subnet 172.16.1XX.0/24 den DNS-Server 172.16.1XX.53 statt des globalen 10.88.1XX.21.