Der moderne DHCP-Server Kea

Lesezeit
4 Minuten
Bis jetzt gelesen

Der moderne DHCP-Server Kea

22.03.2016 - 12:20
Veröffentlicht in:

Wer einen DHCP-Dienst betreibt, setzt meistens den Server des ISC (Internet Systems Consortium) ein. Mit Kea hat das ISC eine moderne Alternative für das alte Programm entwickelt.

Der ISC-DHCP-Server ist so etwas wie der De-facto-Standard der DHCP-Server. Mittlerweile ist er 17 Jahre alt und läuft außer auf Linux und FreeBSD auch auf Solaris, AIX und HP-UX. Jetzt hat das Internet Systems Consortium ISC unter dem Namen Kea eine moderne Alternative entwickelt, die vermutlich künftig den ISC-DHCP-Server ablösen wird.

Beide Programme können als Server für DHCPv4 und DHCPv6 eingesetzt werden. Aber während der alte ISC-DHCPD zur Konfigurationsänderung immer neu gestartet werden musste, lässt sich Kea ohne Neustart zur Laufzeit rekonfigurieren. Ein Neustart ist nur nötig, wenn sich die physischen Netzwerk-Interfaces ändern, auf denen Kea die DHCP-Requests verarbeitet. Das geht Hand in Hand mit der zustandslosen Natur des Kea-Servers, der selbst keine Laufzeitdaten speichert, sondern dies externalisiert. Die DHCP-Leases beispielsweise kann Kea in einer MySQL- oder PostgreSQL-Datenbank speichern. Dabei wurde Kea auch im Hinblick auf hohe Performance entwickelt. Nach Angaben der Entwickler kann Kea mit einem MySQL-Backend über 1000 Leases in der Sekunde verarbeiten. Ein Benchmark-Tool liegt der Kea-Distribution bei.

Über sogenannte Hooks können Entwickler in bestimmten Stufen der Request-Verarbeitung eigenen Code einklinken, um etwa IP-Adressen in einer Configuration Management Database (CMDB) zu verwalten. Bisher müssen Hooks noch in der Programmiersprache C++ geschrieben und als Shared Libraries bereitgestellt werden, aber das soll sich irgendwann ändern. Ein weiterer Pluspunkt ist die ausführliche Dokumentation für Administratoren und Entwickler.

Zur Installation laden Sie von https://www.isc.org/downloads/ das Quellcode-Paket herunter und entpacken es:

wget -O kea.tar.gz https://www.isc.org/downloads/file/kea-1-0/?version=tar-gz
tar xfz kea.tar.gz

Nun müssen Sie noch einige Abhängigkeiten installieren, natürlich den C++-Compiler g++ und diverse C++-Bibliotheken, die Kea voraussetzt:

sudo apt-get -y install liblog4cplus-dev libboost-dev libbotan1.10-dev

Kea kann eine In-Memory-Datenbank mit CSV-Backend oder eine SQL-Datenbank verwenden, etwa MySQL oder PostgreSQL. Wir setzen in diesem Artikel MySQL ein:

sudo apt-get -y install mysql-server libmysqlclient-dev

Nun führen Sie das Configure-Skript aus und geben dabei an, dass Sie MySQL verwenden wollen. Anschließend kompilieren Sie den Kea-Server und installieren ihn im Dateisystem:

./configure --with-dhcp-mysql
make
sudo make install

Unter Umständen müssen Sie noch den Ort der shared Libraries (/usr/local/lib) in der Linker-Konfigurationsdatei /etc/ld.so.conf eintragen und den Linker-Cache aktualisieren.

sudo /sbin/ldconfig

Für DHCPv4 und DHCPv6 gibt es jeweils eigene Binaries, genauso wie für dynamische DNS-Updates, die Kea selbstverständlich auch beherrscht:

$ ls -A1 /usr/local/sbin/
kea-admin
keactrl
kea-dhcp4
kea-dhcp6
kea-dhcp-ddns
kea-lfc
perfdhcp

