Ubuntu-Failover vom Ethernet-zu-ADSL-Modem zum USB 3G-Dongle

7

Ich habe einen mit dem Internet verbundenen Ubuntu-Server, der über Ethernet mit einer ADSL-Leitung für Privathaushalte verbunden ist. Dies ist meistens ausreichend, aber ich kann mich nicht darauf verlassen, dass der ADSL-Link so zuverlässig ist, wie ich es gerne hätte. Murphys Gesetz hat bereits vorgeschrieben, dass Ausfallzeiten eintreten, wenn dies am wenigsten bequem ist.

Ich möchte einen 3G-USB-Dongle verwenden, um ein Failover zu ermöglichen. Mir fehlen Informationen sowohl zu Beispielkonfigurationen, die für andere Personen funktionieren - als auch zu der für meine Zwecke am besten geeigneten (kostengünstigen) Hardware. Das Ziel ist, dass der Server dies erkennt, wenn meine ADSL-Leitung getrennt wird, und den 3G-Dienst wählt. Er überwacht die ADSL-Leitung und schaltet nahtlos zurück, wenn die Verbindung wiederhergestellt ist.

Der Hauptdienst, der mir wichtig ist, ist ein OpenVPN-Tunnel - über UDP zu einem Remote-Server. Der andere nützliche Dienst wäre Squid - ich hätte also immer noch Webzugriff von meinem LAN aus, wenn ADSL getrennt wird.

Fragen:

  1. Wie schwierig wäre es, dies einzurichten?
  2. Würde ich gezwungen sein, meine eigenen zu rollen - oder gibt es Pakete / Howtos, die ich übersehen habe?
  3. Welche (kostengünstige) Hardware wird empfohlen (hauptsächlich wegen unbeaufsichtigter Zuverlässigkeit)?
  4. Irgendwelche Anekdoten über Erfolg oder Misserfolg von anderen, die sich bereits damit befasst haben?
aSteve
quelle
Dies wäre viel einfacher, wenn Sie stattdessen einen 3G-Router bekommen könnten. Haben Sie bei Ihrem Provider geprüft, ob dies möglich ist?
Pause
Ich habe eine Hardwarelösung nicht ausgeschlossen ... aber der Ausgangspunkt ist, dass ich eine Ethernet-Verbindung zum vom ISP bereitgestellten Basis-ADSL-Router habe. Ein Standard-PC mit Ubuntu Server (mit einem integrierten Ethernet-Anschluss und mehreren freien USB-Anschlüssen) - und ein USB 3G-Dongle. Meine doppelten Anforderungen sind eine zuverlässige Lösung, die die Erde nicht kostet.
aSteve
Es gibt etwas über Hayes AT-Befehle hier: stackoverflow.com/questions/7280718/…

Antworten:

3

Wir haben einige kleinere Edimax 3G-Router mit 1 WLAN, 1 LAN und USB für 3G-Stick. Der LAN-Port kann als Teil des LAN oder als primärer WAN-Port-Port konfiguriert werden (3g fungiert als Failover). Ich bin nicht mit edimax verbunden und wir verwenden sie auf der Straße oder auf Konventionen für ihre Größe (und eine von denen, die wir haben, ist batteriebetrieben).

Allerdings würde ich mit einem Setup auf dem Ubuntu-Server gehen.

Antworten:

  1. Einfach, wenn Sie ein erfahrener Serveradministrator sind. Andernfalls ist es für einen Poweruser machbar, wenn Sie bereit sind , die Zeit zu verbringen , um zu lernen und zu verstehen, was Sie tun.
  2. Ich weiß nicht über verfügbare Pakete, aber

Wechsel zu 3g - Skriptbeispiel:

pon YourIsp-name
route del default gw "your_adls_defaultGW"
route add -host "ping_or_other_test_host_for_checking_adsl_route" gw  "your_adls_defaultGW"
"do_other_stuff_like_restart_openvpn_maybe"

Wechsel zu ADSL - Skript Beispiel:

