Projekt zapewniający przełączenie połączenia głównego na zapasowe
Ostatnia zmiana: 2017-11-05 15:12
Changelog- dodanie innych sposobów odczytu interfejsu i gatewaya
- dostosowanie pakietu do aktualnego systemu
- aktualizacja dla Attitude Adjustment
-
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- pierwsza wersja projektu
Projekt przeznaczony jest do realizacji backupu łącza internetowego. Drugie łącze (backup) może być zrealizowane przy pomocy modemu 3G/4G, 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 dostępne są pakiety realizujące podobną funkcjonalność -
multiwan czy
mwan3. Umożliwiają one wykonanie m.in
failover, czyli przełączenia transmisji w przypadku braku połączenia przez jedną z linii. Niestety wymagane jest utrzymanie obu podniesionych interfejsów, co nie zawsze może być potrzebne, jeżeli łącze zapasowe realizowane jest przez modem USB 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 OpenWrt jako router 3G/4G.
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