VRRP, czyli wyjście awaryjne

Wstęp Funkcja protokołów routingu to przede wszystkim odnajdywanie drogi do danej podsieci oraz zapobieganie awarii łączy. Rozpatrując sytuację w sieci lokalnej protokoły routingu tracą na znaczeniu. Bynajmniej nie mam tu […]

Wstęp

Funkcja protokołów routingu to przede wszystkim odnajdywanie drogi do danej podsieci oraz zapobieganie awarii łączy. Rozpatrując sytuację w sieci lokalnej protokoły routingu tracą na znaczeniu. Bynajmniej nie mam tu na myśli, że routing jest niepotrzebny, wręcz przeciwnie, ale rozpatrując odcinek między hostem a bramą, to brama jest najsłabszym ogniwem. Czasem niezbędne są prace administracyjne na urządzeniu, np. uaktualnienie oprogramowania, w trakcie których niezbędne jest wyłączenie urządzenia z użytku i mamy dziurę. A gdy mamy awarię jeszcze większa kiszka, bo awarie przytrafiają się często w nieodpowiednich momentach.
Fabryka stoi. Przelewy nie idą. Szef nie może wejść na kwejka, sekretarka na pudelka. Dostajemy zjeby…

Odpowiedzią na te bolączki jest Virtual Router Redundancy Protocol (VRRP) zaproponowany przez RFC2338, uaktualniony przez RFC3768 i RFC5798.
VRRP pozwala stworzyć klaster złożony z kilku routerów (bram). Zapytamy jak to, przecież zwykle dostajemy jedną bramę, więc jak wykorzystać ich kilka.
Protokół wykorzystuje tzw lotny adres IP, który jest przenoszony do aktualnie aktywnego routera. Jeśli router zapasowy nie wykryje obecności routera podstawowego, sam przydziela sobie ów adres i ciągłość działania sieci zostaje przywrócona.

Konfiguracja

Zaczynając konfigurację od strony lokalnej, niech to będzie VLAN 42, Tworzymy instancję protokołu VRRP.
Oczywiście routing jest już skonfigurowany, więc wprowadzone są ustawienia podobne do tych:

(config)# vlan 42 ip address 1.1.1.1 255.255.0.0
(config)# ip route 0.0.0.0 0.0.0.0 8.8.8.8
(config)# ip route 1.1.0.0 255.255.0.0 vlan 42 name "LAN"
(config)# ip route 10.0.0.0 255.0.0.0 blackhole name "lokalne"
(config)# ip route 172.16.0.0 255.240.0.0 blackhole name "lokalne"
(config)# ip route 192.168.0.0 255.255.0.0 blackhole name "lokalne"
(config)# ip routing

Gdzie obsługiwana podsieć to 1.1.0.0/16, adres bramy w podsieci to 1.1.1.1. Zakładamy ze adres Next Hop to 8.8.8.8.

Uwaga! By VRRP działało poprawnie przy n bramach potrzeba n+1 adresów IP w danej podsieci.

Niech 1.1.1.1 pozostanie rozgłaszanym adresem bramy, więc w prezentowanej konfiguracji będzie adresem lotnym.
Pierwszy router będzie miał przypisany adres 1.1.1.2, a drugi 1.1.1.3.

VRRP

Konfigurujemy urządzenie pierwsze.

(config)# no vlan 42 ip address 1.1.1.1 255.255.0.0
(config)# vlan 42 ip address 1.1.1.2 255.255.0.0
(config)# vlan 42 vrrp vrid 42 virtual-ip-address 1.1.1.1
(config)# vlan 42 vrrp vrid 42 priority 100
(config)# vlan 42 vrrp vrid 42 enable
(config)# router vrrp ipv4 enable

Gdzie liczba występująca po vrid jest numerem instancji VRRP i może być dowolna, a występująca po priority jest priorytetem. Im wyższy priorytet tym ważniejsze urządzenie.

Konfiguracja dla drugiego urządzenia będzie podobna z tą różnicą, że będzie miało niższy priorytet.

(config)# vlan 42 ip address 1.1.1.3 255.255.0.0
(config)# vlan 42 vrrp vrid 42 virtual-ip-address 1.1.1.1
(config)# vlan 42 vrrp vrid 42 priority 10
(config)# vlan 42 vrrp vrid 42 enable
(config)# router vrrp ipv4 enable

Uwaga! Aby konfiguracja VRRP miała sens, należy pamiętać o dokonaniu konfiguracji dla każdego obsługiwanego VLANu, a także peeringu!!!
Uwaga! Aby VRRP działało popranie, wszystkie routery muszą móc komunikować się z grupą multicastową o adresie 224.0.0.18 w każdym obsługiwanym VLANie!
Uwaga! Proszę starać się zachować ustawienia priorytetu takie same dla wszystkich instancji na danym urządzeniu, lub zmieniać je z głową. Zabawa z priorytetami grozi tym, że instancja VRRP odpowiedzialna za peering przeniesie się na jedno urządzenie, a za utrzymanie ruchu w danym VLANie na drugie, czyli routing może się rozjechać.

Na koniec zaleca się by routery zapasowe nie odpowiadały na pingi wysyłane na adresy wirtualne. Pozwoli to na proste wykrycie awarii przez systemy monitoringu, więc na routrze zapasowym wykonujemy:

(config)# no router vrrp virtual-ip-ping

Jeśli padnie pytanie:

To jak mamy 3 routery – jeden aktywny a 2 zapasowe (z różnymi priorytetami) i jak pada aktywny to i zapasowe przejmują ruch, to nie pokłócą się? Oba będą aktywne (mimo ustawień priorytetyzacji), bo na żadnym z zapasowych nie pinga się lotny adres?

Odpowiadamy, że nie ma problemu, bo VRRP nie wykorzystuje klasycznego pinga. Miast pinga, każdy z routerów wysyła cyklicznie wiadomości hello na wspominany wyżej adres multicastowy.
Od razu sugestia by ograniczyć dostęp do grupy 224.0.0.18 tylko do zaufanych urządzeń 😉

Ave Lama!