Introduzione
PPP è uno dei protocolli più utilizzati nelle connessioni di tipo WAN poiché possiede diverse caratteristiche che lo rendono uno strumento semplice e versatile. Possiamo utilizzare questo protocollo sulle interfacce fisiche sia di tipo seriale (Sincrone, Asincrone, HSSI) che ISDN.
Nel PPP distinguiamo tre componenti principali:
- LCP – Link Control Protocol, componente utilizzato per stabilire, configurare e testare la connessione a livello data-link;
- NCP – Network Control Protocol, famiglia di protocolli utilizzata per stabilire e configurare uno o più protocolli di rete;
- Multiple protocols – Un metodo per il trasporto di più protocolli di rete sullo stesso link fisico.
Tramite LCP è possibile configurare le seguenti opzioni:
- Autenticazione – Il chiamante deve fornire i dati di autenticazione che lo autorizzano ad effettuare il collegamento. Le due alternative sono PAP e CHAP
- Compressione – Questa opzione permette di aumentare l’effettivo throughput sulla connessione PPP, il protocollo stesso decomprimerà il frame alla destinazione. Due sistemi di compressione disponibili nei router Cisco sono Stacker e Predictor
- Controllo Errore – Grazie all’utilizzo delle opzioni Quality e Magic Number il meccanismo di rilevamento dell’errore verifica la qualità e l’affidabilità del collegamento.
- Richiamata (Callback) – Per aumentare la sicurezza è possibile utilizzare la funzione di callback. Il client effettua la chiamata iniziale, chiedendo di essere richiamato. Il router risponde alla chiamata iniziale effettuando a sua volta una chiamata al client, in base alla istruzioni della sua configurazione.
Sessione
Al fine di instaurare una comunicazione in un collegamento punto-punto, PPP attraversa quattro fasi distinte:
- Il nodo di origine del collegamento PPP, invia dei frames LCP per configurare e stabilire il collegamento a livello data-link.
- Il collegamento viene testato per determinare se la qualità è sufficiente per sostenere i protocolli di rete. Ricordiamo che questa fase è opzionale.
- Il nodo di origine invia dei frames NCP per scegliere e configurare i protocolli di rete da utilizzare (IP, IPX, AppleTalk …)
- Il collegamento rimane configurato per le comunicazioni fino a quando i frames LCP o NCP lo chiudono oppure interviene un evento esterno.
Ci sono tre classi di frames LCP:
- Link-estabilishment, usati per stabilire e configurare il collegamento;
- Link-termination, usati per terminare il collegamento;
- Link-maintenance, usati per gestire il collegamento ed effettuare il debug.
Autenticazione
In una sessione PPP, la fase di autenticazione è opzionale. Se utilizzata, questa fase precede quella di configurazione del protocollo di rete. Le opzioni disponibili per l’autenticazione sono PAP e CHAP, il secondo è preferibile in termini di sicurezza.
PAP utilizza un metodo semplice di autenticazione. Dopo che si è stabilito il link fra i due nodi, il router che deve autenticarsi invia in chiaro una coppia di dati composta da username e password, il sito remoto verifica la correttezza dei dati e replica con un messaggio di tipo Accept (se i dati sono corretti) o Reject (errore nell’autenticazione e caduta del link) concludendo un processo indicato come 2-Way Handshake.
CHAP utilizza un metodo più robusto per l’autenticazione. Stabilito il link fra i due nodi, il router locale invia un messaggio di “challenge” al nodo remoto. Questi risponde con un valore calcolato tramite un algoritmo non reversibile (tipicamente l’MD5 Message Digest) basato sulla password ed il messaggio di “challenge”. Il router locale verifica se il valore ricevuto è uguale a quello atteso. In caso positivo l’autenticazione è accettata, viceversa la connessione viene terminata immediatamente. Altra particolarità consiste nel fatto che questo controllo di autenticazione a differenza del PAP, viene eseguito anche durante la connessione e non solo nella fase iniziale.
Di seguito è riportato un semplice esempio che utilizza il protocollo ppp e l’autenticazione chap.
Laboratorio
Per realizzare il laboratorio in figura ho utilizzato:
- 2 Router Cisco con interfaccia seriale
- 2 Cavi V35 -DTE
- 2 Modem DCE-3 Teleco TD 604T
- 2 Cavi V35 -DTE
- 1 Cavo RJ11 (modificato per il collegamento dei due modem DCE-3)
Configurazione per il router tux
Router>enable Router#configure terminal Enter configuration commands, one per line. End with CNTL/Z. Router(config)#hostname tux tux(config)#service password-encryption tux(config)#no ip domain lookup tux(config)#enable secret class tux(config)#username net password mylink tux(config)#interface serial 0 tux(config-if)#ip address 172.16.0.1 255.255.255.252 tux(config-if)#encapsulation ppp tux(config-if)#ppp authentication chap tux(config-if)#no shutdown tux(config-if)#exit tux(config)#line console 0 tux(config-line)#logging synchronous tux(config-line)#password ccisco tux(config-line)#login tux(config-line)#line vty 0 4 tux(config-line)#password lcisco tux(config-line)#login tux(config-line)#line aux 0 tux(config-line)#password acisco tux(config-line)#login
Configurazione per il router net
Router>enable Router#configure terminal Enter configuration commands, one per line. End with CNTL/Z. Router(config)#hostname net net(config)#service password-encryption net(config)#no ip domain lookup net(config)#enable secret class net(config)#username tux password mylink net(config)#interface serial 0 net(config-if)#ip address 172.16.0.2 255.255.255.252 net(config-if)#encapsulation ppp net(config-if)#ppp authentication chap net(config-if)#no shutdown net(config-if)#exit net(config)#line console 0 net(config-line)#logging synchronous net(config-line)#password ccisco net(config-line)#login net(config-line)#line vty 0 4 net(config-line)#password lcisco net(config-line)#login net(config-line)#line aux 0 net(config-line)#password acisco net(config-line)#login
N.B. Possiamo utilizzare un cavo V35-DTE ed uno V35-DCE in sostituzione dei due modem DCE-3 (o direttamente un cavo cross), in questo caso una delle due seriali va configurata come DCE aggiungendo questi comandi:
Router#configure terminal Router(config)#interface serial 0 Router(config)#clock rate 64000