Plan
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:
- 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
| 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
| 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:
| 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:
| 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
| 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
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
- 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>