Um Kea in Betrieb zu nehmen, müssen Sie nun noch die Konfigurationsdatei anpassen und die Datenbank initialisieren. In der Config-Datei /usr/local/etc/kea/kea.conf geben Sie das Netzwerk-Interface an, hinter dem der DHCP-Server auf Anfragen wartet, dann die verfügbaren IP-Adressenpools und schließlich die Verbindungsdetails für die Datenbank.

"interfaces-config": {
  "interfaces": [ "eth0" ],
  "dhcp-socket-type": "raw"
},
...
 "lease-database": {
   "type": "mysql",
   "user": "kea",
   "password": "secret",
   "name": "kea"
 },
...
"subnet4": [
{    "subnet": "192.0.2.0/24",
     "pools": [ { "pool": "192.0.2.1 - 192.0.2.200" } ] }
]

Einige Beispiele für Konfigurationsdateien finden sich nach der Installation im Verzeichnis /usr/local/share/doc/kea/examples.

In MySQL legen Sie mit dem oben schon eingestellten Namen eine Datenbank an und vergeben dafür alle Rechte an den entsprechenden Benutzer:

mysql> CREATE DATABASE kea;
Query OK, 1 row affected (0.02 sec)
mysql> GRANT ALL on kea.* to kea@localhost identified by 'secret';
Query OK, 0 rows affected (0.04 sec)

Die Initialisierung der Datenbank übernimmt ein von Kea bereigestelltes Skript, dem Sie neben dem Datenbanknamen den Benutzernamen und das Passwort übergeben:

kea-admin lease-init mysql -u kea -p secret -n kea

Um DHCPv6 zu deaktivieren und nur DHCPv4 zu verwenden, setzen Sie die folgenden Variablen in der Konfigurationsdatei /usr/local/etc/kea/keactrl.conf:

dhcp4=yes
dhcp6=no

Sie starten Kea mit keactrl start und stoppen den Server mit keactrl stop. Die Konfiguration laden Sie mit keactrl reload neu.

Nach dem Starten können Sie sich durch einen Blick in die Datei /usr/local/var/kea/kea.log vergewissern, dass alles nach Plan läuft:

2016-03-22 12:57:49.067 INFO  [kea-dhcp4.dhcp4/9575] DHCP4_STARTING Kea DHCPv4 server version 1.0.0 starting
2016-03-22 12:57:49.067 INFO  [kea-dhcp4.dhcpsrv/9575] DHCPSRV_CFGMGR_ADD_IFACE listening on interface eth0
2016-03-22 12:57:49.067 INFO  [kea-dhcp4.dhcpsrv/9575] DHCPSRV_CFGMGR_SOCKET_TYPE_DEFAULT "dhcp-socket-type" not specified , using default socket type raw
2016-03-22 12:57:49.068 INFO  [kea-dhcp4.dhcp4/9575] DHCP4_CONFIG_NEW_SUBNET a new subnet has been added to configuration: 192.0.2.0/24 with params: valid-lifetime=4000
2016-03-22 12:57:49.068 INFO  [kea-dhcp4.dhcpsrv/9575] DHCPSRV_MYSQL_DB opening MySQL lease database: name=kea password=***** type=mysql universe=4 user=kea
2016-03-22 12:57:49.071 INFO  [kea-dhcp4.dhcp4/9575] DHCP4_CONFIG_COMPLETE DHCPv4 server has completed configuration: added IPv4 subnets: 1; DDNS: disabled

Die Log-Datei für den DHCPv4-Server ist /usr/local/var/log/kea-dhcp4.log. Mit keactrl status geben Sie den aktuellen Serverstatus inklusive der Konfigurationsdateien aus:

DHCPv4 server: active
DHCPv6 server: inactive
DHCP DDNS: inactive
Kea configuration file: /usr/local/etc/kea/kea.conf
keactrl configuration file: /usr/local/etc/kea/keactrl.conf

