Routing dynamiczny/Protokół RIPv2
Protokół RIPv2
edytujPonieważ jest to obszerny i dość trudny temat, na początku skupmy się nad relatywnie prostym przypadkiem, który może mieć zastosowanie w niejednej przerośniętej sieci osiedlowej.
Przedstawimy w nim przykład zastosowania routingu dynamicznego na bazie protokołu RIPv2. Warto wspomnieć, że wcześniejsza wersja - RIPv1 - był jednym z pierwszych protokołów routingu zastosowanym w sieci Internet. Bardziej rozbudowanym i doskonalszym protokołom z rodziny OSPF i BGP poświęcone będą następne rozdziały.
Zebra to pakiet oprogramowania routingu dynamicznego dla systemów z rodziny *nix . Wspiera protokoły RIPv1, RIPv2, RIPng, OSPFv2, OSPFv3, BGP-4, BGP+4. Składa sie z głównego demona zebra, który na podstawie danych dostarczonych przez ripd, ripngd, ospfd, ospf6d, bpgd, modyfikuje tablice routingu jądra systemu. Modularna budowa pozwala rozbudować oprogramowanie rutera o przyszłe, bardziej doskonałe protokoły.
Po skompilowaniu źródeł otrzymujemy m.in. pliki wykonywalne o nazwach wyróżnionych powyżej. Wykonanie skryptu 'make install' umieszcza domyślnie te pliki w folderze /usr/local/sbin/ .
Stamtąd możemy już bezpośrednio je uruchomić. Warto w tym celu utworzyć niewielki skrypt, który za każdym razem przy starcie routera będzie uruchamiać obsługę routingu dynamicznego. Jego treść wystarczająca na potrzeby tego przykładu zamieszczona jest poniżej.
#! /bin/sh # zamyka poprzednio działające demony killall ripd; killall zebra #uruchamia demony - istotna kolejnosc uruchamiania /usr/local/sbin/zebra -d /usr/local/sbin/ripd -d
Spowoduje to uruchomienie demonów i odczytanie plików konfiguracyjnych, których demony domyślnie oczekują w folderze /usr/local/etc.
Bezpośrednio po wykonaniu skryptu 'make install' w powyższym folderze znajdują się przykładowe pliki konfiguracyjne (zebra.conf.sample, ripd.conf.sample) dla każdego z demonów. Należy je odpowiednio przeedytować stosownie do konfiguracji sieci, w której router będzie pracować i zapisać pod nazwą zebra.conf oraz ripd.conf.
/usr/local/etc/zebra.conf
Umieszczamy tutaj m.in. dodatkową konfigurację interfejsów sieciowych, aliasowe numery ip, statyczne pozycje tablicy routingu, które dany router bedzie rozglaszal np. poprzez protokół RIPv2 innym routerom, serwerom bądź też stacjom roboczym (lub rozrywkowym :-)) takim jak nasz domowy komputer podłączony do Internetu przez sieć lokalną w bloku.
! zebra sample configuration file hostname ruterek password zebra enable password zebra ! Static default route sample. ip route 0.0.0.0/0 10.250.0.5 log file /var/log/zebra/zebra.log
Jeżeli nasz ruter posiada już skonfigurowaną statycznie tablicę routingu, nie ma konieczności przenosić jej do pliku zebra.conf . Jednak przeniesienie statycznej tablicy routingu do pliku zebra.conf na pewno pozytywnie wpłynie na ład i porządek w konfiguracji rutera, co w konsekwencji ułatwi odnalezienie przyczyn ewentualnych problemów.
/usr/local/etc/ripd.conf
W tym pliku zamieszczamy opcje związane bezpośrednio z obsługą protokołów RIPv1 oraz RIPv2. Przykładowa konfiguracja zamieszczona jest poniżej.
! RIPd sample configuration file hostname ripd password zebra ! wyświetla szczegółowe komunikaty dotyczące działania demonów debug rip events debug rip packet debug rip zebra router rip version 2 ! oznaczają podsieci lub interfejsy, w których pracuje ruter network 10.250.0.0/16 network 10.180.0.0/16 network 193.18.201.0/24 network eth0 ! polecenie "redistrubute" wskazuje, które trasy mają być rozgłaszane ! rozglasza trasy dodane do kernela nie majace nic wspolnego z konfiguracją ! interfejsów naszego rutera, rozglasza takze trasy do podsieci do których ! naleza aliasowe numerki ip do interfejsow redistribute kernel ! rozgłasza statyczne trasy zdefiniowane w pliku zebra.conf redistribute static ! rozgłasza trasy do podsieci, w których ruter bezpośrednio pracuje ! poprzez konfiguracje swoich interfejsow (czyli trasy do podsieci oznaczonych ! jako 'scope link' za wyjatkiem aliasowych konfiguracji dla interfejsów redistribute connect ! wskazuje, gdzie maja byc kierowane logi log file /var/log/zebra/ripd.log !log stdout
Tutaj przydałby się jakiś przykład z życia wzięty i odpowiednio ilustrowany.
Gdy juz wszystko bedzie dzialac jak nalezy, nie zapomnijmy wykomentowac wpisow 'debug ...' w ripd.conf . W przeciwnym razie rozrastające się szybko logi zapełnią nam całe wolne miejsce na partycji.