2 łącza WAN Failover + Recursive Routing [Konfiguracja Mikrotik]
Wstęp
W dzisiejszych czasach praktycznie każda firma posiada zapasowe łącze internetowe. Jest to bardzo dobre rozwiązanie, w przypadku problemów z głównym łączem od strony naszej części topologii lub od strony dostawcy. Wiąże się to oczywiście z większą opłatą, lecz kalkulując i tak wyjdziemy na plus. Wyobraźmy sobie, że wielkie korporacje straciłyby dostęp do internetu na jakiś czas – wygenerowałoby to bardzo duże straty.
Wstęp
Co to jest failover?
Co to jest recursive routing?
Dodanie tras
Dodanie reguły NAT dla 2 łącz
Dodanie skryptu
Test konfiguracji
Artykuł w formie video obejrzysz tutaj 🙂
Co to jest Failover?
Failover to proces automatycznego przełączania się systemu lub aplikacji na zapasowe źródło zasilania lub zapasowy system w przypadku awarii lub innego problemu, w celu utrzymania ciągłości działania systemu lub aplikacji. Jest to ważne w przypadkach działania np. systemów bankowych.
Co to jest Recursive Routing?
To mechanizm, który daje nam możliwość monitorowania łącza, gdy awaria zajdzie w dalszej strukturze topologii po stronie operatora. Bez rekurencyjnego routingu pingi dochodziłyby na bramę, mielibyśmy złudne wrażenie, że wszystko działa lecz nie mielibyśmy dostępu do internetu.
Konfiguracja
Najpierw musimy mieć 2 dostawców zakładce IP> DHCP Client

Przechodzimy teraz do zakładki IP > Routes
Domyślnie będziemy mieć 2 trasy

Klikamy „+” i uzupełniamy pola

Dst. Address: wpisujemy publiczny adres DNS, który będzie naszym „wyjściem na świat” oznacza to, że będziemy mieć komunikację z internetem
Gateway: adres publiczny naszego dostawcy
Type: unicast
Distance: 1
Scope: ustawiamy na 10 czyli bezpośrednio połączony do routera
Wykaz wartości można znaleźć pod linkiem
Target scope: zostawiamy 10
I widzimy, że trasa jest osiągalna przez interfejs podłączony do głównego dostawcy
Proces powtarzamy dla zapasowego łącza

Dodajemy kolejną rubrykę i uzupełniamy

Dst. Address: wpisujemy 0.0.0.0/0 czyli cały ruch ma przechodzić „w świat”
Gateway: 8.8.8.8
Check gateway: ustawiamy ping
Distance: 1 – dla głównego łącza
Scope: 30 – czyli statyczny
Target scope: zostawiamy 10
Powtarzamy czynność dla zapasowego łącza

Distance ustawiamy na 2, gdyż mniejsza wartość jest traktowana z większym priorytetem
Nasza tablica routingu powinna wyglądać tak

Widzimy, że 2 trasy są rekursywne przez główne i zapasowe łącze
Jeśli nie mamy ustawionego NATa dla naszych dostawców, przechodzimy do zakładki IP > Firewall i dodajemy nową regułę

I w zakładce Action zaznaczamy masquerade

Czynność powtarzamy dla drugiego łącza


Teraz użyjemy narzędzia Netwatch, by przełączanie nastąpiło po zdefiniowanym czasie. Przechodzimy do zakładki Tools > Netwatch i znakiem plusa dodajemy nową rubryke. Uzupełniamy pola

Host: wpisujemy adres bramy
Interval: To czas co ile router ma wysłać pakiet sprawdzający łącze
Timeout: Czas przełączanie na zapasowe łącze
Przechodzimy do zakładki Up i definiujemy skrypt

Oraz Down

Czynność powtarzamy dla zapasowego łącza, będzie on działać w odwrotny sposób



Widzimy że oba łącza działają

Test konfiguracji
Po wyłączeniu głównego łącza status się zmieni

A w tablicy routingu trasa zmieni się z głównego na zapasowe łącze


Czarny kolor czcionki oznacza obecnie wykorzystywane łącze

