pfSense CARP auf zwei ESX Servern über Hetzner vSwitch

Da ich jetzt bei Hetzner einen zweiten ESX Rootserver in einem anderen Datacenter gemietet habe, schreit das natürlich danach auch das Gateway für die VMs hochverfügbar zu machen. 😉

Dafür kommt auf jedem ESX Server je eine pfSense VM zum Zug die mit CARP je eine IP im privaten, wie auch im öffentlichen Netz teilen.

Ich hatte jetzt gerade über viele Wochen an dem Problem herumgegrübelt, weil die zweite pfSense die Public VIP partout immer als MASTER übernehmen wollte. Und es lag tatsächlich an der hetzner firewall (bzw. deren Konfiguration), aber dazu im Anschluss mehr.

Setup

  • Zwei ESX Server über zwei Datacenter (FSN und HEL) verteilt
  • Drei hetzner v-switche: 1x Public Network, 1x Private Network, 1x HA Network (CARP) traffic
  • Auf jedem ESX Server eine pfSense VM (pfsense1 und pfsense2)
  • MTU auf allen NICs auf 1400
  • Alle drei vNICS:
    Promiscuous mode: Accept
    MAC address changes: Accept
    Forged transmits: Accept
  • Hetzner Firewall: ON, aber mit gewissen ANY Regeln:
any to public ip subnet0.0.0.0/0<PublicIP-Subnet>/280-655350-65535*anyaccept
local network to any172.16.0.0/120.0.0.0/00-655350-65535*anyaccept
Firewall Regeln (Auszug) in der Hetzner Firewall

(Die einzelnen VMs haben noch host firewalls; Ich benutze die hetzner firewall im Prinzip nur um den Zugriff auf die Primäre IP an der die ESX Konsole hängt einzuschränken)

Das Problem

Jetzt ergab sich das seltsame Problem, dass egal was ich machte, auf pfsense2 immer kurz nach der Initialisierung die Public-IP von BACKUP zu MASTER wechselte und man diese somit auf beiden Servern hatte (weil pfsense1 auch MASTER war)

Die Meldung im log von pfsense2 war:

Carp backup event
carp: 110@vmx0: BACKUP -> MASTER (master timed out)
  • Die die HA IPs konnten sich beide Gegenseitig erreichen (ICMP)
  • Die beiden Public IPs konnten sich beide Gegenseitig erreichen (ICMP)
  • Die beiden Private IPs konnten sich beide Gegenseitig erreichen (ICMP)

Kurioserweise kam noch hinzu, dass das jeweils NUR bei der Public VIP passierte. Die Private VIP funktionierte einwandfrei!

Wenn ich beide pfSense VMs auf denselben ESX Host verschoben hatte, trat das Problem nicht auf und CARP funktionierte mit beiden VIPs.

Wahrscheinlich hatte ich gerade deshalb die Firewall bis jetzt nicht verdächtigt, weil ja sowohl für private, wie auch publlic Nezte „any rules“ galten.

Die Lösung

Als „letzter Versucht“ hatte ich dann die hetzner Firewall doch Testweise mal auf dem zweiten ESX ausgeschaltet – Und siehe da, prompt wechselte der Status auf pfsense2 für die Punic IP VIP wieder von MASTER auf BACKUP!

Als ich dann die beide any-rules verglich, stellte ich fest, dass die Richtung jeweils anders war.

Der Rest war dann einfach: Ich hatte einfach noch die Regel:

public ip subnet to any<PublicIP-Subnet>/280.0.0.0/00-655350-65535*anyaccept

hinzugefügt und das Problem hat sich in Luft aufgelöst!

Manchmal dauert es echt lange bis man da einen Knopf löst.  :/ ^^

Weitere Quellen

Published by

Steven Varco

Steven ist ein Redhat RHCE-Zertifizierter Linux-Crack und ist seit über 20 Jahren sowohl beruflich wie auch privat auf Linux spezialisiert. In seinem Keller steht ein Server Rack mit diversen ESX und Linux Servern.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.