Zagadnieniem jakim dziś się zajmiemy jest prawidłowy sposób łączenia ze sobą routerów różnych producentów. Załóżmy, że w pewnej małej firmie infrastruktura sieciowa bazuje na sprzęcie dwóch różnych firm. Znajdują się tam dwa routery, jeden firmy Cisco i jeden firmy Planet. Jak połączyć i skonfigurować ze sobą dwa routery różnych producentów aby komunikacja między nimi była możliwa? Z pomocą przychodzi technologia PPP.
Jeżeli interesuje Cię ten temat w formie odcinka video – kliknij 🙂
Enkapsulacja PPP – co to takiego?
Na początek szybkie przypomnienie podstaw sieci Ethernet. Co to takiego enkapsulacja (ang. encapsulation)? To etap przygotowania ramki, który rozpoczyna się w warstwie aplikacji modelu OSI, a kończy w warstwie fizycznej. W skrócie mówiąc to hermetyzacja. Ten proces polega na wstawieniu w całej strukturze danych z warstwy wyższej w polu danych struktury danych warstwy niższej po stronie nadawczej przed wysłaniem.
PPP (ang. Point-to-Point Protocol) jest to metoda, która umożliwia enkapsulację ramek pomiędzy maszynami różnych producentów sprzętu sieciowego. Umożliwia on obsługę uwierzytelniania PAP lub CHAP, a także kompresję danych. Do działania używa dwa protokoły: LCP (ang. Link Control Protocol) i NCP (ang. Network Control Protocol).
Zanim protokół PPP rozpocznie przesyłanie danych to najpierw następuje otwarcie łącza i negocjacja konfiguracji. Za to właśnie odpowiedzialny jest protokół LCP. Gdy to zostanie zrobione i połączenie będzie zainicjowane to wtedy protokół NCP wykonuje konfigurację warstwy sieci. Po tych krokach PPP dopiero rozpoczyna przesyłanie danych.
Jak wspominaliśmy ten protokół posiada dwa rodzaje uwierzytelniania. Jest to PAP (ang. Password Authentication Protocol) oraz CHAP (ang. Challenge Handshake Authentication Protocol). W metodzie PAP login jak i hasło przesyłane są jawnie. Również uwierzytelnianie występuje tylko na początku połączenia, a później ten proces już nie występuje. Dlatego też ten protokół nie jest już popularny i rzadko używany. W przypadku CHAP wierzytelność jest trójetapowa. Wykorzystuje on MD5. Ten protokół kilkukrotnie weryfikuje hasło uwierzytelniania podczas komunikacji aby sprawdzić jego poprawność przez klienta.
Konfiguracja PPP
Konfigurację tego protokołu przeprowadzimy według poniższego schematu. Środowiskiem testowym w jakim przeprowadzimy konfigurację będzie GNS3.
Na początku musimy zaadresować interfejs na routerze R1 wychodzący w stronę routera R2. W naszym przypadku będzie to interfejs szeregowy serial3/0. Dodatkowo podczas adresacji interfejsu musimy podać komendę clock rate [bity na sekundę], która to określa prędkość pracy tego portu. Dlaczego tak musimy zrobić? Dlatego, że Router R1 jest w tym przypadku będzie urządzeniem DCE, które zawsze musi podać synchronizację aby drugie urządzeniem DTE (w naszym przypadku R2) się do tego dostosowało.
R1(config)#interface serial 3/0 R1(config)#ip address 10.10.10.1 255.255.255.0 R1(config)#clock rate 64000 R1(config)#no shut
Następnie tą samą czynność musimy wykonać na routerze R2, tylko już bez podawania prędkości pracy interfejsu.
R2(config)#interface serial 3/0 R2(config)#ip address 10.10.10.2 255.255.255.0 R2(config)#no shut
Teraz wydajemy polecenie na routerze R1 show interface s3/0.
R1_cisco#sh interfaces serial 3/0 Serial3/0 is up, line protocol is up Hardware is M4T Internet address is 10.10.10.1/24 MTU 1500 bytes, BW 1544 Kbit/sec, DLY 20000 usec, reliability 255/255, txload 1/255, rxload 1/255 Encapsulation HDLC, crc 16, loopback not set Keepalive set (10 sec) Restart-Delay is 0 secs
Jak widać na powyższym listingu, domyślnie na tym interfejsie uruchomiona jest enkapsulacja HDLC. Jak zmienić ten parametr aby był w trybie enkapsulacji PPP? Należy dokonać zmian w trybie konfiguracji danego interfejsu. Więc ustawiamy się na interfejsie serial 3/0 na routerze R1 i wydajemy polecenie encapsulation ppp.
R1_cisco(config)#interface serial 3/0 R1_cisco(config-if)#encapsulation ppp
Teraz wydajmy polecenie sh interface serial 3/0. Dzięki tej komendzie zobaczymy, że została już uruchomiona enkapsulacja ppp.
R1_cisco#sh interfaces serial 3/0 Serial3/0 is up, line protocol is down Hardware is M4T Internet address is 10.10.10.1/24 MTU 1500 bytes, BW 1544 Kbit/sec, DLY 20000 usec, reliability 255/255, txload 1/255, rxload 1/255 Encapsulation PPP, LCP REQsent, crc 16, loopback not set Keepalive set (10 sec) Restart-Delay is 0 secs Last input 00:00:07, output 00:00:01, output hang never Last clearing of "show interface" counters 00:01:30 Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 0
Wydajmy więc polecenie ping z routera R1 na adres portu na routerze R2 aby sprawdzić czy komunikacja między urządzeniami jest prawidłowa.
R1_cisco(config)#do ping 10.10.10.2 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 10.10.10.2, timeout is 2 seconds: ..... Success rate is 0 percent (0/5)
Jak widać router R1 nie może połączyć się z routerem R2. Również po wydaniu komendy show ip interface brief na routerze R1 będzie można zaobserwować, że status interfejsu wychodzącego do routera R2 jest na up, ale Protocol już posiada status down.
R1_cisco#sh ip int brie Interface IP-Address OK? Method Status Protocol FastEthernet0/0 unassigned YES unset administratively down down FastEthernet1/0 unassigned YES unset administratively down down Ethernet2/0 unassigned YES unset administratively down down Ethernet2/1 unassigned YES unset administratively down down Ethernet2/2 unassigned YES unset administratively down down Ethernet2/3 unassigned YES unset administratively down down Serial3/0 10.10.10.1 YES manual up down Serial3/1 unassigned YES unset administratively down down Serial3/2 unassigned YES unset administratively down down Serial3/3 unassigned YES unset administratively down down
Dlatego też aby komunikacja pomiędzy urządzeniami była możliwa musimy ustawić się na routerze R2 i wydać polecenie encapsulation ppp na porcie serial 3/0.
R2_planet(config)#interface serial 3/0 R2_planet(config-if)#encapsulation ppp
Po tych krokach routery mogą się ze sobą komunikować w trybie enkapsulacji ppp.
R2_planet#ping 10.10.10.1 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 10.10.10.1, timeout is 2 seconds: Success rate is 100 percent (5/5), round-trip min/avg/max = 24/27/32 ms
Uwierzytelnianie PPP
Teraz wykonajmy uwierzytelnianie w ppp. Aby tego dokonać pierwszym krokiem jaki należy zrobić jest utworzenie użytkownika i hasło na każdym routerze. Ustawiamy się więc na routerze R1 i w trybie konfiguracji globalnej wydajemy polecenie username[użytkownik]password[hasło].
R1_cisco(config)#username R2_planet password admin
Tą samą czynność musimy powtórzyć na routerze R2 lecz podajemy inny login ale to samo hasło. Ponadto nazwa użytkownika powinna być taka sama jak nazwa hostname na drugim routerze.
R2_planet(config)#username R1_cisco password admin
Teraz wybieramy odpowiedni tryb uwierzytelniania. Najbezpieczniejszym trybem będzie CHAP, gdyż tak jak wspominałem wcześniej jest to tryb bezpieczniejszy niż PAP. Ustawiamy się więc na routerze R1, na interfejsie serial 3/0 i wpisujemy komendę ppp authentication chap.
R1_cisco(config)#interface serial 3/0 R1_cisco(config-if)#ppp authentication chap
Po wprowadzeniu komendy zauważymy, że status interfejsu najpierw zmienił się na down lecz po chwili wstał, ale ostatecznie znów został wyłączony. Dlaczego? Odpowiedź jest prosta dlatego, że po drugiej stronie nie została skonfigurowana opcja uwierzytelniania. Taką samą sytuację będziemy mieli, gdy hasła będą się różnić. Wtedy również komunikacja między urządzeniami nie będzie możliwa.
R1_cisco(config-if)# *Jun 15 12:34:37.199: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial3/0, changed state to down R1_cisco(config-if)# *Jun 15 12:34:41.595: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial3/0, changed state to up R1_cisco(config-if)# *Jun 15 12:34:52.867: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial3/0, changed state to down
Dlatego też tą samą czynność musimy powtórzyć na routerze R2.
R2_planet(config)#interface serial 3/0 R2_planet(config-if)#ppp authentication chap
Po tych krokach komunikacja pomiędzy routerami powinna działać bez zarzutów.
R1_cisco#ping 10.10.10.2 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 10.10.10.2, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 24/26/28 ms R2_planet#ping 10.10.10.1 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 10.10.10.1, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 20/27/32 ms
Podsumowanie
Powyższy eksperyment potwierdza poprawność działania technologii ppp. Dzięki niej możliwe jest zestawienie poprawnego połączenia pomiędzy urządzeniami różnych producentów, a jednocześnie bezpieczne poprzez uwierzytelnianie użytkownikiem i hasłem podczas komunikacji.