poff YourIsp-name
route add default gw "your_adls_defaultGW"
route del -host "ping_or_other_test_host_for_checking_adsl_route" gw  "your_adls_defaultGW"
"do_other_stuff_like_restart_openvpn_maybe"

Wenn Sie dhcp mit adsl verwenden, wird dieses einfache Beispiel durcheinander gebracht, und Sie müssen entweder /etc/resolv.conf bei jeder Änderung ändern oder offene DNS-Server wie Google 8.8.8.8 (oder Ihren eigenen Resolver) verwenden. Nun ... die Überwachung ist etwas schwieriger, aber wenn Sie so etwas auf cron setzen (nicht, dies ist ein naives Beispiel), erhalten Sie ein Failover auf 3 g und zurück.

ping -q -c 2 "ping_or_other_test_host_for_checking_adsl_route"  && TARGETUP=1 || TARGETUP=0 ;  echo $TARGETUP ; if [ "$TARGETUP" == 1 ] ; then ( rm /tmp/.adsl_down ; [ -e /tmp/.adsl_up ] || ( PATH_TO_YOUR_ADSL_UP_SCRIPT && touch /tmp/.adsl_up ) ); else  ( rm /tmp/.adsl_up ; [ -e /tmp/.adsl_down ] || ( PATH_TO_YOUR_3G_UP_SCRIPT && touch /tmp/.adsl_down )) ; fi

Drei) Siehe Edimax 3g-Router ( Zeroshell LinuxFW-Distribution sieht aus, als ob Zeroshell ein Failover enthält. Besorgen Sie sich also einen billigen PC für einen Router und verwenden Sie Zeroshell. Ich habe es jedoch nicht getestet.)

Vier) Testen, bestehen und wenn zum ersten Mal ein Failover erforderlich ist, wird es fehlschlagen (wegen etwas Dummem ...).

Ich bin mir nicht sicher, ob Sie für dieses Setup Tintenfisch benötigen, es sei denn, Sie beschleunigen die 3G-Verbindung mit dem lokalen Cache der häufigsten von Ihnen besuchten Seiten.

Manwe
quelle
Ihr Ubuntu-Softwareansatz ist ein weiterer Vorschlag, den ich "selbst rollen" sollte. Das ist eine Option, denke ich, obwohl ich es vorziehen würde, eine polierte vorgefertigte Lösung zu verwenden ... wenn ich eine finden könnte. Der Edimax-3g-Router-Ansatz sieht vielversprechend aus - und ich kann einen für 40 GBP bei Ebay bekommen ... vorher war mir unklar, ob diese automatisch auf 3G umschalten würden ... und ob ich darüber informiert würde Failover-Ereignis. Im Wesentlichen würde ich zwei Uplinks benötigen - ein Ethernet; ein USB-3G-Dongle ... und um sinnvolle Regeln für die Weiterleitung des Datenverkehrs zu unterstützen.
aSteve
Ich habe Squid schlecht erklärt ... Der Server befindet sich in einem LAN - und alle Hosts greifen über denselben Router auf das Internet zu. Die Serverkonnektivität ist von entscheidender Bedeutung - andere LAN-Hosts jedoch weniger. Ich möchte einen hochverfügbaren Zugriff auf grundlegende Dienste von meinem Desktop aus. Wenn mein Desktop jedoch eine DVD-ISO herunterladen würde, wenn ADSL ausfällt, möchte ich nicht, dass ein Failover auf 3G durchgeführt wird, da dies meine monatliche Nutzungsobergrenze innerhalb von Stunden sprengen würde . Ein Proxy würde es mir ermöglichen, meinen Desktop manuell auf die 3G-Verbindung umzuschalten und unter diesen Umständen mit der Bandbreite vorsichtig zu sein. Nur mein Server muss automatisch ein Failover durchführen, wenn er unbeaufsichtigt ist.
aSteve
Link für Zeroshell hinzugefügt. Schauen Sie, es könnte alles enthalten oder sein, was Sie brauchen
Manwe
Zeroshell sieht so aus, als hätte es die Funktionen, die ich suche ... aber wenn ich es vermeiden kann, möchte ich nicht 'nur' zu einer neuen Distribution wechseln, um Failover-Unterstützung zu erhalten ... würde ich Vermeiden Sie es auch, einen anderen Host einzuführen - sogar einen virtuellen, da mehr Komplexität bedeutet, dass mehr schief geht. Ich werde Zeroshell untersuchen und prüfen, ob möglicherweise dieselbe Failover-Software für Ubuntu verfügbar ist.
aSteve
3

