OpenBSD-Multipath-Routing bei Problemen

646
user3488973

Ich versuche, eine "Failover" -Einrichtung für ein NAT-ed-privates Netzwerk mit zwei nicht sehr stabilen WAN-Verbindungen (LTE / 3g) zu verwalten.

Die Topologie ist typisch: Hosts aus dem internen Netzwerk verbinden sich mit der internen Schnittstelle [int_if] der OpenBSD-Box, und der Verkehr wird mit PF an eine der beiden externen Schnittstellen [ext_if1 und ext_if2] NAT-ed .

LAN---->[int_if]--NAT--[ext_if1 or ext_if2]---->WAN1 or WAN2 (depending on kernel decision). 

Ich verwende statische IPs für beide Egress-Schnittstellen, jeweils in einem anderen Subnetz und mit Mehrpfad-Standardrouten zu den LTE / 3g-Router-Boxen des ISP, wie in OpenBSD Faq für Lastenausgleich mit gleichen Kosten beschrieben.

Leider leide ich an diesem nervigen Verhalten:

  1. Multipfadrouten funktionieren nicht, wenn sie in der Datei hostname.interface festgelegt werden. In diesem Fall sind beide Standardrouten in der Routing-Tabelle vorhanden, jedoch ohne "P" -Flaggen. Solange ich die Routen nicht spüle und manuell zurücksetzt, wird der gesamte Verkehr nur durch eines der beiden Gateways weitergeleitet, und zwar abhängig von der alphabetischen Reihenfolge des Schnittstellennamens. Sieht so aus, als wäre es nur ein "Standard" Standardgateway, kein Multipath-Betrieb ( net.inet.ip.multipathist natürlich eingestellt 1).

  2. Während Multipath-Standardrouten "von Hand" eingestellt funktionieren, scheint es gut zu funktionieren - das "P" -Flag erscheint in der Routing-Tabelle und neststat -r zeigt steigenden Verkehr auf beiden Routen sowie die Sequenz von Traceroute-Befehlen.

  3. ping -I one_of_ext_if's_ip some.internet.host funktioniert Ich würde sagen ... zufällig, unabhängig vom tatsächlichen ISP-Verbindungsstatus. Manchmal hilft die Verwendung der IP-Adresse anstelle des Cnamens für eine Schnittstelle, während die andere den Cnamen "bevorzugt". Pings werden nach dem Zufallsprinzip ungültig, während der HTTP-Datenverkehr aus dem LAN gleichwertig ist und keine Verzögerungen aufweist. Ich blockiere keinen ausgehenden Verkehr mit PF, so dass es nicht der Punkt ist, pf Änderungen überhaupt nicht zu deaktivieren (außer das LAN von der Welt abzuschneiden). Wenn Sie alles wieder auf den Standard zurücksetzen, wird das Problem mit dem Setup eines einzelnen Standard-Gateways behoben. Ich kann manuell zwischen beiden Standardrouten wechseln, und Ping ist in Ordnung, wenn der ISP aktiv ist.

Ich verbrachte zwei Nächte damit, zu googeln und zu testen, um herauszufinden, was ich falsch mache und habe immer noch keine Ahnung, warum diese Konfiguration so komisch wirkt. Und natürlich keine Ahnung, wie ich Verbindungen auf Failover mit ifstated überwachen kann, wenn Pinging World nicht funktioniert, auch wenn meine Internetdienstanbieter noch am Leben sind. Und als sie wirklich für eine Weile gestorben waren, schickte das Loadbalancing LAN-Anforderungen, um die Auswahl unerkannter toten Verbindungen aufzuheben.

Ich möchte ein solches Ereignis erkennen und die Route zum funktionierenden Standard-Gateway ändern, bis der andere ISP wieder reagiert. Ohne funktionierende Pings stecke ich mit nutzlosem Hintergrund im Hintergrund.

Ich freue mich über jede Hilfe ...

1

0 Antworten auf die Frage