Projekt zapewniający przełączenie połączenia głównego na zapasowe
Ostatnia zmiana: 2014-12-30 07:23

Changelog

  • 2014-12-29
- dodanie innych sposób odczytu interfejsu i gatewaya

  • 2013-10-15
- dostosowanie pakietu do aktualnego systemu

  • 2012-11-25
- aktualizacja dla Attitude Adjustment

  • 2012-01-02
- prawie identyczny skrypt realizujący podobną funkcjonalność można znaleźć na forum OpenWrt. Inne projekty realizujące to samo to multiwan oraz mwan2 czy mwan3

  • 2010-10-13
- pierwsza wersja projektu

Projekt przeznaczony jest do realizacji backupu łącza internetowego. Drugie łącze (backup) może być zrealizowane przy pomocy modemu 3G, innego połączenia kablowego (drugi wan) lub połączenia radiowego. Używamy łącza podstawowego, jeżeli połączenie zostanie zerwane, nastąpi automatyczne przełączenie na linię zapasową. Po powrocie połączenia nastąpi ponowne przełączenie na linię podstawową. Ten projekt nie zapewnia podtrzymania sesji czy innym możliwości, jego zadaniem jest po prostu aktywacja następnego interfejsu.

W OpenWrt jest pakiet realizujący podobną funkcjonalność - multiwan. Umożliwia on wykonanie m.in failover, czyli przełączenia transmisji w przypadku braku połączenia przez jedną z linii. Niestety utrzymuje on podniesione oba interfejsy, co nie zawsze może być potrzebne, jeżeli łącze zapasowe realizowane jest przez modem GSM i liczymy się z każdym przesłanym bajtem.

Zasada działania tego skryptu jest prosta - co określony czas wykonywany jest ping do określonego hosta przez interfejs główny. Jeżeli nie ma odpowiedzi - podnoszony jest interfejs zapasowy i utrzymywane jest połączenie aż do momentu ponownego pojawienia się odpowiedzi z głównego interfejsu. Z powodu tej zasady, simplefailover nie będzie działał z interfejsem głównym który znika (nie jest dostępny) przy utracie połączenia (więc np. połączenie modemowe czy pppoe). Interfejs zapasowy może być dowolnego typu.

Zaletą takiego rozwiązania jest aktywność połączenia zapasowego tylko w miarę potrzeby co ma znaczenie przy połączeniu komórkowym, ponieważ nie zmniejsza to limitu transferu danych. Wadą - niezbędny jest czas potrzebny do przełączenia i aktywacji drugiego połączenia, który może dochodzić do kilkudziesięciu sekund (zależy od modemy, karty, rodzaju połączenia).

Podobną funkcjonalność posiadają standardowo niektóre routery 3G np. TP-Link TL-MR3420 z oryginalnym oprogramowaniem.

Wymagania:

  • działająca konfiguracja łącza podstawowego, np linia z modemu kablowego
  • działająca konfiguracja łącza zapasowego np. przez modem USB - przykład konfiguracji - patrz dokument Router 3G.
Aby poprawnie działał simplefailover, oba łącza muszą być poprawnie skonfigurowane. Czyli wykonanie:

ifdown wan2; ifup wan - ma umożliwić dostęp do internetu
ifdown wan; ifup wan2 - ma umożliwić dostęp do internetu

(zakładamy że tak nazywają się interfejsy - wan i wan2).
Należy pamiętać, że simplefailover nie robi nic z konfiguracją, trasami domyślnymi itd. Jego zadanie sprowadza się tylko do uruchomienia drugiego łącza, jeżeli pierwsze przestaje odpowiadać na pingi. Z tego też powodu należy samodzielnie zatroszczyć się o właściwą konfigurację obu łączy, zapewnić podtrzymanie działania łącza oraz ew. ponowne połączenie w przypadku zaniku połączenia.

Instalacja

Należy zainstalować pakiet simplefailover:


    # opkg update
    # opkg install simplefailover

Plik można zainstalować także "ręcznie", dostępny jest w moim repozytorium.

Konfiguracja

Plik konfiguracyjny zawarty jest w /etc/config/simplefailover. Składają się na niego cztery opcje:

  • wan_main: główny interfejs WAN (domyślna nazwa: wan)
  • wan_backup: zapasowy interfejs WAN (domyślna nazwa: wan2)
  • host: host do którego będzie sprawdzana trasa (domyślnie: 8.8.4.4, dns google)
  • interval: czas między sprawdzeniem połączenia (domyślnie: 5 sek.)
Jeżeli skonfigurowany interfejs zapasowy ma inną nazwę np. 3g, należy przed uruchomieniem zmienić odpowiedni parametr w pliku konfiguracyjnym, np.


    # uci set simplefailover.@simplefailover[0].wan_backup=3g
    # uci commit simplefailover

Uruchomienie



    # /etc/init.d/simplefailover enable
    # /etc/init.d/simplefailover start

Testy

Sprawdzenie działania jest proste - wystarczy odłączyć kabel od łącza podstawowego. Powinno przełączyć się na łącze zapasowe. Ponowne podłączenie kabla powinno przełączyć transmisję znów na łącze podstawowe. Informacje o przełączeniu połączenia wpisywane są do logu systemowego (do odczytania przez polecenie logread).

Przykładowa konfiguracja

Jako przykład zaprezentowano konfigurację:
- łącze podstawowe - połączenie kablowe przez interfejs WAN w routerze
- łącze zapasowe - modem 3G z kartą Aero2 połączony do portu USB
Konfiguracja wymaga:
- określenia nowego interfejsu o nazwie logicznej wan2, będzie to połączenie modemowe. Ustawiona została opcja auto na 0, żeby połączenie nie uruchamiało się na starcie systemu
- zezwolenie w firewallu na korzystanie z tego interfejsu jako źródła internetu


    # uci set network.wan2=interface
    # uci set network.wan2.proto=3g
    # uci set network.wan2.service=umts
    # uci set network.wan2.device=/dev/ttyUSB0
    # uci set network.wan2.apn=darmowy
    # uci set network.wan2.defaultroute=1
    # uci set network.wan2.auto=0
    # uci commit network
    # uci set firewall.@zone[1].network='wan wan2'
    # uci commit firewall
    # opkg update
    # opkg install simplefailover
    # /etc/init.d/simplefailover enable
    # reboot