OPNsense HA KIT: Unterschied zwischen den Versionen

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

Aktuelle Version vom 20. Februar 2026, 15:23 Uhr