Identisches LAN an zwei Standorten, jeweils einzelne IP "umrouten"

Started by puldi, May 16, 2021, 06:07:16 PM

Previous topic - Next topic
Moin zusammen,

ich brauch mal einen Schubser in die richtige Richtung. Das ist nicht direkt Opnsense spezifisch, eher ein allgemeines Routingproblem. Und in Netzwerkangelegenheiten tue ich mich manchmal etwas schwer. Folgendes Setup kriege ich nicht zum laufen:


  .............      .-------.  .-------.  .-------.  .-------.
  . Cluster I .      | 10.50 |  | 10.51 |  | 10.53 |  | 10.55 |
  .............      '-------'  '-------'  '-------'  '-------'
                                    /
    opnsense 1  -------------------'
   __________   
  [_...__...°] 
                          .-,(  ),-.   
       ----------------.-(          )-.
                      ( '  internet    ----------.
                       '-(          ).-'          ' opnsense 2 
                           '-.( ).-'               __________   
                                                  [_...__...°] 
                                                               
                             .--------------------..............
                            /                     . Cluster II .
  .-------.  .-------.  .-------.  .-------.      ..............
  | 10.52 |  | 10.54 |  | 10.56 |  | 10.57 |
  '-------'  '-------'  '-------'  '-------'


Wir haben auf beiden Seiten das gleiche Netzwerk, in diesem Falle das 172.20.0.0/16. Daraus sollen einzelne Adressen aus dem 172.20.10.0/23-er Subnetz umgeroutet werden. Wenn die 172.20.10.51 aus Cluster I mit der 172.20.10.56 in Cluster II reden will müssen die Pakete jeweils über beide Opnsense geroutet werden. Das Problem ist aber, dass wir in beiden Clustern insgesamt fünf Gateways haben und die Maschinen je nach anzubindenden VPN Verbindungen das passende Gateway als default nutzen. Bislang haben die Maschinen ebenfalls eine /16-er Netzmaske und werden per Firewallregeln "gezüchtigt". Sendet also die .51 ein Paket an die .56, geht das über das Interface direkt in das lokale Netzwerk wo jedoch keine .56 existiert. Jetzt könnte ich alle Weiterleitungen auf allen gateways definieren, aber hätte damit das Grundproblem nicht erschlagen: Ich kann nicht einfach allen Maschinen per DHCP eine /32-er Netzmaske verpassen und alle Pakete ganz brutal über das jeweilige Standardgateway leiten. Unter anderem bekommen wir dann ein Performanceproblem, weil die Gateways für den internen Traffic zum Flaschenhals werden. Wir haben teilweise mehrere tausend Websocket Verbindungen zwischen den Maschinen offen und haben im LAN schon Probleme deswegen.

Mal einen Schritt zurück gemacht und auf das große Ganze geschaut: Wir haben zwei getrennte Cluster mit Proxmoxknoten als Virtualisierungshosts. Die Maschinen sind alles Linuxkisten mit überwiegend CentOS drauf, ein paar mit Debian und eine einzelne Win10 Kiste, die mir aber grad ziemlich egal ist. Wir wollen jetzt alle Maschinen sukzessive von Cluster I nach Cluster II umziehen und dann Cluster I nach /dev/null verschieben. Alles im laufenden Betrieb und natürlich mit geringstmöglicher Beeinträchtigung der Systeme. Der Umzug ist an sich nicht zeitkritisch aber wenn wir starten sollte es möglichst ruckelfrei vonstatten gehen. Also suche ich nach einer Lösung mit der ich folgendes erreichen kann:

* Ich definiere für eine einzelne IP Adresse aus dem LAN, dass diese über das remote Gateway erreichbar ist
* Alle Systeme im betreffenden Cluster nutzen das Routing über die beiden Opnsense Instanzen (resp. nutzen die jeweils lokale Instanz als Gateway für diese Adresse)

Idealerweise würde ich das einmal zentral definieren und es würde sich in kurzer Zeit (wenige Minuten bis eine Stunde sind OK) im Netz herumsprechen und umgesetzt werden.

Muss ich dafür auf den einzelnen VM etwas installieren? Sollte ich das eher über die Knoten verwalten, also über Proxmox? Muss ich doch alle Pakete über definierte Gateways laufen lassen, um dort das weitere Routing bestimmen zu können?

Was nicht geht sind folgende Lösungen:

* den Maschinen beim Umzug eine neue IP aus einem anderen Subnet zuweisen und dieses Subnet komplett "umbiegen".
* alles herunterfahren und die Maschinen in einem Rutsch verschieben

Was offenbar nicht funktioniert (oder ich habe es falsch gemacht) ist, auf opnsense einfach einzelne routing Einträge anzulegen. Die gelten nur für opnsense selbst, werden aber nicht per DHCP weitergereicht. In DCHP wiederum sehe ich keine Möglichkeit, mehrere Dutzend Routingregeln zu hinterlegen, die dann ALLEN CLients übermittelt werden.

Vielleicht übersehe ich hier den Wald vor lauter Bäumen, aber ich stecke gedanklich grad etwas fest und wäre für eine Hilfestellung sehr dankbar!