Ich habe ein eingebettetes Gerät mit drei Netzwerkverbindungen: eth0, wwan0 und wlan0. wwan0 ist eine getaktete Verbindung, daher würde ich grundsätzlich eth0 oder wlan0 bevorzugen. Das Problem ist, dass zu jedem beliebigen Zeitpunkt jede Schnittstelle verbunden sein kann, aber nicht wirklich auf das Internet zugreifen kann. Aus verschiedenen Gründen kann es sein, dass eine Schnittstelle überhaupt nicht vorhanden ist. In diesem Fall macht meine Routing-Tabelle nicht das, was ich will. Gibt es eine bessere Möglichkeit, damit umzugehen, als ein Skript, das die Routing-Tabelle ständig überprüft und ändert? Ein Teil des Problems ist, dass es zu viele Kombinationen und Permutationen von verfügbar, nicht verfügbar, kein Internet usw. gibt.
Antwort1
Wie Sie bemerkt haben, gibt es viele Möglichkeiten. Es gibt auch fragwürdige, zum Beispiel: „hat Internet, aber nur die Testserver sind nicht verfügbar“, und diese können nicht verfügbar sein, weil sie alle ausgefallen oder von der Regierung blockiert sind. Es ist auch möglich, dass „die Hälfte“ des Internets über einen ISP zugänglich ist und „die andere Hälfte“ nicht; aber bei einem anderen ISP ist das Bild „umgekehrt“. (Glauben Sie mir oder nicht, ich habe eine solche Situation einmal erlebt.) Welchen deklarieren Sie als „mit Internet“?
Das ist eine sehr schwierige Frage, deshalb gibt es eine ganze Geschäftsnische für SOHO-Router, die mehr oder weniger in der Lage sind, in verschiedenen Situationen eine Entscheidung zu treffen, und diese sind im Allgemeinen nicht sehr einfach einzurichten, so dass sie einegut genugEntscheidung. Dies ist auch der Grund für das ganze BGP-Geschäft in der Telekommunikationswelt.
Sie sehen also, dass Sie es nicht viel besser und effizienter machen können als mit dem Skript. Ich weiß nicht, warum Sie das wollen, aber für den Desktop-/Endbenutzercomputer lohnt es sich meiner Meinung nach überhaupt nicht, dies zu automatisieren. Für den Linux-Router würde ich eine standardmäßige Split-Access-Konfiguration mit RPDB und Standardrouten über jeden Link mit hohen Metriken in der Reihenfolge der Präferenz erstellen. Anschließend setzt oder aktualisiert das Skript nur die Standardroute mit niedriger Metrik basierend auf Pings zu beispielsweise fünf geografisch verteilten Testpunkten, die sorgfältig ausgewählt wurden (die am häufigsten aufgerufenen oder wichtigsten).