Cześć. Jesteś przekonany, że konfiguracja Netwatch’y jest poprawna? 1) Czy Netwatch będzie w stanie rozpoznać niedostępność danego adresu, skoro pójdzie drugim interfejsem? 2) Czy skrypty Down/Up nie są zamienione w stosunku do adresów hosta?
Wynik badania netwatch jest pokazany w artykule, wszystko działało poprawnie.
Badanie jest wykonywane równolegle i nie zależnie dla 2 ISP.
Jeżeli coś konkretnie wzbudziło wątpliwości to napisz co konkretnie.
Na jakiej wersji softu to robisz? Bo w ip-> route jak dodam nowy wpis to nie mam do wyboru "reachable" przez któryś interfejs.
Piszesz,żeby podać adres IP publiczny dostawcy czyli rozumiem, że mój adres IP przydzielony przez ISP – tylko to jest adres dynamiczny i za chwilę się może zmienić.
I dlaczego przy zapasowym łączu wpisujemy 192.168.1.1 a nie adres też zewnętrzny IP?
Przepraszam ale paru rzeczy nie rozumiem.
W skrypcie netwatch masz "(find … ) " a nie powinno być [find … ] ?
I jeśli dobrze rozumiem – jeśli odpowiada 8.8.8.8 to włącz routing zapasowy a jeśli nie działa to go wyłącz? Fajny artykuł z opisem netwatcha, ja kombinowałem skryptem niepotrzebnie.
Zakładając, że głównym łączem jest LTE, a zapasowym wolna radiówka ze stałym IP:
LTE jako główne łącze:
add distance=1 gateway=lte1 check-gateway=ping
Trasa o metryce 1 wskazuje na LTE jako główną bramę dla ruchu wychodzącego. Mechanizm check- gateway=ping sprawdza dostępność bramy LTE poprzez wysyłanie pingów.
WAN jako zapasowe łącze:
add distance=2 gateway=xxx.xxx.xxx.xxx check-gateway=ping #adres IP bramy radiówki
Trasa o metryce 2 jest używana, gdy główne łącze LTE przestaje odpowiadać na pingi.
Monitorowanie dostępności (routing rekurencyjny):
Dodatkowe trasy monitorujące zostały skonfigurowane:
add distance=1 dst-address=1.1.1.1 gateway=lte1 scope=10 target-scope=30
add distance=1 dst-address=8.8.8.8 gateway=xxx.xxx.xxx.xxx scope=10 target-scope=30
1.1.1.1 jest monitorowany przez LTE.
8.8.8.8 jest monitorowany przez WAN.
Mechanizm monitorowania działa rekurencyjnie: jeśli 1.1.1.1 przestaje być osiągalny, trasa główna przez LTE jest automatycznie wyłączana.
Przełączenie na zapasowe łącze:
Gdy check-gateway=ping wykryje brak odpowiedzi od bramy LTE, trasa przez lte1 zostaje oznaczona jako niedostępna.
Ruch zostaje automatycznie przekierowany przez zapasową trasę:
add distance=2 gateway=xxx.xxx.xxx.xxx
Powrót na LTE:
Jeśli brama LTE ponownie zacznie odpowiadać na pingi, trasa przez lte1 zostaje automatycznie aktywowana, a router przełącza ruch z powrotem na główne łącze.
Witam do Daniello mam pytanie w tych trasach : add distance=1 dst-address=1.1.1.1 gateway=lte1 scope=10 target-scope=30
add distance=1 dst-address=8.8.8.8 gateway=xxx.xxx.xxx.xxx scope=10 target-scope=30 nie dajemy już check-gateway=ping tak? i jeszcze jedno fajne przykłady ale co gdy nie mamy żadnego stałego ip wan? Jak zrobić gdy np.. w LTE mamy adres z klasy prywatnej a drugi jest dynamiczny (jednak publiczny WAN) jak to wtedy ugryźć? Pozdrawiam
Witam do Daniello mam pytanie w tych trasach : add distance=1 dst-address=1.1.1.1 gateway=lte1 scope=10 target-scope=30
add distance=1 dst-address=8.8.8.8 gateway=xxx.xxx.xxx.xxx scope=10 target-scope=30 nie dajemy już check-gateway=ping tak? i jeszcze jedno fajne przykłady ale co gdy nie mamy żadnego stałego ip wan? Jak zrobić gdy np.. w LTE mamy adres z klasy prywatnej a drugi jest dynamiczny (jednak publiczny WAN) jak to wtedy ugryźć? Pozdrawiam