Ich habe dies jederzeit für Kunden getan und ich habe kein entwickeltes System gefunden, um dies zu erreichen, so dass ich jemals mein eigenes gewürfelt habe. Die Schritte, die Manwe Ihnen gegeben hat, sind mehr oder weniger das, was ich tue, wenn ich sie brauche, aber ich werde sie hier einfügen Alle groben Bash-Skripte, die ich verwende (wenn ich Zeit habe, möchte ich dies in Python viel besser machen).

Grundsätzlich überprüfe ich, ob ich Internet habe oder nicht und ob ich das WAN-Backup verwende und nehme die erforderlichen Änderungen vor

#!/bin/bash
PATH="/bin:/sbin:/usr/bin:/usr/sbin"
primary_gw="192.168.1.1" #for example.
check_one="8.8.8.8"
check_two="8.8.4.4"

#first we check internet connection.
if `ping -c 1 -W 1 $check_one |grep -E '(unreachable|100\%\ packet\ loss)' &> /dev/null` &&\
   `ping -c 1 -W 1 $check_two |grep -E '(unreachable|100\%\ packet\ loss)' &>/dev/null`
  then #if we don't have internet
    if [ -e /tmp/wan_backup ]
      #if we are using backup right now we try to change to primary connection
      then ./script_change_to_primary.sh && rm /tmp/wan_backup
      #else we change to wan backup.
      else ./script_change_to_backup.sh && touch /tmp/wan_backup
    fi
fi

#if we are using wan backup right now we check if primary connection works.
if [ -e /tmp/wan_backup ]
  then
    if `ip route add $check_one via $primary_gw; ip route add $check_two via $primary_gw;\
        sleep 2; ping -c 1 -W 1 $check_one | grep -E '(unreachable|100\%\ packet\ loss)' &> /dev/null &&\
        ping -c 1 -W 1 $check_two | grep -E '(unreachable|100\%\ packet\ loss)' &> /dev/null`
      then #don't works we clean the routes and stay using backup
        ip route del $check_one via $primary_gw
        ip route del $check_two via $primary_gw
      else #it works so we change active connection 
        ip route del $check_one via $primary_gw
        ip route del $check_two via $primary_gw
        ./script_change_to_primary.sh
        rm /tmp/wan_backup
    fi
fi

Da Sie möchten, dass Ihr Server nur 3g verwendet, wenn ADSL ausfällt, würde ich nur Iptables Snat oder Masquerade nur im ADSL iface verwenden und den Zugriff auf Squid in ./script_change_to_secondary.sh blockieren. Ihre Dateien könnten sein:

script_change_to_secondary.sh

#!/bin/bash
pon 3gIsp #this one it is going to change the default route of server anyway
#drop squid connections, you could disable here the boot snat or masquerade for adsl
#but given your adsl is not active i don't see the need anyway
iptables -I INPUT -s LAN_IP_RANGE -d SERVER_IP -p tcp --dport 3128 -j DROP

script_change_to_primary.sh

#!/bin/bash
poff 3gIsp
iptables -D INPUT -s LAN_IP_RANGE -d SERVER_IP -p tcp --dport 3128 -j DROP
/etc/init.d/openvpn restart

Sie sollten auch in /etc/ppp/ip-up.d/ ein Bash-Skript mit "/etc/init.d/openvpn restart" haben. Auf diese Weise wird Ihr openvpn jedes Mal automatisch neu gestartet, wenn Sie eine Verbindung zu einem ppp-Anbieter herstellen.

