<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.ixheim.de/index.php?action=history&amp;feed=atom&amp;title=OPNsense_KEA_HA</id>
	<title>OPNsense KEA HA - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.ixheim.de/index.php?action=history&amp;feed=atom&amp;title=OPNsense_KEA_HA"/>
	<link rel="alternate" type="text/html" href="https://wiki.ixheim.de/index.php?title=OPNsense_KEA_HA&amp;action=history"/>
	<updated>2026-11-03T08:56:20Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Xinux Wiki</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>https://wiki.ixheim.de/index.php?title=OPNsense_KEA_HA&amp;diff=73975&amp;oldid=prev</id>
		<title>Thomas.will: Link zur Animation ergänzt</title>
		<link rel="alternate" type="text/html" href="https://wiki.ixheim.de/index.php?title=OPNsense_KEA_HA&amp;diff=73975&amp;oldid=prev"/>
		<updated>2026-10-28T17:18:21Z</updated>

		<summary type="html">&lt;p&gt;Link zur Animation ergänzt&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;de&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version vom 28. Oktober 2026, 17:18 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Zeile 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Kea DHCP im HA-Cluster =&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Kea DHCP im HA-Cluster =&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* Animation (Kapitel „KEA HA“): [https://xinux.org/opnsense-ha.html OPNsense Hochverfügbarkeit]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Dieser Artikel setzt einen funktionierenden CARP-Cluster nach [[OPNsense HA Umsetzung]] voraus&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Dieser Artikel setzt einen funktionierenden CARP-Cluster nach [[OPNsense HA Umsetzung]] voraus&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Ziel: ein DHCP-Dienst, der einen Ausfall des Masters übersteht, ohne dass Clients ihre Adresse verlieren&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Ziel: ein DHCP-Dienst, der einen Ausfall des Masters übersteht, ohne dass Clients ihre Adresse verlieren&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key my_wiki:diff:1.41:old-73251:rev-73975:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Thomas.will</name></author>
	</entry>
	<entry>
		<id>https://wiki.ixheim.de/index.php?title=OPNsense_KEA_HA&amp;diff=73251&amp;oldid=prev</id>
		<title>Thomas.will: Die Seite wurde neu angelegt: „= Kea DHCP im HA-Cluster = * Dieser Artikel setzt einen funktionierenden CARP-Cluster nach OPNsense HA Umsetzung voraus * Ziel: ein DHCP-Dienst, der einen…“</title>
		<link rel="alternate" type="text/html" href="https://wiki.ixheim.de/index.php?title=OPNsense_KEA_HA&amp;diff=73251&amp;oldid=prev"/>
		<updated>2026-09-03T18:00:32Z</updated>

		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „= Kea DHCP im HA-Cluster = * Dieser Artikel setzt einen funktionierenden CARP-Cluster nach &lt;a href=&quot;/index.php/OPNsense_HA_Umsetzung&quot; title=&quot;OPNsense HA Umsetzung&quot;&gt;OPNsense HA Umsetzung&lt;/a&gt; voraus * Ziel: ein DHCP-Dienst, der einen…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Kea DHCP im HA-Cluster =&lt;br /&gt;
* Dieser Artikel setzt einen funktionierenden CARP-Cluster nach [[OPNsense HA Umsetzung]] voraus&lt;br /&gt;
* Ziel: ein DHCP-Dienst, der einen Ausfall des Masters übersteht, ohne dass Clients ihre Adresse verlieren&lt;br /&gt;
&lt;br /&gt;
== Warum nicht über das normale HA? ==&lt;br /&gt;
* Das OPNsense-HA besteht aus drei Mechanismen: CARP für die virtuellen IPs, pfsync für die Firewall-States und XMLRPC für die Konfiguration&lt;br /&gt;
* XMLRPC überträgt ausschließlich &amp;#039;&amp;#039;&amp;#039;Konfiguration&amp;#039;&amp;#039;&amp;#039;, keine Betriebsdaten&lt;br /&gt;
* Vergebene Adressen (Leases) sind Betriebsdaten – für sie gibt es im OPNsense-HA kein Gegenstück zu pfsync&lt;br /&gt;
* CARP meldet einem Knoten auch nicht, dass er die Rolle übernommen hat; das passiert im Kernel auf Interface-Ebene, die Dienste darüber merken davon nichts&lt;br /&gt;
* Deshalb bringt Kea eine eigene HA-Logik mit: eigener Kanal über HTTP, eigene Rollen, eigener Heartbeat&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;dnsmasq hat das nicht.&amp;#039;&amp;#039;&amp;#039; Dort bleibt nur, den DHCP-Dienst auf einen Knoten zu beschränken oder die Pools aufzuteilen&lt;br /&gt;
&lt;br /&gt;
== Betriebsmodell ==&lt;br /&gt;
* Kea arbeitet im Modus &amp;#039;&amp;#039;&amp;#039;Hot-Standby&amp;#039;&amp;#039;&amp;#039;: der Primary vergibt die Adressen, der Standby wartet und hält die Lease-Daten mit&lt;br /&gt;
* Fällt der Primary aus, übernimmt der Standby und vergibt aus demselben Pool weiter&lt;br /&gt;
* Kommt der Primary zurück, übernimmt er wieder&lt;br /&gt;
&lt;br /&gt;
== Vorbereitung ==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;dnsmasq als DHCP-Server abschalten&amp;#039;&amp;#039;&amp;#039; – sonst antworten zwei Server im selben Segment&lt;br /&gt;
** Services =&amp;gt; Dnsmasq DNS &amp;amp; DHCP =&amp;gt; General: DHCP-Ranges entfernen&lt;br /&gt;
* Beide Knoten müssen dieselbe OPNsense-Version haben&lt;br /&gt;
* Die HA-Kommunikation läuft über das SYN-Netz (100.64.64.0/30), dort erlaubt die vorhandene Allow-Regel bereits allen Verkehr&lt;br /&gt;
&lt;br /&gt;
== Ports ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Port !! Verwendung&lt;br /&gt;
|-&lt;br /&gt;
| 8000 || Control Agent (lokale Steuerung des Dienstes)&lt;br /&gt;
|-&lt;br /&gt;
| 8001 || Peer-Kommunikation zwischen den Knoten&lt;br /&gt;
|}&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Die beiden Ports müssen unterschiedlich sein.&amp;#039;&amp;#039;&amp;#039; Wird für die Peers derselbe Port wie für den Control Agent eingetragen, startet Kea zwar, findet den Partner aber nicht.&lt;br /&gt;
&lt;br /&gt;
= Control Agent (beide Firewalls) =&lt;br /&gt;
* Services =&amp;gt; Kea DHCP =&amp;gt; Control Agent&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parameter !! Wert&lt;br /&gt;
|-&lt;br /&gt;
| Enabled || aktiviert&lt;br /&gt;
|-&lt;br /&gt;
| Port || 8000&lt;br /&gt;
|}&lt;br /&gt;
* Anschließend &amp;#039;&amp;#039;&amp;#039;Apply&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
= DHCPv4 (Master Firewall) =&lt;br /&gt;
* Services =&amp;gt; Kea DHCP =&amp;gt; KEA DHCPv4&lt;br /&gt;
* Sämtliche Konfiguration erfolgt auf dem Master und wird später zum Backup übertragen&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parameter !! Wert&lt;br /&gt;
|-&lt;br /&gt;
| Enabled || aktiviert&lt;br /&gt;
|-&lt;br /&gt;
| Interfaces || LAN&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Subnetz ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parameter !! Wert&lt;br /&gt;
|-&lt;br /&gt;
| Subnet || 192.168.1.0/24&lt;br /&gt;
|-&lt;br /&gt;
| Pools || 192.168.1.100 - 192.168.1.150&lt;br /&gt;
|-&lt;br /&gt;
| Option: routers || 192.168.1.3&lt;br /&gt;
|-&lt;br /&gt;
| Option: domain-name-servers || 192.168.1.3&lt;br /&gt;
|}&lt;br /&gt;
;Achtung&lt;br /&gt;
* Als Router und DNS muss die &amp;#039;&amp;#039;&amp;#039;LAN-VIP 192.168.1.3&amp;#039;&amp;#039;&amp;#039; verteilt werden, nicht die 192.168.1.1&lt;br /&gt;
* Wird die echte Adresse des Masters verteilt, ist der Client beim Ausfall des Masters offline – obwohl der DHCP-Dienst hochverfügbar ist&lt;br /&gt;
&lt;br /&gt;
= High Availability (Master Firewall) =&lt;br /&gt;
* Services =&amp;gt; Kea DHCP =&amp;gt; Settings =&amp;gt; High Availability&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parameter !! Wert&lt;br /&gt;
|-&lt;br /&gt;
| Enabled || aktiviert&lt;br /&gt;
|-&lt;br /&gt;
| This server name || opns-ha1&lt;br /&gt;
|-&lt;br /&gt;
| Role || primary&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Peers ==&lt;br /&gt;
* Im Reiter &amp;#039;&amp;#039;&amp;#039;Peers&amp;#039;&amp;#039;&amp;#039; werden &amp;#039;&amp;#039;&amp;#039;beide&amp;#039;&amp;#039;&amp;#039; Knoten eingetragen, auch der eigene&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Name !! Role !! URL&lt;br /&gt;
|-&lt;br /&gt;
| opns-ha1 || primary || http://100.64.64.1:8001/&lt;br /&gt;
|-&lt;br /&gt;
| opns-ha2 || standby || http://100.64.64.2:8001/&lt;br /&gt;
|}&lt;br /&gt;
* Die Namen müssen exakt dem entsprechen, was auf dem jeweiligen Knoten unter &amp;#039;&amp;#039;&amp;#039;This server name&amp;#039;&amp;#039;&amp;#039; steht&lt;br /&gt;
&lt;br /&gt;
= Konfiguration übertragen =&lt;br /&gt;
* System =&amp;gt; High Availability =&amp;gt; Settings: den Dienst &amp;#039;&amp;#039;&amp;#039;Kea DHCP&amp;#039;&amp;#039;&amp;#039; zusätzlich in die Services-Liste aufnehmen und speichern&lt;br /&gt;
* System =&amp;gt; High Availability =&amp;gt; Status =&amp;gt; &amp;#039;&amp;#039;&amp;#039;Synchronize and reconfigure all&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
= High Availability (Backup Firewall) =&lt;br /&gt;
* Nach dem Sync liegt die Konfiguration auf dem Backup, die Rolle muss dort aber von Hand gesetzt werden&lt;br /&gt;
* Services =&amp;gt; Kea DHCP =&amp;gt; Settings =&amp;gt; High Availability&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parameter !! Wert&lt;br /&gt;
|-&lt;br /&gt;
| This server name || opns-ha2&lt;br /&gt;
|-&lt;br /&gt;
| Role || standby&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Funktionstest =&lt;br /&gt;
* Auf dem Client eine Adresse anfordern:&lt;br /&gt;
 ipconfig /release&lt;br /&gt;
 ipconfig /renew&lt;br /&gt;
 ipconfig /all&lt;br /&gt;
