Enkapsulacja PPP

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.