Nun, wie ich schon sagte, es ist ein bisschen hässlich und grob, aber es funktioniert :) Wenn Sie eine integrierte saubere Lösung dafür finden, lassen Sie es mich bitte wissen :), eine gute Sache von Roll-Your-Own ist, dass Sie eine vollständige Kontrolle haben Dies ist eine übermäßige Vereinfachung dessen, was ich bei Kunden mache, die zwei oder drei Verbindungen gleichzeitig haben und einen Lastausgleich und eine QoS durchführen, die alle in Skripte integriert sind, die Verbindungsprobleme erkennen und die Routen und die QoS ändern.

Wenn Sie eine integrierte Lösung einer eigenen vorziehen , können Sie eine Distribution wie zentyal verwenden . Sie unterstützt das, was Sie verwenden möchten. Es handelt sich jedoch um eine vollständige Distribution, die auf die Erstellung eines SmallBusiness-Servers zugeschnitten ist. Normalerweise bevorzuge ich die Konfiguration meiner Server bei my besitzen, aber dies ist eine gute Distribution, die über das Web verwaltet werden kann.

skuda21
quelle
Zemtyal - wie Zeroshell - sieht aus wie eine schicke Appliance ... obwohl ich ein Paket bevorzugen würde, das in Ubuntu (Server) integriert ist - vielleicht als "Upstart" -Dienst. Der Nachteil von Zemtyal für meine aktuellen Bedürfnisse ist, dass ich wirklich nach einer nicht proprietären Lösung suche ... selbst wenn das "kostenlose Basisabonnement" wahrscheinlich für meine unmittelbaren Bedürfnisse ausreichen würde.
aSteve
Ich denke, Sie werden damit fertig sein, eine Roll-Your-Own-Lösung zu erstellen, wie ich sie im Beitrag beschrieben habe. Ich habe Zentyal nur als Alternative bezeichnet. Sie haben mehr Leistung und Anpassungsmöglichkeiten, wenn Sie Ihre Lösung trotzdem erstellen. Das ist es, was ich normalerweise mache tun.
Skuda21
Zentyal es ist Open Source und kostenlos, sie verkaufen alle Plugins und Support, wie viele andere Open Source-Player, nicht, dass Sie es verwenden sollten (ich glaube nicht), aber es ist kostenlos.
Skuda21
Ich stehe korrigiert. :) Danke ... Ich muss darüber nachdenken - denke ich.
aSteve
2

Haben Sie über hardwarebasierte Lösungen nachgedacht, da ich die meisten Poster mit Softwarelösungen sehen kann?

Sie sind sich nicht sicher, wie viel Sie ausgeben möchten, aber ein DrayTek Vigor 2830n würde Ihren Anforderungen gerecht. Es mag billigere Alternativen geben, aber dies ist die, die ich an zwei verschiedenen Standorten verwendet habe und die außergewöhnlich gut funktioniert hat.

Dieses Gerät verfügt über 3 WAN-Konnektivität, die Standard-ADSL-Leitung, die Ethernet-Verbindung und den 3G-Dongle. Sie können dies nur mit dem ADSL- und 3G-Dongle und mit dem Router selbst einrichten. Der 3G-Dongle muss sich nicht im Lastausgleichsmodus befinden, sondern nur im reinen WAN-Backup-Modus.

Nachdem Sie den ursprünglichen Beitrag erneut gelesen haben, möchte ich hinzufügen, dass Sie den VPN-Verkehr sogar nur über den 3G-Dongle einschränken können, um die Bandbreitenkosten Ihres 3G-Dongles zu minimieren.

Draytek Triple WAN Modem / Router