* Gateway und DNS müssen &amp;#039;&amp;#039;&amp;#039;192.168.1.3&amp;#039;&amp;#039;&amp;#039; sein&lt;br /&gt;
* Master in den Wartungsmodus versetzen: Interfaces =&amp;gt; Virtual IPs =&amp;gt; Status =&amp;gt; &amp;#039;&amp;#039;&amp;#039;Enter Persistent CARP Maintenance Mode&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Erneut &amp;#039;&amp;#039;&amp;#039;release&amp;#039;&amp;#039;&amp;#039; und &amp;#039;&amp;#039;&amp;#039;renew&amp;#039;&amp;#039;&amp;#039; auf dem Client – die Adresse muss weiterhin vergeben werden, jetzt vom Backup&lt;br /&gt;
* Zweiter Test: Master hart ausschalten und dasselbe prüfen&lt;br /&gt;
&lt;br /&gt;
= Debugging =&lt;br /&gt;
== Lauschen die Dienste? ==&lt;br /&gt;
* Auf beiden Knoten:&lt;br /&gt;
 sockstat -4 -l | grep 800&lt;br /&gt;
* Erwartet werden Einträge für 8000 und 8001&lt;br /&gt;
&lt;br /&gt;
== Erreicht der Master den Partner? ==&lt;br /&gt;
 curl http://100.64.64.2:8001/&lt;br /&gt;
&lt;br /&gt;
== Log ==&lt;br /&gt;
 tail -f /var/log/kea/latest.log&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Beobachtung !! Ursache&lt;br /&gt;
|-&lt;br /&gt;
| Kea startet, HA bleibt im Zustand &amp;quot;communication-recovery&amp;quot; || Peer nicht erreichbar – Port, IP oder Regel auf dem SYN-Interface prüfen&lt;br /&gt;
|-&lt;br /&gt;
| Partner wird nicht erkannt, obwohl erreichbar || Name im Peer-Eintrag stimmt nicht mit &amp;quot;This server name&amp;quot; überein&lt;br /&gt;
|-&lt;br /&gt;
| Beide Knoten vergeben Adressen || dnsmasq läuft noch als DHCP-Server&lt;br /&gt;
|-&lt;br /&gt;
| Client bekommt 192.168.1.1 als Gateway || Option &amp;quot;routers&amp;quot; zeigt nicht auf die VIP&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Thomas.will</name></author>
	</entry>
</feed>