<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://techcorner.max-it.de/index.php?action=history&amp;feed=atom&amp;title=OPNsense_-_Kea_DHCP_mit_Hochverf%C3%BCgbarkeit</id>
	<title>OPNsense - Kea DHCP mit Hochverfügbarkeit - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://techcorner.max-it.de/index.php?action=history&amp;feed=atom&amp;title=OPNsense_-_Kea_DHCP_mit_Hochverf%C3%BCgbarkeit"/>
	<link rel="alternate" type="text/html" href="https://techcorner.max-it.de/index.php?title=OPNsense_-_Kea_DHCP_mit_Hochverf%C3%BCgbarkeit&amp;action=history"/>
	<updated>2026-10-09T00:00:41Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in maxTechCorner</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://techcorner.max-it.de/index.php?title=OPNsense_-_Kea_DHCP_mit_Hochverf%C3%BCgbarkeit&amp;diff=3937&amp;oldid=prev</id>
		<title>imported&gt;TechCorner-Redaktion: Verlinkung auf den Artikel OPNsense - Hochverfügbarkeit mit CARP und pfsync ergänzt</title>
		<link rel="alternate" type="text/html" href="https://techcorner.max-it.de/index.php?title=OPNsense_-_Kea_DHCP_mit_Hochverf%C3%BCgbarkeit&amp;diff=3937&amp;oldid=prev"/>
		<updated>2026-10-08T00:00:00Z</updated>

		<summary type="html">&lt;p&gt;Verlinkung auf den Artikel OPNsense - Hochverfügbarkeit mit CARP und pfsync ergänzt&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Steckbrief&lt;br /&gt;
