<?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_HA_Umsetzung</id>
	<title>OPNsense HA Umsetzung - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.ixheim.de/index.php?action=history&amp;feed=atom&amp;title=OPNsense_HA_Umsetzung"/>
	<link rel="alternate" type="text/html" href="https://wiki.ixheim.de/index.php?title=OPNsense_HA_Umsetzung&amp;action=history"/>
	<updated>2026-06-29T00:07:47Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Xinux Wiki</subtitle>
	<generator>MediaWiki 1.35.1</generator>
	<entry>
		<id>https://wiki.ixheim.de/index.php?title=OPNsense_HA_Umsetzung&amp;diff=67156&amp;oldid=prev</id>
		<title>Thomas.will: Die Seite wurde neu angelegt: „  =Plan= {{#drawio:ha-opnsense-kit}} =Wichtig= *Auf den lan und wan Interfaces muss der Promiscuos-Modus eingestellt sein. *Sowohl als Master als auch auf der…“</title>
		<link rel="alternate" type="text/html" href="https://wiki.ixheim.de/index.php?title=OPNsense_HA_Umsetzung&amp;diff=67156&amp;oldid=prev"/>
		<updated>2026-02-20T15:23:19Z</updated>

		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „  =Plan= {{#drawio:ha-opnsense-kit}} =Wichtig= *Auf den lan und wan Interfaces muss der Promiscuos-Modus eingestellt sein. *Sowohl als Master als auch auf der…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
=Plan=&lt;br /&gt;
{{#drawio:ha-opnsense-kit}}&lt;br /&gt;
=Wichtig=&lt;br /&gt;
*Auf den lan und wan Interfaces muss der Promiscuos-Modus eingestellt sein.&lt;br /&gt;
*Sowohl als Master als auch auf der Backup&lt;br /&gt;
&lt;br /&gt;
;Begründung&lt;br /&gt;
*CARP verwendet virtuelle MAC-Adressen für die gemeinsame VIP. In virtualisierten Umgebungen werden Frames mit diesen MAC-Adressen vom Hypervisor standardmäßig verworfen, da sie nicht der echten VM-NIC zugeordnet sind. Ohne aktivierten Promiscuous-Modus erreichen CARP-Advertisements den Partner nicht, was zu Fehldetektion, unerwünschtem Failover und HA-Inkonsistenzen führt.&lt;br /&gt;
&lt;br /&gt;
= Vorbereitung =&lt;br /&gt;
* Zwei OPNsense-Installationen mit jeweils mind. 3 Netzwerkkarten&lt;br /&gt;
* Die Anzahl der Netzwerkkarten muss auf beiden Maschinen gleich sein&lt;br /&gt;
; Die Reihenfolge und Anzahl der Netzwerkschnittstellen muss gleich sein!&lt;br /&gt;
* Empfehlung für beide Maschinen:&lt;br /&gt;
** WAN &lt;br /&gt;
** SYN &lt;br /&gt;
** LAN &lt;br /&gt;
* Am Anfang sollten so wenige Dienst wie möglich laufen&lt;br /&gt;
&lt;br /&gt;
== IP Adressen der Master Firewall ==&lt;br /&gt;
* em0 (LAN): 192.168.1.1/24&lt;br /&gt;
* em1 (WAN): 192.168.4.X+40/24&lt;br /&gt;
* em2 (SYN): 100.64.64.1/30&lt;br /&gt;
&lt;br /&gt;
== IP Adressen der Backup Firewall ==&lt;br /&gt;
&lt;br /&gt;
* em0 (LAN): 192.168.1.2/24&lt;br /&gt;
* em1 (WAN): 192.168.4.X+60/24&lt;br /&gt;
* em2 (SYN): 100.64.64.2/30&lt;br /&gt;
&lt;br /&gt;
= Firewall Regeln (beide Firewalls) =&lt;br /&gt;
&lt;br /&gt;
* Auf allen Schnittstellen '''außer''' dem SYN-Interface muss das Protokoll CARP akzeptiert werden&lt;br /&gt;
* Dazu muss im Menü '''Firewall =&amp;gt; Rules =&amp;gt; {WAN, LAN}''' Allow-Regeln erstellt werden, die auf das CARP-Protokoll matchen&lt;br /&gt;
* Für das SYN-Interface kann man eine Standard-Allow-Regel erstellen, die alles erlaubt&lt;br /&gt;
&lt;br /&gt;
= Virtuelle IPs (Master Firewall) =&lt;br /&gt;
&lt;br /&gt;
* Die virtuellen IPs werden von den Knoten des HA-Clusters geteilt, sobald ein Ausfall erkannt wird&lt;br /&gt;
* Somit wird dafür gesorgt, dass die virtuelle IP immer erreichbar ist&lt;br /&gt;
* Die virtuelle IP wird '''nur''' auf der Master Firewall eingestellt und an die Backups mitgeteilt&lt;br /&gt;
* Dazu muss man im Menü '''Interfaces =&amp;gt; Virtual IPs =&amp;gt; Settings''' wieder an allen bis auf das SYN-Interface, die eigentlich gewünschten IPs vergeben&lt;br /&gt;
* Über das '''[+]''' auf der rechten Seite muss man folgende Einträge machen:&lt;br /&gt;
&lt;br /&gt;
== virtuelle WAN IP ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parameter !! Wert&lt;br /&gt;
|-&lt;br /&gt;
| Mode || CARP&lt;br /&gt;
|-&lt;br /&gt;
| Interface || WAN&lt;br /&gt;
|-&lt;br /&gt;
| Address || 192.168.4.213/24&lt;br /&gt;
|-&lt;br /&gt;
| Virtual Password || radler&lt;br /&gt;
|-&lt;br /&gt;
| VHID Group || 213&lt;br /&gt;
|-&lt;br /&gt;
| Advertising Frequency || 1&lt;br /&gt;
|-&lt;br /&gt;
| Description || Virtual WAN IP&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== virtuelle LAN IP ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parameter !! Wert&lt;br /&gt;
|-&lt;br /&gt;
| Mode || CARP&lt;br /&gt;
|-&lt;br /&gt;
| Interface || LAN&lt;br /&gt;
|-&lt;br /&gt;
| Address || 192.168.1.3/24&lt;br /&gt;
|-&lt;br /&gt;
| Virtual Password || radler&lt;br /&gt;
|-&lt;br /&gt;
| VHID Group || 2&lt;br /&gt;
|-&lt;br /&gt;
| Advertising Frequency || 1&lt;br /&gt;
|-&lt;br /&gt;
| Description || Virtual LAN IP&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Source NAT (Master Firewall) =&lt;br /&gt;
&lt;br /&gt;
* Da die virtuelle IP für ausgehende Verbindungen benutzt werden soll, muss die automatische Regelgeneration ausgeschaltet werden&lt;br /&gt;
* Im Menü '''Firewall =&amp;gt; NAT =&amp;gt; Outbound''' muss die Option &amp;quot;Manual outbound NAT rule genereation&amp;quot; ausgewählt werden&lt;br /&gt;
* Dann die folgenden Regeln erstellen:&lt;br /&gt;
** Interface: WAN&lt;br /&gt;
** Source address: LAN net&lt;br /&gt;
** Translation / target: 192.168.4.213/24 (Virtual WAN IP)&lt;br /&gt;
&lt;br /&gt;
= High Availability Konfiguration (Master Firewall) =&lt;br /&gt;
&lt;br /&gt;
* Die eigentliche HA Einstellung erfolgt über das Menü '''System =&amp;gt; High Availability =&amp;gt; Settings''':&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parameter !! Wert&lt;br /&gt;
|-&lt;br /&gt;
| Synchronize all states via || SYN&lt;br /&gt;
|-&lt;br /&gt;
| Sync compatibility || OPNsense 24.7 or above&lt;br /&gt;
|-&lt;br /&gt;
| Synchronize Peer IP || 100.64.64.2&lt;br /&gt;
|-&lt;br /&gt;
| Synchronize Config || 100.64.64.2&lt;br /&gt;
|-&lt;br /&gt;
| Verify peer || deaktiviert&lt;br /&gt;
|-&lt;br /&gt;
| Remote System Username || root&lt;br /&gt;
|-&lt;br /&gt;
| Remote System Password || 123Start$&lt;br /&gt;
|-&lt;br /&gt;
| Services || Aliases, Firewall Rules, NAT, Virtual IPs&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= High Availability Konfiguration (Backup Firewall) =&lt;br /&gt;
&lt;br /&gt;
* Hier darf im Menü '''System =&amp;gt; High Availability =&amp;gt; Settings''' nur folgendes eingestellt werden:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parameter !! Wert&lt;br /&gt;
|-&lt;br /&gt;
| Synchronize all states via || SYN&lt;br /&gt;
|-&lt;br /&gt;
| Sync compatibility || OPNsense 24.7 or above&lt;br /&gt;
|-&lt;br /&gt;
| Synchronize Peer IP || 100.64.64.1&lt;br /&gt;
|-&lt;br /&gt;
| Synchronize Config || leer&lt;br /&gt;
|-&lt;br /&gt;
| Verify peer || deaktiviert&lt;br /&gt;
|-&lt;br /&gt;
| Remote System Username || leer&lt;br /&gt;
|-&lt;br /&gt;
| Remote System Password || leer&lt;br /&gt;
|-&lt;br /&gt;
| Services || Nothing selected&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Endergebnis =&lt;br /&gt;
==Master==&lt;br /&gt;
*System&lt;br /&gt;
**High Availability: &lt;br /&gt;
***Status&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Service !! Description&lt;br /&gt;
|-&lt;br /&gt;
| configd || System Configuration Daemon&lt;br /&gt;
|-&lt;br /&gt;
| cron || Cron&lt;br /&gt;
|-&lt;br /&gt;
| hostwatch || Host discovery service&lt;br /&gt;
|-&lt;br /&gt;
| login || Users and Groups&lt;br /&gt;
|-&lt;br /&gt;
| ntpd || Network Time Daemon&lt;br /&gt;
|-&lt;br /&gt;
| openssh || Secure Shell Daemon&lt;br /&gt;
|-&lt;br /&gt;
| pf || Packet Filter&lt;br /&gt;
|-&lt;br /&gt;
| routing || System routing&lt;br /&gt;
|-&lt;br /&gt;
| sysctl || System tunables&lt;br /&gt;
|-&lt;br /&gt;
| syslog-ng || Syslog-ng Daemon&lt;br /&gt;
|-&lt;br /&gt;
| unbound || Unbound DNS&lt;br /&gt;
|-&lt;br /&gt;
| webgui || Web GUI&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Slave==&lt;br /&gt;
*System&lt;br /&gt;
**High Availability: &lt;br /&gt;
***Status&lt;br /&gt;
Die Meldung auf der Backup-Firewall kann ignoriert werden, da diese nur passiv empfängt und die leeren XMLRPC-Felder daher fälschlicherweise als &amp;quot;unvollständig&amp;quot; markiert werden. Solange die Master-Firewall auf Version 24.7 eingestellt ist und die Daten erfolgreich überträgt, arbeitet der Cluster technisch einwandfrei.&lt;br /&gt;
=Debugging=&lt;br /&gt;
==XLLRPC==&lt;br /&gt;
*Um den erfolgreichen Sync auf der Master-Firewall zu prüfen, gehst du so vor:&lt;br /&gt;
*System&lt;br /&gt;
**Log Files&lt;br /&gt;
****General.&lt;br /&gt;
*Gib oben im Filter-Feld den Begriff '''xmlrpc''' ein.&lt;br /&gt;
Suche nach einem Eintrag wie: [OK] Configuration synchronized to '''https://100.64.64.2:443.'''&lt;br /&gt;
==Netzwerkschnittstellen==&lt;br /&gt;
===em0===&lt;br /&gt;
;Master&lt;br /&gt;
 em0: flags=1008943&amp;lt;UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST,LOWER_UP&amp;gt; metric 0 mtu 1500&lt;br /&gt;
 	description: LAN (lan)&lt;br /&gt;
 	options=48500b8&amp;lt;VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,VLAN_HWFILTER,VLAN_HWTSO,HWSTATS,MEXTPG&amp;gt;&lt;br /&gt;
 	ether 08:00:27:c4:a2:6f&lt;br /&gt;
 	inet 192.168.1.1 netmask 0xffffff00 broadcast 192.168.1.255&lt;br /&gt;
 	'''inet 192.168.1.3 netmask 0xffffff00 broadcast 192.168.1.255 vhid 2'''&lt;br /&gt;
 	'''carp: MASTER vhid 2 advbase 1 advskew 0'''&lt;br /&gt;
 	      '''peer 224.0.0.18 peer6 ff02::12'''&lt;br /&gt;
 	media: Ethernet autoselect (1000baseT &amp;lt;full-duplex&amp;gt;)&lt;br /&gt;
 	status: active&lt;br /&gt;
 	nd6 options=29&amp;lt;PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 em1: flags=1008943&amp;lt;UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST,LOWER_UP&amp;gt; metric 0 mtu 1500&lt;br /&gt;
 	description: WAN (wan)&lt;br /&gt;
 	options=48500b8&amp;lt;VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,VLAN_HWFILTER,VLAN_HWTSO,HWSTATS,MEXTPG&amp;gt;&lt;br /&gt;
 	ether 08:00:27:61:6f:6d&lt;br /&gt;
 	inet 192.168.4.53 netmask 0xffffff00 broadcast 192.168.4.255&lt;br /&gt;
 	'''inet 192.168.4.213 netmask 0xffffff00 broadcast 192.168.4.255 vhid 213'''&lt;br /&gt;
 	'''carp: MASTER vhid 213 advbase 1 advskew 0'''&lt;br /&gt;
 	      '''peer 224.0.0.18 peer6 ff02::12'''&lt;br /&gt;
 	media: Ethernet autoselect (1000baseT &amp;lt;full-duplex&amp;gt;)&lt;br /&gt;
 	status: active&lt;br /&gt;
 	nd6 options=29&amp;lt;PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL&amp;gt;&lt;br /&gt;
;Backup&lt;br /&gt;
 em0: flags=1008943&amp;lt;UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST,LOWER_UP&amp;gt; metric 0 mtu 1500 &lt;br /&gt;
 	description: LAN (lan)&lt;br /&gt;
 	options=48500b8&amp;lt;VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,VLAN_HWFILTER,VLAN_HWTSO,HWSTATS,MEXTPG&amp;gt;&lt;br /&gt;
 	ether 08:00:27:1c:44:8b&lt;br /&gt;
 	inet 192.168.1.2 netmask 0xffffff00 broadcast 192.168.1.255&lt;br /&gt;
 	'''inet 192.168.1.3 netmask 0xffffff00 broadcast 192.168.1.255 vhid 2'''&lt;br /&gt;
 	'''carp: BACKUP vhid 2 advbase 1 advskew 100'''&lt;br /&gt;
 	      '''peer 224.0.0.18 peer6 ff02::12'''&lt;br /&gt;
 	media: Ethernet autoselect (1000baseT &amp;lt;full-duplex&amp;gt;)&lt;br /&gt;
 	status: active&lt;br /&gt;
 	nd6 options=29&amp;lt;PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 em1: flags=1008943&amp;lt;UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST,LOWER_UP&amp;gt; metric 0 mtu 1500&lt;br /&gt;
 	description: WAN (wan)&lt;br /&gt;
 	options=48500b8&amp;lt;VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,VLAN_HWFILTER,VLAN_HWTSO,HWSTATS,MEXTPG&amp;gt;&lt;br /&gt;
 	ether 08:00:27:95:9b:4b&lt;br /&gt;
 	inet 192.168.4.73 netmask 0xffffff00 broadcast 192.168.4.255&lt;br /&gt;
 	'''inet 192.168.4.213 netmask 0xffffff00 broadcast 192.168.4.255 vhid 213'''&lt;br /&gt;
 	'''carp: BACKUP vhid 213 advbase 1 advskew 100'''&lt;br /&gt;
 	      '''peer 224.0.0.18 peer6 ff02::12'''&lt;br /&gt;
 	media: Ethernet autoselect (1000baseT &amp;lt;full-duplex&amp;gt;)&lt;br /&gt;
 	status: active&lt;br /&gt;
 	nd6 options=29&amp;lt;PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL&amp;gt;&lt;br /&gt;
==Wird Synchronisiert?==&lt;br /&gt;
;Master&lt;br /&gt;
*System&lt;br /&gt;
**High Availability&lt;br /&gt;
***Status&lt;br /&gt;
****Synchronize and reconfigure all (Push)&lt;br /&gt;
;Backup&lt;br /&gt;
*tail -f /var/log/configd/latest.log &lt;br /&gt;
Hier sollteman die Übertragung sehen.&lt;/div&gt;</summary>
		<author><name>Thomas.will</name></author>
	</entry>
</feed>