Netzwerkmanager: Failover zwischen zwei Standardgateways


7

Kann Network Manager überprüfen, ob ein Standard-Gateway Pakete an das Internet weiterleiten kann?

Ich habe zwei Schnittstellen, beide bieten einen Weg zum Internet.

Wenn ich ein Kabel von einem der Kabel abziehe, wird das Standard-Gateway aktualisiert und meine Internetverbindung funktioniert. Wenn das derzeit bevorzugte Gateway jedoch ausfällt, ohne eine physische Verbindung zu unterbrechen, wird das System nicht auf die zweite Verbindung umgestellt.

Ich habe versucht, eine höhere Metrik manuell auf ein fehlerhaftes GW festzulegen. Es hat funktioniert, aber es ist ein manueller Schritt, den ich vermeiden möchte.

Kann dieses Problem mit Network Manager gelöst werden?

Mein Setup: Ubuntu 16.04, NM 1.2.2

UPD

Das Community-Mitglied auf dem IRC-Kanal von NM antwortete, dass NM nicht prüfe, ob ein Gateway tatsächlich funktioniert, und keine GW-Umschaltung durchführe.

VRRP / ucarp / heartbeat / keepalived überprüfen es ebenfalls nicht. Sie überprüfen nur die Netzwerkverfügbarkeit und schalten die Upstream-GWs hinter einer virtuellen Schnittstelle um. Das hilft in meinem Fall nicht.

Iproutes Nexthop funktioniert irgendwie, aber mit einer enormen Latenz. Routen werden vom Kernel zwischengespeichert, und selbst nachdem ip route flush cache es ungefähr 10 Minuten gedauert hat, bis das System auf das zweite GW umgestiegen ist.

ip route replace default scope global \
  nexthop via 11.22.33.1 dev eth0 weight 1 \
  nexthop via 55.66.77.1 dev eth1 weight 1

Meine aktuelle Lösung: Ein Shell-Skript, das prüft, ob das aktuelle Standard-GW den Internetzugang bietet. Wenn nicht, erhöht sich die Metrik des aktuellen GW und das System-Failover auf die zweite mit einer niedrigeren Metrik.

Ich hoffe immer noch, eine elegantere Lösung zu finden.


Dafür ist VRRP gemacht.
JFL

Antworten:


4

Dafür wurde BGP gemacht. Verwendung des sogenannten iBGP für die interne Router-Interkommunikation und Pfadredundanz und / oder eBGP für die vollständige Pfadredundanz auf Internetebene. BGP beschreibt ein Protokoll, mit dem Router die Analysedaten miteinander kommunizieren können, die erforderlich sind, um die Art der gültigen und funktionalen Verkehrspfade innerhalb eines autonomen Systems zu beurteilen.

Ich sehe niemanden, der dies mit NetworkManager als Laufzeitkonfigurationstool für diesen Routing-Grad tut. NM hatte in der Vergangenheit Probleme damit, bei Verwendung vieler Routen nicht gut zu skalieren, und es gibt eine viel bessere Software, die genau das tut, was Sie wollen.

Die meisten kommerziellen Router verfügen über BGP-Funktionen, sodass Sie sie "in Dosen" erhalten können. Normalerweise verwende ich pfSense oder VyOS, wenn ich mich für einen "Software-Router" entscheide, da beide gut virtualisieren. VyOS verwaltet sogar LXD-Bilder, daher verwende ich diese normalerweise. Sie können BGP auch auf den meisten Linux-Distributionen manuell mit den Paketen openbgbpd oder quagga verwenden.

Viele SDN-Lösungen verwenden BGP, um Redundanz und Netzwerkausgleich anstelle von Systemen wie MLAG bereitzustellen, da viele MLAG-Implementierungen auf Ethernet-Switches und -Routern in der Vergangenheit entweder zu herstellerspezifisch waren oder nicht wie erwartet funktionieren, insbesondere wenn nicht übereinstimmende Hardware verwendet wird. Anstatt sich über Steuerungstreiber für jeden Switch da draußen Gedanken zu machen, ist SDN häufig darauf ausgerichtet, für diese Redundanzlösungen mit mehreren Knoten auch innerhalb eines internen Netzwerks über Schicht 2 zu arbeiten.



0

Ich denke, es gibt mehrere Möglichkeiten. Der beste / modernste Weg ist die Verwendung von iproute2 "Tabellen". Ich habe es noch nicht vollständig verstanden, aber es wird hier beschrieben: http://mlvpn.readthedocs.io/en/latest/linux_example.html Leider macht dieses Beispiel MEHR als das, wonach Sie fragen, und dies verwirrte das Problem. Aber ich glaube, dass so etwas funktionieren könnte:

ip route show table main

ip route add default via 10.70.1.1 dev eth0 table 100

ip route add default via 10.70.70.1 dev eth0 table 101

Bearbeiten /etc/iproute2/rt_tablesund fügen Sie optional zwei Zeilen hinzu:

100 myfavgw

101 myothergw

Und dann können Sie diese mit Namen bezeichnen:

ip route add default via 10.70.70.1 dev eth0 table myothergw

Möglicherweise ist ein zusätzliches Fummeln erforderlich, aber das oben Gesagte scheint ein vielversprechender Anfang zu sein. Ich kann es nicht testen, da eines meiner beiden Gateways gerade ausgefallen ist :-(

Die zweite Methode scheint von ziemlich alter Technologie abzuhängen. In diesem Artikel aus dem Jahr 2005 wird vorgeschlagen, dass Sie bei zwei Netzwerkkarten jeweils ein anderes Standard-Gateway angeben können: https://www.linux.com/news/using-linux-failover-router . Wenn Sie also nicht über zwei Netzwerkkarten verfügen, gibt es eine Möglichkeit (ich habe vergessen, wie), eine zweite virtuelle Schnittstelle zu erstellen und dieselbe Ethernet-Karte zu verwenden (dies war so einfach wie das Laden einer Kernel-Modul, und es hat super funktioniert). Wenn man immer noch ein anderes Standard-GW für jede Schnittstelle angeben kann, wäre dieser zweite Ansatz eine alte Lösung für das Problem.

Die dritte Lösung ist die hässliche. Wie Sie hervorheben, kann man jede Minute ein Shell-Skript ausführen, um dies zu überprüfen.

Ein solches Skript finden Sie hier !


Am Ende hatte ich ein Bash-Skript. Die von Ihnen vorgeschlagene Lösung hat eine Verzögerung von ca. 10 Minuten (!), Da der Kernel die Routen zwischenspeichert.
Volodymyr Linevych
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.