| gilt_fuer   = OPNsense 26.1 und 26.7 (Services → Kea DHCP, im Kern enthalten), Kea 3.0&lt;br /&gt;
| bereich     = IT-Security&lt;br /&gt;
| dauer       = ca. 45 Minuten (DHCPv4 mit HA-Cluster aus zwei Firewalls)&lt;br /&gt;
| rechte      = Administrator (OPNsense-WebUI), bestehender CARP/HA-Cluster&lt;br /&gt;
| stand       = Oktober 2026 (OPNsense 26.7.5, Kea 3.0.4)&lt;br /&gt;
}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Kea DHCP in OPNsense&amp;#039;&amp;#039;&amp;#039; ist der moderne DHCP-Server des Internet Systems Consortium (ISC) und Nachfolger des klassischen ISC-DHCP. Seine besondere Stärke ist die &amp;#039;&amp;#039;&amp;#039;Hochverfügbarkeit (HA)&amp;#039;&amp;#039;&amp;#039;: Zwei OPNsense-Firewalls synchronisieren ihre Leases fortlaufend, sodass bei einem Ausfall die zweite Firewall nahtlos weiterarbeitet – ohne getrennte Adresspools und ohne Adresskonflikte. Dazu kommen Reservierungen mit CSV-Import, flexible DHCP-Optionen, Prefix Delegation für IPv6 und dynamische DNS-Updates (DDNS).&lt;br /&gt;
&lt;br /&gt;
Dieser Artikel zeigt die Einrichtung mit OPNsense 26.7 und legt den Schwerpunkt auf den &amp;#039;&amp;#039;&amp;#039;HA-Betrieb im [[OPNsense - Hochverfügbarkeit mit CARP und pfsync|CARP-Cluster]]&amp;#039;&amp;#039;&amp;#039;: Funktionsweise, Schritt-für-Schritt-Konfiguration, Failover-Zeiten, Tests und typische Fehler.&lt;br /&gt;
&lt;br /&gt;
== Kea oder Dnsmasq? ==&lt;br /&gt;
Seit OPNsense 26.1 ist [[OPNsense - Dnsmasq DHCP-Server|Dnsmasq]] der Standard-DHCP-Server, ISC-DHCP ist nur noch als Plugin erhältlich. Kea ist die Wahl für größere und hochverfügbare Umgebungen:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Kriterium !! Kea DHCP !! Dnsmasq&lt;br /&gt;
|-&lt;br /&gt;
| Einsatzgröße || mittel bis groß (laut OPNsense ab ca. 1.000 Clients), viele VLANs || klein bis mittel&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Hochverfügbarkeit&amp;#039;&amp;#039;&amp;#039; || &amp;#039;&amp;#039;&amp;#039;Lease-Synchronisation&amp;#039;&amp;#039;&amp;#039; zwischen zwei Servern (hot-standby) || getrennte Pools, Backup antwortet verzögert&lt;br /&gt;
|-&lt;br /&gt;
| DNS-Registrierung || DDNS (RFC 2136) mit TSIG an einen updatefähigen DNS-Server || integriert, direkt mit Unbound nutzbar&lt;br /&gt;
|-&lt;br /&gt;
| IPv6 Prefix Delegation || &amp;#039;&amp;#039;&amp;#039;ja&amp;#039;&amp;#039;&amp;#039; (statisch und dynamisch, inkl. Routen) || nein&lt;br /&gt;
|-&lt;br /&gt;
| Konfiguration || umfangreicher, Optionen pro Subnetz und Reservierung || einfacher, Tags&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Datei:OPNsense-Kea-DHCP-HA.png|thumb|center|750px|Kea DHCP im HA-Cluster: Die primäre OPNsense beantwortet die DHCP-Anfragen und überträgt jede Lease an den Standby-Partner; fällt sie aus, übernimmt der Standby nach spätestens rund 60 Sekunden. Gateway und DNS zeigen auf die CARP-Adresse.]]&lt;br /&gt;
&lt;br /&gt;
== Menü und Bausteine ==&lt;br /&gt;
Unter &amp;#039;&amp;#039;&amp;#039;Services → Kea DHCP&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Menüpunkt !! Zweck&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Control Agent&amp;#039;&amp;#039;&amp;#039; || REST-Schnittstelle von Kea – &amp;#039;&amp;#039;&amp;#039;Voraussetzung für HA&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;DDNS Agent&amp;#039;&amp;#039;&amp;#039; || Vermittler für dynamische DNS-Updates (D2-Server)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Kea DHCPv4&amp;#039;&amp;#039;&amp;#039; / &amp;#039;&amp;#039;&amp;#039;Kea DHCPv6&amp;#039;&amp;#039;&amp;#039; || Reiter &amp;#039;&amp;#039;Settings&amp;#039;&amp;#039;, &amp;#039;&amp;#039;Subnets&amp;#039;&amp;#039;, &amp;#039;&amp;#039;Reservations&amp;#039;&amp;#039;, &amp;#039;&amp;#039;HA Peers&amp;#039;&amp;#039;, &amp;#039;&amp;#039;Options&amp;#039;&amp;#039; (bei DHCPv6 zusätzlich Prefix Delegation)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Leases DHCPv4&amp;#039;&amp;#039;&amp;#039; / &amp;#039;&amp;#039;&amp;#039;Leases DHCPv6&amp;#039;&amp;#039;&amp;#039; || aktuelle Leases, einzelne Leases löschen; auch als Dashboard-Widget&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Log File&amp;#039;&amp;#039;&amp;#039; || Meldungen aller Kea-Dienste, inklusive HA-Zustandswechsel&lt;br /&gt;
|}&lt;br /&gt;
Die Leases werden in einer Datei gespeichert (&amp;#039;&amp;#039;memfile&amp;#039;&amp;#039;, persistent), sodass sie Neustarts überstehen.&lt;br /&gt;
&lt;br /&gt;
== Teil 1: Kea DHCPv4 auf einer Firewall ==&lt;br /&gt;
=== Grundeinstellungen ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Services → Kea DHCP → Kea DHCPv4 → Settings&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Enabled&amp;#039;&amp;#039;&amp;#039; und &amp;#039;&amp;#039;&amp;#039;Interfaces&amp;#039;&amp;#039;&amp;#039; (z. B. LAN, VLANs)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Valid lifetime&amp;#039;&amp;#039;&amp;#039; – Lease-Dauer in Sekunden (Standard pro Dienst, pro Subnetz überschreibbar)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Firewall rules&amp;#039;&amp;#039;&amp;#039; – legt die nötigen DHCP-Regeln automatisch an&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Socket Type&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;raw&amp;#039;&amp;#039; (Standard); &amp;#039;&amp;#039;udp&amp;#039;&amp;#039; nur, wenn ausschließlich über DHCP-Relays verteilt wird&lt;br /&gt;
{{Hinweis|Auf derselben Schnittstelle darf nur ein DHCP-Server laufen. Vor der Aktivierung von Kea Dnsmasq-DHCP bzw. ISC-DHCP auf diesen Schnittstellen abschalten.}}&lt;br /&gt;
&lt;br /&gt;
=== Subnetze ===&lt;br /&gt;
Reiter &amp;#039;&amp;#039;&amp;#039;Subnets&amp;#039;&amp;#039;&amp;#039; → &amp;#039;&amp;#039;&amp;#039;+&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feld !! Beispiel / Hinweis&lt;br /&gt;
|-&lt;br /&gt;
| Subnet || &amp;lt;code&amp;gt;192.168.1.0/24&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Pools || &amp;lt;code&amp;gt;192.168.1.100 - 192.168.1.199&amp;lt;/code&amp;gt; (mehrere Zeilen möglich)&lt;br /&gt;
|-&lt;br /&gt;
| Auto collect option data || bei Einzelbetrieb aktiv – Gateway, DNS und NTP werden aus der Schnittstelle übernommen. &amp;#039;&amp;#039;&amp;#039;Im HA-Betrieb deaktivieren!&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| Routers (gateway) / DNS servers || bei HA die &amp;#039;&amp;#039;&amp;#039;CARP-Adresse&amp;#039;&amp;#039;&amp;#039;, z. B. &amp;lt;code&amp;gt;192.168.1.1&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Domain name / Domain search / NTP servers || nach Bedarf&lt;br /&gt;
|-&lt;br /&gt;
| Classless static routes || Option 121 für zusätzliche Routen&lt;br /&gt;
|-&lt;br /&gt;
| ICMP ping || prüft vor der Vergabe, ob die Adresse frei ist (26.7.5: weitere Einstellungen pro Subnetz)&lt;br /&gt;
|-&lt;br /&gt;
| Next server / TFTP server / TFTP bootfile name || für PXE-Boot&lt;br /&gt;
|-&lt;br /&gt;
| Match client-id || Standard: Clients werden über die Client-ID erkannt; deaktivieren, um MAC-basiert zu arbeiten&lt;br /&gt;
|}&lt;br /&gt;
Eigene Optionen (z. B. Option 66/150 für VoIP-Telefone) werden im Reiter &amp;#039;&amp;#039;&amp;#039;Options&amp;#039;&amp;#039;&amp;#039; angelegt und im Subnetz oder in einer Reservierung ausgewählt.&lt;br /&gt;
&lt;br /&gt;
=== Reservierungen ===&lt;br /&gt;
Reiter &amp;#039;&amp;#039;&amp;#039;Reservations&amp;#039;&amp;#039;&amp;#039;: Subnetz, &amp;#039;&amp;#039;&amp;#039;IP address&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;MAC address&amp;#039;&amp;#039;&amp;#039; bzw. &amp;#039;&amp;#039;&amp;#039;Client ID&amp;#039;&amp;#039;&amp;#039;, optional &amp;#039;&amp;#039;&amp;#039;Hostname&amp;#039;&amp;#039;&amp;#039; und abweichende Optionen (Gateway, DNS, Routen). Über &amp;#039;&amp;#039;&amp;#039;Import&amp;#039;&amp;#039;&amp;#039;/&amp;#039;&amp;#039;&amp;#039;Export&amp;#039;&amp;#039;&amp;#039; im CSV-Format lassen sich viele Einträge auf einmal pflegen – etwa die aus dem ISC-DHCP-Plugin exportierten statischen Zuordnungen bei einer Migration.&lt;br /&gt;
&lt;br /&gt;
== Teil 2: Hochverfügbarkeit mit zwei OPNsense ==&lt;br /&gt;
=== So funktioniert Kea HA ===&lt;br /&gt;
OPNsense konfiguriert Kea HA im Modus &amp;#039;&amp;#039;&amp;#039;hot-standby&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
* Beide Firewalls betreiben Kea mit &amp;#039;&amp;#039;&amp;#039;identischer Konfiguration&amp;#039;&amp;#039;&amp;#039; (über die HA-Synchronisation von OPNsense).&lt;br /&gt;
* Der &amp;#039;&amp;#039;&amp;#039;primary&amp;#039;&amp;#039;&amp;#039;-Server beantwortet alle DHCP-Anfragen und überträgt jede neue oder verlängerte Lease sofort an den &amp;#039;&amp;#039;&amp;#039;standby&amp;#039;&amp;#039;&amp;#039;-Partner.&lt;br /&gt;
* Die Partner tauschen alle &amp;#039;&amp;#039;&amp;#039;10 Sekunden&amp;#039;&amp;#039;&amp;#039; ein Heartbeat-Signal aus (&amp;#039;&amp;#039;heartbeat-delay&amp;#039;&amp;#039;).&lt;br /&gt;
* Antwortet der Partner &amp;#039;&amp;#039;&amp;#039;60 Sekunden&amp;#039;&amp;#039;&amp;#039; lang nicht (&amp;#039;&amp;#039;max-response-delay&amp;#039;&amp;#039;) und bleiben zusätzlich Anfragen von Clients unbeantwortet (&amp;#039;&amp;#039;Max Unacked clients&amp;#039;&amp;#039;, Standard 2), wechselt der Standby in den Zustand &amp;#039;&amp;#039;partner-down&amp;#039;&amp;#039; und vergibt selbst Adressen aus denselben Pools.&lt;br /&gt;
* Kehrt der Primary zurück, gleicht er zuerst die Leases mit dem Partner ab (&amp;#039;&amp;#039;sync-timeout&amp;#039;&amp;#039; 60 Sekunden) und übernimmt dann wieder.&lt;br /&gt;
* Die Kommunikation läuft über einen eigenen HTTP-Listener je Peer (Multi-Threaded HA, &amp;#039;&amp;#039;HA+MT&amp;#039;&amp;#039;), der Control Agent selbst darf daher auf &amp;lt;code&amp;gt;127.0.0.1&amp;lt;/code&amp;gt; lauschen.&lt;br /&gt;
&lt;br /&gt;
{{Hinweis|&amp;#039;&amp;#039;&amp;#039;Kea HA ist unabhängig von CARP.&amp;#039;&amp;#039;&amp;#039; Welche Firewall Kea-Primary ist, richtet sich nach der Rolle im Kea-Peer, nicht nach dem CARP-Status. Deshalb müssen &amp;#039;&amp;#039;&amp;#039;Gateway und DNS-Server&amp;#039;&amp;#039;&amp;#039; als Option immer auf die &amp;#039;&amp;#039;&amp;#039;CARP-Adresse&amp;#039;&amp;#039;&amp;#039; zeigen – und &amp;#039;&amp;#039;Auto collect option data&amp;#039;&amp;#039; muss aus sein, sonst erhält jeder Client die physische Adresse der Firewall, die ihn gerade bedient hat.}}&lt;br /&gt;
&lt;br /&gt;
=== Beispiel-Szenario ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Eigenschaft !! Wert&lt;br /&gt;
|-&lt;br /&gt;
| LAN || &amp;lt;code&amp;gt;192.168.1.0/24&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| CARP-Adresse LAN || &amp;lt;code&amp;gt;192.168.1.1&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Master (fw1) LAN || &amp;lt;code&amp;gt;192.168.1.2&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Backup (fw2) LAN || &amp;lt;code&amp;gt;192.168.1.3&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Pool || &amp;lt;code&amp;gt;192.168.1.100 - 192.168.1.199&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
Voraussetzung ist ein funktionierender CARP-Cluster mit Konfigurations-Synchronisation (&amp;#039;&amp;#039;System → High Availability&amp;#039;&amp;#039;). &amp;#039;&amp;#039;&amp;#039;Alle Einstellungen erfolgen auf dem Master&amp;#039;&amp;#039;&amp;#039; und werden anschließend auf den Backup übertragen.&lt;br /&gt;
&lt;br /&gt;
=== Schritt 1: Control Agent ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Services → Kea DHCP → Control Agent&amp;#039;&amp;#039;&amp;#039;: &amp;#039;&amp;#039;Enabled&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;Bind address&amp;#039;&amp;#039;&amp;#039; &amp;lt;code&amp;gt;127.0.0.1&amp;lt;/code&amp;gt;, &amp;#039;&amp;#039;&amp;#039;Bind port&amp;#039;&amp;#039;&amp;#039; &amp;lt;code&amp;gt;8000&amp;lt;/code&amp;gt; → &amp;#039;&amp;#039;Apply&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
=== Schritt 2: DHCPv4-Einstellungen mit HA ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Kea DHCPv4 → Settings&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
* &amp;#039;&amp;#039;Enabled&amp;#039;&amp;#039;, &amp;#039;&amp;#039;Interfaces&amp;#039;&amp;#039; = LAN, &amp;#039;&amp;#039;Firewall rules&amp;#039;&amp;#039; aktiv&lt;br /&gt;
* Abschnitt &amp;#039;&amp;#039;&amp;#039;High Availability&amp;#039;&amp;#039;&amp;#039;: &amp;#039;&amp;#039;Enabled&amp;#039;&amp;#039;; &amp;#039;&amp;#039;&amp;#039;This server name&amp;#039;&amp;#039;&amp;#039; leer lassen bzw. den vorgeschlagenen Standard (Hostname der Firewall) übernehmen – so ergibt sich auf jeder Firewall automatisch der richtige Name.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Max Unacked clients&amp;#039;&amp;#039;&amp;#039;: Standard &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;; mit &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; löst bereits jede Netzstörung einen Failover aus, höhere Werte machen den Failover in kleinen Netzen träger.&lt;br /&gt;
&lt;br /&gt;
=== Schritt 3: Subnetz für HA ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Subnets&amp;#039;&amp;#039;&amp;#039;: &amp;#039;&amp;#039;Subnet&amp;#039;&amp;#039; &amp;lt;code&amp;gt;192.168.1.0/24&amp;lt;/code&amp;gt;, &amp;#039;&amp;#039;Pools&amp;#039;&amp;#039; &amp;lt;code&amp;gt;192.168.1.100 - 192.168.1.199&amp;lt;/code&amp;gt;, &amp;#039;&amp;#039;&amp;#039;Auto collect option data&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;aus&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;Routers&amp;#039;&amp;#039;&amp;#039; und &amp;#039;&amp;#039;&amp;#039;DNS servers&amp;#039;&amp;#039;&amp;#039; = &amp;lt;code&amp;gt;192.168.1.1&amp;lt;/code&amp;gt; (CARP).&lt;br /&gt;
&lt;br /&gt;
=== Schritt 4: HA Peers ===&lt;br /&gt;
Reiter &amp;#039;&amp;#039;&amp;#039;HA Peers&amp;#039;&amp;#039;&amp;#039;, zwei Einträge (auf dem Master angelegt, gelten für beide Firewalls):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Name !! Role !! Url&lt;br /&gt;
|-&lt;br /&gt;
| Hostname von fw1 (wie unter &amp;#039;&amp;#039;This server name&amp;#039;&amp;#039; angezeigt) || &amp;#039;&amp;#039;primary&amp;#039;&amp;#039; || &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://192.168.1.2:8001/&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Hostname von fw2 || &amp;#039;&amp;#039;standby&amp;#039;&amp;#039; || &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://192.168.1.3:8001/&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
Der Port der Peers (&amp;#039;&amp;#039;&amp;#039;8001&amp;#039;&amp;#039;&amp;#039;) muss sich vom Port des Control Agents (8000) unterscheiden. Als Adressen die &amp;#039;&amp;#039;&amp;#039;physischen&amp;#039;&amp;#039;&amp;#039; Adressen der Firewalls verwenden, nicht die CARP-Adresse. Speichern und &amp;#039;&amp;#039;Apply&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
=== Schritt 5: Synchronisieren ===&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;System → High Availability → Settings&amp;#039;&amp;#039;&amp;#039;: unter &amp;#039;&amp;#039;Services to synchronize&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;Kea DHCP&amp;#039;&amp;#039;&amp;#039; auswählen.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;System → High Availability → Status&amp;#039;&amp;#039;&amp;#039;: &amp;#039;&amp;#039;&amp;#039;Synchronize and reconfigure all&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
Danach läuft Kea auf beiden Firewalls, und die Leases werden in beide Richtungen synchronisiert.&lt;br /&gt;
&lt;br /&gt;
=== Schritt 6: Firewall und Netz ===&lt;br /&gt;
* Die Peers erreichen sich per HTTP auf TCP 8001 über die angegebenen Adressen. Liegen diese im LAN, erlaubt die übliche LAN-Regel den Verkehr; bei einer eigenen Sync-Schnittstelle eine Regel für TCP 8001 zwischen den Firewalls anlegen.&lt;br /&gt;
* Die HA-Kommunikation ist &amp;#039;&amp;#039;&amp;#039;unverschlüsselt und ohne Anmeldung&amp;#039;&amp;#039;&amp;#039; – Peer-Adressen nur in vertrauenswürdigen Netzen bzw. auf einer dedizierten HA-/Sync-Schnittstelle verwenden.&lt;br /&gt;
* Beide Firewalls per &amp;#039;&amp;#039;&amp;#039;NTP&amp;#039;&amp;#039;&amp;#039; synchron halten: Kea prüft die Uhrzeit des Partners und stellt die Synchronisation bei größerer Zeitabweichung ein.&lt;br /&gt;
&lt;br /&gt;
=== Failover testen ===&lt;br /&gt;
# Unter &amp;#039;&amp;#039;Leases DHCPv4&amp;#039;&amp;#039; auf &amp;#039;&amp;#039;&amp;#039;beiden&amp;#039;&amp;#039;&amp;#039; Firewalls prüfen, ob dieselben Leases erscheinen (ein neuer Client muss auf beiden sichtbar sein).&lt;br /&gt;
# Auf dem Primary den Kea-Dienst stoppen (Dashboard-Widget &amp;#039;&amp;#039;Services&amp;#039;&amp;#039;) oder die Firewall herunterfahren.&lt;br /&gt;
# Im &amp;#039;&amp;#039;Log File&amp;#039;&amp;#039; des Standby den Wechsel nach &amp;#039;&amp;#039;partner-down&amp;#039;&amp;#039; verfolgen – nach etwa &amp;#039;&amp;#039;&amp;#039;60 Sekunden&amp;#039;&amp;#039;&amp;#039; plus unbeantworteten Client-Anfragen übernimmt er.&lt;br /&gt;
# Einen Client neu verbinden: Er erhält eine Adresse vom Standby, Gateway und DNS bleiben die CARP-Adresse.&lt;br /&gt;
# Primary wieder starten: Er synchronisiert die Leases und übernimmt erneut.&lt;br /&gt;
Bestehende Clients merken vom Failover in der Regel nichts – sie verlängern ihre Lease erst nach der Hälfte der Laufzeit und erreichen dann den aktiven Server.&lt;br /&gt;
&lt;br /&gt;
=== Weitere Netze und DHCPv6 ===&lt;br /&gt;
Für jedes weitere VLAN genügt ein weiteres Subnetz mit eigener CARP-Adresse als Gateway/DNS; die HA-Peers gelten für alle Subnetze. Für &amp;#039;&amp;#039;&amp;#039;DHCPv6&amp;#039;&amp;#039;&amp;#039; werden Control Agent und HA analog unter &amp;#039;&amp;#039;Kea DHCPv6&amp;#039;&amp;#039; eingerichtet (eigene HA Peers, anderer Port als bei DHCPv4, z. B. 8002). Router Advertisements kommen weiterhin aus &amp;#039;&amp;#039;Services → Router Advertisements&amp;#039;&amp;#039; (bei Kea im Modus &amp;#039;&amp;#039;Assisted&amp;#039;&amp;#039; oder &amp;#039;&amp;#039;Managed&amp;#039;&amp;#039;).&lt;br /&gt;
&lt;br /&gt;
== Prefix Delegation (IPv6) ==&lt;br /&gt;
Kea delegiert IPv6-Präfixe an nachgelagerte Router – statisch per Reservierung oder dynamisch aus einem Pool. OPNsense installiert dafür automatisch die passenden Routen zum jeweiligen Router (&amp;#039;&amp;#039;Route Installation&amp;#039;&amp;#039;). Das ist der wichtigste Grund, im IPv6-Umfeld Kea statt Dnsmasq zu verwenden.&lt;br /&gt;
&lt;br /&gt;
== Dynamisches DNS (DDNS) ==&lt;br /&gt;
Kea registriert Clients nicht direkt in Unbound, sondern sendet Updates nach RFC 2136 an einen &amp;#039;&amp;#039;&amp;#039;autoritativen DNS-Server, der dynamische Updates annimmt&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;DDNS Agent&amp;#039;&amp;#039;&amp;#039; aktivieren (Bind address &amp;lt;code&amp;gt;127.0.0.1&amp;lt;/code&amp;gt;, Port &amp;lt;code&amp;gt;53001&amp;lt;/code&amp;gt;).&lt;br /&gt;
# Im Subnetz die Felder &amp;#039;&amp;#039;DNS forward zone&amp;#039;&amp;#039; (z. B. &amp;lt;code&amp;gt;lan.internal.&amp;lt;/code&amp;gt;), &amp;#039;&amp;#039;DNS reverse zone&amp;#039;&amp;#039;, &amp;#039;&amp;#039;DNS server address&amp;#039;&amp;#039; sowie &amp;#039;&amp;#039;&amp;#039;TSIG key name/secret/algorithm&amp;#039;&amp;#039;&amp;#039; ausfüllen.&lt;br /&gt;
# Als Ziel eignet sich z. B. das Plugin &amp;#039;&amp;#039;os-bind&amp;#039;&amp;#039; mit einer dynamischen Zone; Unbound leitet diese Zone per Query Forwarding an BIND weiter (siehe [[OPNsense - Unbound DNS Resolver]]).&lt;br /&gt;
Die OPNsense-Oberfläche bietet TSIG an, aber kein GSS-TSIG – AD-integrierte Windows-Zonen mit „nur sicheren Updates“ lassen sich so nicht direkt beschreiben.&lt;br /&gt;
&lt;br /&gt;
== Migration von ISC-DHCP ==&lt;br /&gt;
# Im ISC-DHCP-Plugin die statischen Zuordnungen als &amp;#039;&amp;#039;&amp;#039;CSV exportieren&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
# In Kea die Subnetze (mit Pools und Optionen) anlegen und die Reservierungen per &amp;#039;&amp;#039;&amp;#039;CSV importieren&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
# Im Wartungsfenster ISC-DHCP auf den Schnittstellen deaktivieren, Kea aktivieren; im HA-Cluster anschließend wie oben synchronisieren.&lt;br /&gt;
# In Unbound &amp;#039;&amp;#039;Register ISC DHCP4 Leases&amp;#039;&amp;#039; deaktivieren und – falls Namen benötigt werden – DDNS einrichten.&lt;br /&gt;
# Nach erfolgreichem Umstieg das Plugin &amp;#039;&amp;#039;os-isc-dhcp&amp;#039;&amp;#039; entfernen.&lt;br /&gt;
&lt;br /&gt;
== Sicherheitsempfehlungen ==&lt;br /&gt;
* Control Agent nur auf &amp;lt;code&amp;gt;127.0.0.1&amp;lt;/code&amp;gt; binden; HA-Peers nur über vertrauenswürdige Netze.&lt;br /&gt;
* DHCP nur auf den benötigten Schnittstellen aktivieren; Rogue-DHCP per &amp;#039;&amp;#039;&amp;#039;DHCP Snooping&amp;#039;&amp;#039;&amp;#039; auf den Switches verhindern.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Decline Probation Period&amp;#039;&amp;#039;&amp;#039; (erweitert) beibehalten bzw. moderat wählen – fehlerhafte Clients können sonst den Pool mit abgelehnten Adressen blockieren.&lt;br /&gt;
* TSIG-Schlüssel für DDNS geheim halten und je Zone getrennt vergeben.&lt;br /&gt;
* Kea-Logs (HA-Zustandswechsel, erschöpfte Pools) an ein Monitoring oder SIEM übertragen, z. B. mit dem [[OPNsense - Wazuh-Agent|Wazuh-Agent]] oder [[OPNsense - Zabbix-Agent|Zabbix]].&lt;br /&gt;
&lt;br /&gt;
== Typische Probleme und Lösungen ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Symptom !! Ursache und Lösung&lt;br /&gt;
|-&lt;br /&gt;
| Kea startet nicht || Anderer DHCP-Server (Dnsmasq/ISC) auf derselben Schnittstelle aktiv; Log prüfen.&lt;br /&gt;
|-&lt;br /&gt;
| HA-Hook startet nicht || Control Agent nicht aktiviert, &amp;#039;&amp;#039;This server name&amp;#039;&amp;#039; passt zu keinem HA-Peer oder Peer-Port gleich dem Control-Agent-Port.&lt;br /&gt;
|-&lt;br /&gt;
| Partner wird als nicht erreichbar gemeldet || Peer-URL falsch, TCP 8001 blockiert, Kea auf dem Partner gestoppt oder Konfiguration nicht synchronisiert.&lt;br /&gt;
|-&lt;br /&gt;
| HA bleibt im Zustand &amp;#039;&amp;#039;waiting&amp;#039;&amp;#039;/&amp;#039;&amp;#039;syncing&amp;#039;&amp;#039; || Partner nicht erreichbar oder große Lease-Datenbank – Log beobachten; Zeitabweichung zwischen den Firewalls per NTP beheben.&lt;br /&gt;
|-&lt;br /&gt;
| Clients erhalten nach Failover falsches Gateway/DNS || &amp;#039;&amp;#039;Auto collect option data&amp;#039;&amp;#039; aktiv bzw. Routers/DNS nicht auf die CARP-Adresse gesetzt.&lt;br /&gt;
|-&lt;br /&gt;
| Reservierung greift nicht || Client meldet sich mit Client-ID statt MAC – Client-ID eintragen oder &amp;#039;&amp;#039;Match client-id&amp;#039;&amp;#039; im Subnetz deaktivieren.&lt;br /&gt;
|-&lt;br /&gt;
| Pool läuft voll || Lease-Dauer verkürzen, Pool vergrößern, Leases unter &amp;#039;&amp;#039;Leases DHCPv4&amp;#039;&amp;#039; prüfen und einzelne Leases löschen.&lt;br /&gt;
|-&lt;br /&gt;
| DDNS-Einträge fehlen || DDNS Agent aus, TSIG falsch, Zone nimmt keine Updates an oder Client sendet keinen Hostnamen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Fazit ==&lt;br /&gt;
Kea DHCP ist auf OPNsense die richtige Wahl, wenn DHCP ausfallsicher sein muss: Im hot-standby-Modus synchronisieren zwei Firewalls jede Lease, und der Standby übernimmt nach rund einer Minute automatisch – ohne geteilte Pools. Entscheidend sind wenige Details: Control Agent aktivieren, Peers mit eigenem Port und physischen Adressen, Gateway und DNS auf die CARP-Adresse und &amp;#039;&amp;#039;Auto collect option data&amp;#039;&amp;#039; aus. Für kleinere Netze ohne HA-Anforderung bleibt Dnsmasq die einfachere Alternative.&lt;br /&gt;
&lt;br /&gt;
== Unterstützung von m.a.x. it ==&lt;br /&gt;
Sie planen einen hochverfügbaren OPNsense-Cluster mit ausfallsicherem DHCP oder möchten von ISC-DHCP auf Kea umsteigen? m.a.x. it unterstützt Sie als OPNsense-Gold-Partner mit [https://www.max-it.de/it-services/opnsense/ OPNsense-Firewall-Services von m.a.x. it] und einer [https://www.max-it.de/it-services/managed-firewall/ Managed Firewall von m.a.x. it].&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[OPNsense - Hochverfügbarkeit mit CARP und pfsync]]&lt;br /&gt;
* [[DHCP]]&lt;br /&gt;
* [[OPNsense - Dnsmasq DHCP-Server]]&lt;br /&gt;
* [[OPNsense - Unbound DNS Resolver]]&lt;br /&gt;
* [[OPNsense - Eine kurze Einführung]]&lt;br /&gt;
* [[OPNsense - Wazuh-Agent]]&lt;br /&gt;
* [[OPNsense - Zabbix-Agent]]&lt;br /&gt;
&lt;br /&gt;
== Links und Quellen ==&lt;br /&gt;
* [https://docs.opnsense.org/manual/kea.html OPNsense-Doku – Kea DHCP]&lt;br /&gt;
* [https://kea.readthedocs.io/en/latest/arm/hooks.html Kea-Handbuch – Hook-Bibliotheken (u. a. High Availability)]&lt;br /&gt;
* [https://www.isc.org/kea/ ISC – Kea DHCP]&lt;br /&gt;
* [https://www.max-it.de/it-services/opnsense/ m.a.x. it – OPNsense-Firewall-Services]&lt;br /&gt;
&lt;br /&gt;
{{Uebermax}}&lt;br /&gt;
[[Kategorie:IT-Security]]&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;TechCorner-Redaktion</name></author>
	</entry>
</feed>