Kaltes T.
quelle
Ich denke definitiv immer noch über Hardwarelösungen nach. Der DrayTek Vigor 2830n sieht hervorragend aus - obwohl er teuer ist (£ 160 aus zweiter Hand bei ebay - der Mindestpreis, den ich gefunden habe). Ich kann einen 3G-6200N für ~ £ 40 (auch bei ebay) bekommen - also bin ich Fragen Sie sich, ist der DrayTek wirklich viermal so gut wie der Edimax? Habe ich Zuverlässigkeitsprobleme mit der billigeren Hardware? Wird es wesentlich schwieriger zu konfigurieren / sichern?
aSteve
Ich habe nur Erfahrung mit Edimax für die drahtlose Konnektivität, da ich festgestellt habe, dass sie extrem stabil und in Bezug auf WLAN ziemlich standardmäßig einzurichten sind. Bei der Modem- / Routerkonfiguration ist die Einrichtung und Konfiguration logisch. Sie würden die Anmeldeinformationen für die ADSL-Leitung und den 3G-Dongle eingeben und anschließend einige QOS- und WAN-Failover aktivieren. Ich denke, es gibt Ihnen auch die Möglichkeit, den Lastausgleich auch in% vorzunehmen. Es ist sicherlich nicht Ihr durchschnittlicher Router / Modem, den Sie zum Beispiel bei Netgear kaufen würden. Hat eine erstaunliche Menge an Funktionen und ist definitiv eher für KMU als für den Heimgebrauch geeignet.
Cold T
In den letzten Jahren war ich ein Fan von Netgear und ein Feind von Dlink - die ersteren haben "nur für mich gearbeitet", während die letzteren viel Kummer verursacht haben. Meine einzige Erfahrung mit Edimax ist mit einer IP-Kamera - und wie kann ich das höflich ausdrücken? "Sehr einfach" ... und kein Gerät, das ich anderen empfehlen würde.
aSteve
0

1) Nicht allzu schwierig - führen Sie eine Aufgabe aus und überprüfen Sie den Status Ihres DSL. Wenn dies fehlschlägt, starten Sie die 3G-Schnittstelle und führen Sie ein Failover über die Standardroute durch. Möglicherweise müssen Sie auch Ihr VPN neu starten.

2 & 3) Ich habe nie selbst nach einem vorgefertigten Paket gesucht, da meine Lieblingsfirewall diese Funktion standardmäßig enthält. Überprüfen Sie www.astaro.com (die Software-Appliance ist kostenlos für den Heimgebrauch oder Sie können die standardmäßige 30-Tage-Testversion zum Testen verwenden).

4) Hatte nie signifikante Probleme mit WAN-Failovers (außer dass die Backup-Leitung ebenfalls ausgefallen ist)

tsg

Truebsalgeblaese
quelle
0

Ich denke, Sie könnten keepalived verwenden, um alle 30 Sekunden eine Remote-Internetadresse (möglicherweise Google) mit einer gewissen Zeitüberschreitung zu pingen. Wenn das Ping-Timeout "keepalived" so konfiguriert, dass eth0 heruntergefahren und die 3G-Schnittstelle aufgerufen wird, starten Sie Ihr VPN neu.

Sie sollten Verzögerungen usw. bei der Konfiguration von keepalived berücksichtigen, damit die Schnittstellen nicht gewechselt werden, wenn sie nicht benötigt werden. Einige Tests / Experimente sind erforderlich. Ich kann mir keine Möglichkeit vorstellen, zur ADSL-Leitung zurückzukehren, wenn sie wieder lebendig ist.

Wenn Sie einen Router zwischen dem ADSL-Modem und Ihrem Server haben oder das Modem eine externe Adresse hat, die Sie anpingen können, können Sie diese wahrscheinlich als Kriterium für das Zurücksetzen der Verbindung verwenden.

KeepaliveD-Site

Ich hoffe, das kann Ihnen den Einstieg erleichtern!

Lukasz
quelle
0

Sie können Shorewall (Ubuntu-Paket verfügbar) und ein sehr nützliches Skript namens gwping verwenden, um eine Roll-Your-Own-Lösung zu erstellen.

dbendlin
quelle
Wo findet man dieses gwpingSkript?
Michael Hampton