Zwei OPNsense auf gleichem Proxmox - Doppelte Pakete dank Promiscuous Mode

Started by superwinni2, July 25, 2025, 11:15:31 AM

Previous topic - Next topic
Hallo

auch wenn es evtl. nur bedingt direkt mit der OPNsense zu tun hat hoffe ich, das mir jemand helfen kann.

Ich habe hier folgende Konstellation:
Ich habe 2 Proxmox Hypervisoren. Auf jedem Hypervisor laufen 2 OPNsense VMs.
Hypervisor PMFW1: 
  • FW1
  • FWInternBackup
Hypervisor PMFW2:
  • FW2
  • FWIntern

Die FW1 ist mit der FW2 eine Hochverfügbare Firewall.
Die FWIntern mit der FWInternBackup.

Eine kleine Gemeinsamkeit haben alle OPNsense. Sie habe alle im VLAN1 eine Netzwerkverbindung. VLAN 1 ist das allgemeine VLAN in welchem Server (aber auch Clients, Drucker etc.) laufen. 
Ansonsten sind sie in unterschiedlichen Netzwerkbereichen / VLANs / Broadcast Domänen unterwegs.

Ich habe auf allen OPNsense Maschinen CARP am laufen. Durch CARP werden die Netzwerkkarten in den Promiscuous Mode versetzt. (Nachher noch wichtig?) 
Auf der FW1 läuft OpenVPN als Server.
Die jeweiligen CARP IDs (aktuell 1-22) vergebe ich absolut einzigartig. So kann ich mir sicher sein, dass es auch wirklich keine doppelten MAC-Adressen gibt.

Nun haben wir folgendes Problem:
Wenn man im OpenVPN Netz unterwegs ist und Telefonate via Softphone führen möchte so muss man vom VPN Netzwerk (10.20.253.0/24) zum Server Netzwerk (10.20.16.0/21) bzw. zum Server 10.20.20.52.

Die Pakete werden erstmal sauber geroutet eine Verbindung kommt zu Stande und es sieht alles gut aus.
Nach einer Bestimmten Zeit X (dies kann eine Minute oder aber auch über 40 Minuten betragen) bricht das Telefonat ab.
Wenn ich die FWInternBackup ausschalte kann ich so lange ich möchte telefonieren.

Ich habe nun mit Wireshark das ganze soweit eingegrenzt, dass es daran liegt, dass die FWInternBackup irgendwann ein ICMP "Time-to-live exceeded" sendet und daher dann das Telefon abbricht. Ist vielleicht etwas unglücklich in der Software umgesetzt aber leider nicht änderbar.
In dem ICMP Paket steht, dass es von Server zu Client gehen sollte.
Wenn ich die Details von dem Paket anschaue, dann sehe ich, dass das Paket aber auf dem Client angekommen ist.

Nun wundert es mich, dass dieses ICMP Paket überhaupt existiert.

Meine aktuelle Vermutung ist, dass die FWInternBackup das Paket dank Promiscuous Mode mitbekommt, denkt es wäre was für die FWInternBackup, es versucht zuzustellen (indem sie das Paket erst an ein anderes Gateway 10.46.23.2 und dieses dann an die FW1 weiterleitet) , es sich dann wieder im Proxmox Host "im Kreis dreht" und dann irgendwann der TTL zuschlägt und die FWInternBackup den Client via ICMP informiert.


Jemand eine Idee wie man das verhindern kann?

Alles was mir einfällt wäre mit mehr Hardware zu schießen indem ich jeder OPNsense eigene Hardware kaufe. Hier bin ich mir jedoch nicht 100% sicher ob dies dann wirklich hilft wegen Promiscuous Mode wenn die dann einfach an einem physikalischem Switch hängen statt einem virtuellen?

Danke schonmals und Viele Grüße

Quote from: superwinni2 on July 25, 2025, 11:15:31 AMn dem ICMP Paket steht, dass es von Server zu Client gehen sollte.
Wenn ich die Details von dem Paket anschaue, dann sehe ich, dass das Paket aber auf dem Client angekommen ist.

Nun wundert es mich, dass dieses ICMP Paket überhaupt existiert.

Meine aktuelle Vermutung ist, dass die FWInternBackup das Paket dank Promiscuous Mode mitbekommt, denkt es wäre was für die FWInternBackup, es versucht zuzustellen (indem sie das Paket erst an ein anderes Gateway 10.46.23.2 und dieses dann an die FW1 weiterleitet) , es sich dann wieder im Proxmox Host "im Kreis dreht" und dann irgendwann der TTL zuschlägt und die FWInternBackup den Client via ICMP informiert.

Vielleicht denke ich hier verkehrt, aber das klingt im ersten Moment überhaupt nicht nach Firewall. Du schreibst doch, dass das Paket vom Server zum Client gehen soll. Und dass die Backup Kiste das mitbekommt, wahrscheinlich weil sie promisc das Paket sieht. Dann würde es die FWIntern aber ebenfalls sehen und zustellen, es käme also so oder so an. Es wurde ja vom Server und nicht von der InternBackup gesendet. Was hat diese dann damit zu tun? Und an welche Adresse schickt es der Server? Oder hat der Server vllt. ein falsches Gateway und deshalb bekommt es die falsche Firewall ab?

Das ist alles ohne die genauere Konfig zu kennen etwas nebulös :)

Cheers
\jegr
"It doesn't work!" is no valid error description! - Don't forget to [applaud] those offering time & brainpower to help you!
Better have some *sense than no(n)sense at all! ;)

If you're interested in german-speaking business support, feel free to reach out via PM.