Um Hosts eine IP-Adresse fix zuzuweisen (Host reservation) fügen Sie einige Zeilen wie die folgenden in die Subnet-Konfiguration ein:

"subnet4": [
  {  "subnet": "192.0.2.0/24",
     "pools": [ { "pool": "192.0.2.1 - 192.0.2.200" } ],
     "reservations": [
        {
           "hw-address": "52:54:00:01:5f:33",
           "ip-address": "192.0.2.201"
        }
      ]
  }
]

Es ist allerdings ausgesprochen mühsam, hier die nötigen eckigen und geschweiften Klammern des JSON-Formats richtig zu setzen. JSON ist eigentlich besser dafür geeignet, von Maschinen verarbeitet zu werden als durch Menschen. Hier sollten die Entwickler lieber ein grafisches Frontend oder ein Kommandozeilentool programmieren, mit dem sich die JSON-Konfiguration bearbeiten lässt. Auch ein Migrationstool für die Konfiguration des ISC-DHCPD zu Kea ist geplant, aber bisher noch nicht fertiggestellt.

Ausgedient hat der ISC-DHCPD nicht. So hinkt Kea noch in einigen Bereichen dem Vorgänger hinterher, etwa bei der Integration von LDAP-Directories. DHCPv4-Failover beherrscht Kea derzeit nicht, auch wenn sich HA-Setups mithilfe eines hochverfügbaren Datenbank-Backends realisieren lassen. Da Kea aber als die moderne Alternative zum ISC-DHCPD gilt, wird Kea in diesen Bereichen wohl bald aufholen. Auch die Installation per BOOTP zum Booten und zur Installation übers Netz beherrscht Kea nicht und das soll nach dem Willen der Entwickler auch so bleiben. In erster Linie ist Kea für dynamische Datacenter gedacht, die derzeit unter dem Schlagwort "Cloud" firmieren.

Ein Beispiel für die Leistungsfähigkeit von Kea gibt Facebook, das vom ISC-DHCPD auf Kea umgestellt hat, um der dynamischen Natur der eigenen Infrastruktur gerecht zu werden. Damit betreibt das soziale Netzwerk einen Cluster virtueller DHCP-Server, die ihre Daten aus einem gemeinsamen IP-Adressenpool beziehen und ansonsten zustandslos arbeiten. Damit werden Konfigurationsänderungen schon nach wenigen Minuten im ganzen Netz sichtbar statt wie mit dem Legacy erst innerhalb mehrerer Stunden. Auch Facebook betont, dass die Architektur von Kea und die gute Dokumentation bei der Umsetzung hilfreich war. So hat es von der Evaluation bis zur Produktion nur zwei Monate gedauert, bis das komplette Facebook-Netz auf Kea umgestellt war.

 

Ähnliche Beiträge

Netzwerkverwaltung an der Medizinischen Universität Wien

Die IT-Abteilung der Medizinischen Universität Wien betreibt das Netzwerk der Universität, wozu die Betreuung von rund 10.000 Anschlüssen sowie Hunderten Endgeräten und Servern gehört. Für diese Aufgabe wurde eine neue Informations- und Planungssoftware für Kabelmanagement und Netzwerkdokumentation implementiert. Das neue Werkzeug ist flexibel, skalierbar und deckt die steigenden Sicherheitsanforderungen voll ab.

Zero-Touch-Provisionierung von aktiven Netzwerkkomponenten (3)

Zero-Touch-Provisionierungsprozesse sind im Rollout von Client-PCs und Servern bereits lange Zeit Standard. Im Gegensatz dazu kommen diese Prozesse bei aktiven Netzwerkkomponenten wie Routern und Switches nur selten zum Einsatz. Im dritten und letzten Teil gehen wir auf weitere Varianten ein, etwa die ZTP-Provisionierung ohne proprietären Server, die Boot-Loader-Variante iPXE oder das alte Verfahren AutoInstall.