Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

Pewny dostęp do sieci

Istnieje wiele sposobów zabezpieczenia się przed niespodziewanym brakiem dostępu do internet-u.
Jak obserwuję od niedawna najpopularniejszym sposobem jest zaopatrzenie się w dodatkową usługę świadczoną przez operatora GSM. Orange, Play, Blueconnect

Przeciętny Kowalski mając łącze od lokalnego ISP, bądź potentata (gdzie awarie zdarzają się nieco rzadziej) coraz częściej wchodzi w posiadanie niewielkiego modemu USB z zamontowaną kartą SIM.
Sieci często dodają usługę internet-u do abonamentu telefonicznego...

Chciałem się tutaj jednak skupić nad sytuacją gdzie grupa hostów (np. biuro) bądź wymajający użytkownik mają mieć dostęp do zasobów. Nieważne co się dzieje i gdzie coś "nawaliło", ma działać i koniec.

Opiszę sytuację z wykorzystaniem dwóch lokalnych operatorów ISP.

Przed zamówieniem, zainstalowaniem usług od któregokolwiek z usługodawców warto jest się zorientować czy nie są ze sobą powiązani w danej warstwie sieciowej.
Pomocne będzie tutaj zapytanie każdego z operatorów o "tracerotue" powiedzmy do ONET-u
łatwo wtedy będzie stwierdzić gdzie jest punkt wspólny obu operatorów.

Kolejnym aspektem jest zapytanie do jednego, bądź drugiego z operatorów o ewentualne powiązania L2, L3 - dzierżawy, transmisje, kolokacje...

Jeśli już stwierdzimy że obaj ISP nic sobie nie dzierżawią ani nie mają wspólnych punktów styku można przystąpić do instalacji usługi :)

Bezprzewodowo zazwyczaj spotyka się MikroTik-i ze zintegrowanymi antenami, dla tego też opiszę konfigurację z wykorzystaniem:

ISP1:(master)
- RouterBoard411+karta miniPCI
- Antena BOX
- Dowolny Switch SOHO

ISP2:(backup)
- RouterBoard711
- Antena BOX
- Dowolny Switch SOHO

(Podkreślony przełącznik to to samo urządzenie)

Konfiguracja obu płyt jest taka sama. To znaczy są ustawione jako router z serwerem DHCP i DHCP-Client'em na interfejsie przychodzącym.
Zresztą RB711 jest już konfigurowane "fabrycznie"...

Jedyna rzecz na jaką trzeba zwrócić uwagę to by od strony LAN-u konfiguracja była taka sama na obu urządzeniach. To znaczy ten sam zakres przydzielania adresów, ten sam geteway, w przypadku wiązania IP z adresem MAC konfig również musi być identyczny.

Gdzie wiec są różnice ? Dwie drogi domyślne dla komputerów końcowych ?
Nic z tego ;]

Zaczynamy zmiany, a właściwie zmianę.
Jako że MT to specyficzny Linux na którym dają się uruchomić proste skrypty powstał następujący kod:

dla SIP1(master): while (5>3) do={ if ([/ping xx.xx.xx.xx count=5] = 0) do={ if ([/ping 213.180.146.27 count=5] = 0) do={ /interface bridge disable 0 } else={ /interface bridge enable 0 } } else={ /interface bridge enable 0 } }
xx.xx.xx.xx - Adres IP urządzenia od SIP2(backup)

dla ISP2(backup) while (5>3) do={ if ([/ping yy.yy.yy.yy count=5] = 0) do={ if ([/ping 213.180.146.27 count=5] = 0) do={ /interface bridge disable 0 } else={ /interface bridge enable 0 } } else={ /interface bridge disable 0 } } yy.yy.yy.yy - Adres IP urządzenia od SIP1(master)

Drobne objaśnienie: Interfejs "bridge" w obu urządzeniach to wirtualizacja portu ethernet.

Pozwolę sobie objaśnić skrypt:

