
Anweisungen zur Installation und zum grundlegenden Setup von Kea DHCP Failover Server
Kea DHCP ist ein Open-Source-DHCP-Server, der vom Internet Systems Consortium (ISC) mit Unterstützung für DHCPv4 und DHCPv6 entwickelt wurde.
ISCs sind die gleichen Leute, die unsere Lieblingsbindung und dhcpd entwickeln. Kea - entwickelt basierend auf BIND 10.
Mit Kea können Sie einen DHCP-Server sowohl für kleine Systeme als auch für große Telekommunikations- / Unternehmensunternehmen betreiben. Zu den Innovationen zählen die Verwendung der API zur Verwaltung des Dienstes, die Möglichkeit, die Lease-Datenbank im DBMS zu speichern und die Verwendung von Hooks für zusätzliche Funktionen.
Zum Zeitpunkt des Schreibens (Juni 2019) ist die neueste stabile
Version 1.5.0.Ich werde nicht auf die detaillierte Arbeit des DHCP-Protokolls eingehen, dann wird der Artikel zwei- oder dreimal länger sein.
Es gibt einen guten Artikel über Habré .
Das DHCP-Protokoll funktioniert über das UDP-Protokoll (Ports 67-68) und wird zur dynamischen Zuweisung von IP-Adressen verwendet. In vier Schritten werden IP-Adressen empfangen / ausgegeben:
Discovery-Offer-Request-Acknowledge (DORA) . DHCP verwendet auch das Konzept des Lease-Address-Lease. Die Lease-Laufzeit für ein Gerät ist die
Lease-Zeit .

Warum kea
Der DHCP-Server von Kea bietet mehrere Vorteile: Geschwindigkeit, die Möglichkeit, einen Failover-Cluster zu erstellen, hervorragende Funktionen und die Möglichkeit, technischen Support von Entwicklern zu erwerben.
Dieses Produkt wird von unserem Telekommunikationsbetreiber verwendet, der etwa 2 Millionen Adressen mit 2000 Anfragen pro Sekunde ausgeben möchte. Es wurde aufgrund der Arbeitsgeschwindigkeit und der Möglichkeit, einen Cluster aus zwei Servern zu erstellen, ausgewählt.
Unterstütztes Betriebssystem
• CentOS Linux - 7.1804 (auch bekannt als 7.5)
• Fedora - 28, 29
• Ubuntu - 16.04, 18.04
• Debian GNU / Linux - 7, 8, 9
• FreeBSD - 11.0
• macOS - 10.13, 10.14
Es gibt keine Kea-Startpläne für Windows.
Lease Base Storage
Kea DHCP - unterstützt das Speichern der Datenbank der ausgegebenen Adressen in einer lokalen CSV-Datei (Memfile) oder in einem der drei DBMS - MySQL, PostgreSQL und Cassandra.
Die Unterschiede liegen in der Geschwindigkeit und den Speicherkapazitäten. Memfile ist zehnmal schneller, aber durch Speichern der Datenbank im DBMS können Sie zusätzliche Felder und DHCP-Optionen speichern. Geschwindigkeitsvergleich:

Eine sehr umfangreiche Analyse der Verwendung verschiedener Datenbanken und lokaler Speicher
hier .
In unserem Projekt haben wir uns entschlossen, von der Basis in memfile aus zu beginnen, da die Anzahl der Anfragen pro Sekunde mehr als 2000 betragen wird.
Installation
Als Beispiel wird Kea basierend auf CentOS 7 (Minimal Edition) bereitgestellt:
[root@localhost ~]
Bevor Sie den Dienst selbst installieren, müssen Sie alle erforderlichen Abhängigkeiten installieren:
- Boost C ++ - Bibliotheken (http://www.boost.org/). # Laufzeit-C ++ - Umgebung zum Ausführen von Kea selbst
- Kryptobibliothek Botan (Version 1.9) oder OpenSSL (Version 1.0.1). Ich rate openssl, da botan seit Kea 1.6.0 nicht mehr unterstützt wird
- Zum Erstellen von Protokollen ist die Entwicklungsnummer log4cplus (Version 1.0.3) erforderlich
- C ++ - Compiler
- Bibliotheken automake, libtool, pkg-config # zum Erstellen und Installieren von Kea selbst
- Wenn Sie ein DBMS verwenden, installieren Sie MySQL, PostgreSQL oder Cassandra.
Optional, wenn Sie RADIUS oder NETCONF / YANG benötigen (auf Englisch)- FreeRADIUS-Clientbibliothek, wenn das Konfigurationsflag --with-freeradius verwendet wird.
- Sysrepo (Version 0.7.6 oder höher) und libyang (Version 0.16-r2 oder höher), wenn das Konfigurationsflag - with-sysrepo verwendet wird.
- googletest (Version 1.8 oder höher), wenn die Konfigurationsoption --with-gtest zum Erstellen der Komponententests verwendet wird.
- Die Tools zur Dokumentationserstellung elinks, docbook-xsl, libxslt und Doxygen, wenn Sie die Konfigurationsoption --enable-generate-docs zum Erstellen der Dokumentation verwenden.
Schritt 1. Installieren Sie die erforderlichen Abhängigkeiten
Schritt 2. Wenn alle Abhängigkeiten normal waren, fahren Sie mit der Installation von Kea selbst fort
* Hier müssen Sie die erforderlichen Optionen angeben. Wenn Sie das DBMS verwenden möchten, müssen Sie diese Option aktivieren.
Alle Optionen während der Montage:- Präfix
Definieren Sie den Installationsort (der Standard ist / usr / local).
--with-boost-include
Definieren Sie den Pfad, um die Boost-Header zu finden.
--with-botan-config
Geben Sie den Pfad zum Botan-Konfigurationsskript an, das mit Botan für kryptografische Funktionen erstellt werden soll.
--with-mysql
Erstellen Sie Kea mit Code, damit Leases und Hostreservierungen in einer MySQL-Datenbank gespeichert werden können.
--with-pgsql
Erstellen Sie Kea mit Code, damit Leases und Hostreservierungen in einer PostgreSQL-Datenbank gespeichert werden können.
--with-cql
Erstellen Sie Kea mit Code, damit Leases und Hostreservierungen in einer Cassandra (CQL) -Datenbank gespeichert werden können.
--with-gtest, --with-gtest-source
Aktivieren Sie die Erstellung der C ++ - Komponententests mithilfe des Google Test-Frameworks. Diese Option gibt den Pfad zur gtest-Quelle an. (Wenn das Framework nicht auf Ihrem System installiert ist, kann es von
github.com/google/googletest heruntergeladen werden.) Von
github.com/google/googletest .)
--mit Benchmark, - mit Benchmark-Quelle
Aktivieren Sie die Erstellung der Datenbank-Backend-Benchmarks mithilfe des Google Benchmark-Frameworks. Diese Option gibt den Pfad zur gtest-Quelle an. (Wenn das Framework nicht auf Ihrem System installiert ist, kann es von
github.com/google/benchmark heruntergeladen werden.)
--with-log4cplus
Definieren Sie den Pfad zum Auffinden der Log4cplus-Header und -Bibliotheken.
--with-openssl
Ersetzen Sie Botan durch die OpenSSL der kryptografischen Bibliothek. Standardmäßig konfiguriert die Suche nach einer gültigen Botan-Installation: Wenn eine nicht gefunden wird, wird nach OpenSSL gesucht.
Es wird relativ lange zusammengebaut. Während des Zusammenbaus kann es zu Fehlern kommen, wenn keine Abhängigkeit hergestellt wird. Am Ende sehen Sie das Montageergebnis:

Schritt 3. Installieren
make sudo make install
Der Make-Vorgang dauert sehr lange (ungefähr eine Stunde). Installieren Sie das Gerät etwa eine Minute lang.
Starten und einrichten
Es wird aus dem installierten Verzeichnis gestartet:
keactrl start
Es gibt immer noch Optionen zum Stoppen, Neuladen (Neuladen der Konfiguration) und Status
Beim Start werden drei Prozesse gestartet - kea-dhcp4, kea-dhcp6, kea-ctrl-agent - ein Agent zum Verwalten und Verwalten der Serverkommunikation
Wenn Sie dhcp6 nicht benötigen, können Sie nur dhcp4 ausführen. Vergessen Sie nicht, den Agenten zu starten:
keactrl start -s dhcp4, ctrl_agent
Konfiguration
Die Hauptkonfigurationsdatei dhcp4 lautet /usr/local/etc/kea/kea-dhcp4.conf
Die Datei ist gut beschrieben, es gibt viele Kommentare und Beispiele für Einstellungen, Sie werden nicht verwirrt, ich werde nur die Haupteinstellungen schreiben:
Geben Sie die Schnittstelle oder Adresse an, über die dhcp4 funktioniert:
"interfaces-config": { // interface name (eg "eth0" or specific IPv4 address on that // interface name (eg "eth0/192.0.2.1"). "interfaces": [ ] }
Geben Sie an, wo die Leasingbasis gespeichert werden soll
"lease-database": { // Memfile is the simplest and easiest backend to use. It's a in-memory // C++ database that stores its state in CSV file. "type": "memfile", "lfc-interval": 3600 },
Welche DNS-Server werden den Clients präsentiert?
"option-data": [ { "name": "domain-name-servers", "data": "192.0.2.1, 192.0.2.2" },
Der Domainname Ihrer Organisation
{ "name": "domain-search", "data": "mydomain.example.com, example.com" },
Die Haupteinstellung sind Subnetze, Pools und Standard-Gateway:
"subnet4": [ { //subnet , Kea "subnet": "192.0.2.0/24", // , "pools": [ { "pool": "192.0.2.1 - 192.0.2.200" } ], "option-data": [ { // default gateway "name": "routers", "data": "192.0.2.1" } ],
Nun, der letzte Parameter wird benötigt, um Adressen aus dem Pool / Subnetz zu reservieren. Die angegebenen Adressen werden nicht an Clients ausgegeben. Sie werden für Server- / Geräteadressen benötigt, die statisch registriert sind:
"reservations": [ { "hw-address": "1a:1b:1c:1d:1e:1f", "ip-address": "192.0.2.201" } ]
Hier sind die Haupteinstellungen. Nach dem Ändern der Konfiguration müssen Sie den Dienst neu starten.
keacrtl stop keactrl start -s dhcp4,ctrl_agent
CSV-Basis
Die lokale Datenbank wird hier gespeichert -
/usr/local/var/kea/kea-leases4.csv
Protokolle
Protokolle werden standardmäßig gespeichert - / usr / local / var / log /
Hier hat jede der Komponenten eine eigene Datei:
- kea-dhcp4.log
- kea-dhcp6.log
- kea-ctrl-agent.log
In einem separaten Artikel werde ich beschreiben, wie ein Cluster aus zwei Servern gestartet und die Synchronisation der Lease-Ausgabedatenbank konfiguriert wird.