Przy uruchomieniu na urządzeniu "master" automatycznie włącza się wirtualny interfejs LAN-u, DHCP-Server zaczyna na nim rozgłaszać adresy, hosty w sieci je pobierają i wszystko zaczyna działać...
Natomiast na urządzeniu "backup" owy interfejs się wyłącza uniemożliwiając rozgłaszanie czegokolwiek.

Oba urządzenia pingują się wzajemnie i zarazem "onet" gdy master stwierdzi że nie ma kontaktu z onetem i jednocześnie z backupem wyłącza bridge i przestaje się rozgłaszać w LAN-ie.
W tym samym momencie backup traci ping do master-a a ONET dalej odpowiada (o ile to nie awaria globalna). gdy master nie odpowiada na backup-ie załącza się interfejs rozgłaszający adresy w LAN.
Tym samym komputery zaczynają odwoływać się do tego samego geteway, ale już na innym urządzeniu które wypycha ruch dalej w świat. 

Komentarze

0 nowych
cybe   2 #1 25.11.2011 10:02

Bardzo fajny i konkretny wpis. Tylko moje pytanie, po co w pętli taki warunek ? A druga sprawa to gorzej jak padnie onet... co wydaję się być abstrakcją :)

dragonn   10 #2 25.11.2011 14:51

Zamiast onet wziąłbym google, najlepiej DNS np. 8.8.8.8, jeżeli to już padnie to koniec świata nastąpi :). A co do
while (5>3) na pewno jest bardziej eleganckie rozwiązanie, nie wiem dokładnie co to za język (programista to z mnie żaden). W przypadku bash stosuje się while true a dla C z tego co pamiętam było for (;;) czy jakoś tak.

cybe   2 #3 25.11.2011 15:29

właśnie zastanawiałem się czy ten while to po prostu pętla nieskończona bo nie widzę nigdzie dekrementacji :)

silvestr   4 #4 25.11.2011 18:20

A nie lepiej po prostu ustawić tracking interfejsów i przypisać im wartości? Bo rozumiem, że masz tam VRRP odpalone na tych routerach?

R_przemek   3 #5 27.11.2011 08:40

[b]silvestr[/b] - Padło hasło VRRP. Ów protokół służy do synchronizacji stanów.
Gdy na przykład na dwóch maszynach jest zainicjowane VRRP z priorytetem większym dla maszyny "A" i mniejszym dla maszyny "B". To gdy "A" zniknie zastępuję ją "B". A w tym przypadku oba routery działają, zakładam że problematyczne stało się coś w infrastrukturze jednego z operatorów, bądź jego dostawcy...

[b]cybe[/] - Tak, while leci w kosmos... Zdaję sobie sprawę że niezbyt ładnie to wygląda, ale przede wszystkim działa ;]
Ponad to MiktoTik ma dość okrojone możliwości jeżeli chodzi o programowanie w nim.

[b]dragonn[/b] - To nie skrypt powłoki, ani C. Jest to po prostu takie "coś" zrozumiałe dla tej platformy :P

[b]cybe[/b] - Host kontrolny totalnie dowolny, może być google interia bądź jakikolwiek host globalny.



W późniejszym czasem może uda mi się naskrobać coś bardziej logicznego i może trochę bardziej zaawansowanego...

silvestr   4 #6 27.11.2011 13:06

Jak działa VRRP to ja wiem. W VRRP masz jeszcze taką funkcjonalność jak tracking interfejsów. Przypisujesz danemu interfejsowi wartość, o która jest zmniejszany cały priorytet hosta w momencie kiedy ten interfejs pada. Oczywiście, żeby miało to sens to musi być preempting włączony.

cybe   2 #7 28.11.2011 12:09

Ja broń Boże nie kwestionowałem kodu i pętli, zainteresowało mnie tylko dlaczego taki warunek w pętli i czy ma on jakiś głębszy sens poza pętlą nieskończoną :) Pozdrawiam i czekam na więcej wpisów