Dopo una breve (ma necessaria) pausa ho deciso di riprendere la pubblicazione sul blog, trattando argomenti di grande interesse che durante questo lasso di tempo ho potuto approfondire.
Uno di questi riguarda la configurazione di un router Cisco SOHO, nella fattispecie il 77, per il PPPoE (Point-to-Point Protocol over Ethernet). Infatti, da qualche mese, Telecom sta convertendo le proprie linee da ATM a FullIP, costringendo gli utenti ad utilizzare la configurazione PPPoE, l'unica compatibile con il FullIP.
Ma quali sono i vantaggi di una rete FullIP? Beh, uno su tutti è sicuramente la possibilità di ridurre l'overhead, facendo aumentare di conseguenza la banda disponibile all'utente.
Dopo questa breve introduzione passiamo alla configurazione vera a propria.
La prima cosa da fare è munirci di un cavo console (quello che esce in dotazione con il dispositivo - Vedi foto) e collegarlo alla porta com del nostro pc ed alla porta console (di colore blu) del router. A collegamento avvenuto apriamo hyperterminal (Start -> Programmi -> Accessori -> Comunicazioni -> Hyper Terminal) associamo un nome alla connessione (nella finestra di popup che appare dopo l'avvio del programma) e premiamo su "OK". Adesso selezioniamo la porta com del pc alla quale è collegato il cavo (nel mio caso COM1) clickiamo nuovamente su "OK" ed entreremo all'interno del menu di configurazione della porta precedentemente selezionata.
Scegliamo i seguenti parametri:
1) Bit per secondo: 9600
2) Bit di dati: 8
3) Parità: nessuno
4) Bit di stop: 1
5) Controllo del flusso: Hardware
Bene adesso selezioniamo "OK" e ci apparirà una schermata bianca (non vi preoccupate è perfettamente normale). Accendiamo quindi il router (dal pulsante opportuno presente nel retro del dispositivo) e vedremo apparire come per magia l'output relativo alla sequenza di bootstrap. Terminata tale operazione ci apparira il propt:
Router>
Entriamo in modalità enable che ci permette di accedere ai comandi di configurazione del router semplicemente digitando ena (oppure enable, è indifferente):
Router > ena
Adesso il prompt ci apparirà così:
Router#
Entriamo nel menù di configurazione vero e proprio digitando conf t (oppure configure terminal):
Router# conf t
Il prompt ci apparirà nel modo seguente:
Router(config)#
Impostiamo il nome del router utilizzando il comando hostname. Ad esempio:
Router(config)# hostname NightRouter
Il prompt cambierà nuovamente:
NightRouter(config)#
Definiamo password sia per la connessione via console sia per l'accesso tramite telnet, scrivendo rispettivamente:
NightRouter(config)# line console 0
NightRouter(config-line)# password <vostrapass>
NightRouter(config-line)# login
mentre per telnet:
NightRouter(config-line)# line vty 0 4
NightRouter(config-line)# password <vostrapass>
NightRouter(config-line)# login
Bene, adesso configuriamo la password per entrare in modalità enable:
NightRouter(config)# enable password <vostrapass>
NightRouter(config)# enable secret <vostrapass>
NightRouter(config)# service password-encryption
NightRouter(config)# exit
NightRouter#
Il comando service password-encryption serve a calcolare il digest md5 di tutte le password presenti all'interno del file di configurazione, in modo tale che un semplice show run non le mostri in chiaro.
Fatto ciò possiamo dedicarci alla configurazione delle varie interfacce. Cominciamo dall'interfaccia Ethernet:
NightRouter(config)# interface eth0
Associamo indirizzo ip e subnet mask alla stessa:
NightRouter(config-if)# ip address 192.168.1.0 255.255.255.0
"Accendiamo" l'interfaccia:
NightRouter(config-if)# no shutdown
Identifichiamo l'interfaccia interna per il NAT:
NightRouter(config-if)# ip nat inside
Usciamo dalla modalità di configurazione della porta Ethernet
NightRouter(config-if)# exit
NightRouter(config)#
Configuriamo ora l'interfaccia ATM:
NightRouter(config)# interface ATM0
NightRouter(config-if)# pvc 8/35
Dopo aver digitato questo comando, il prompt ci apparirà nel modo seguente:
NightRouter(config-atm-vc)#
Settiamo il protocollo PPPoE:
NightRouter(config-atm-vc)# pppoe-client dial-pool-number 1
Configuriamo il Dialer:
NightRouter(config)# int Dialer0
Poichè spesso si utilizza ip pubblico dinamico assegnato direttamente dall'ISP occorre digitare:
NightRouter(config-if)# ip address negotiated
NB: Se si utilizza ip pubblico statico bisogna associarlo all'interfaccia attraverso il comando ip adcdress <indirizzo> <subnet mask>
Identifichiamo l'interfaccia esterna per il NAT:
NightRouter(config-if)# ip nat outside
Definiamo il protocollo di incapsulamento:
NightRouter(config-if)# encapsulation ppp
Specifichiamo quale dialer pool utilizzare:
NightRouter(config-if)# dialer pool 1
Definiamo adesso i parametri (userid e pass) per collegarsi all'ISP:
NightRouter(config-if)# ppp chap hostname <vostrauserid>
NightRouter(config-if)# ppp chap password <vostrapassword>
Se il vostro provider utilizza il PAP anzichè il CHAP occorre digitare:
NightRouter(config-if)# ppp pap sent-username <vostrauserid> password <vostrapassword>
Ora, poichè si sta utilizzando il protocollo PPPoE, occorre definire la dimensione dell'MTU, che nella fattispecie è pari a 1492 byte (mentre per l'ATM è di 1500 byte).
NightRouter(config-if)# ip mtu 1492
NightRouter(config-if)# exit
NightRouter(config)#
Non abbiamo ancora finito. Poichè il PPPoE supporta una dimensione massima dei segmenti TCP pari a 1452, occorre settare il seguente paramentro nell'ambito dell'interfaccia ethernet0 (altrimenti la navigazione sul Web ne risentirà parecchio):
NightRouter(config)# interface eth0
NightRouter(config-if)# ip tcp adjust-mss 1452
NightRouter(config-if)# exit
NightRouter(config)#
Adesso possiamo configurare i DNS che il router utilizzerà per la risoluzione degli indirizzi:
NightRouter(config)# ip domain-lookup
NightRouter(config)# ip name-server 151.99.125.2
NightRouter(config)# ip name-server 151.99.125.3
Configuriamo il NAT:
NightRouter(config)# ip nat inside source list 1 interface dialer 0 overload
Definiamo una default route:
NightRouter(config)# ip route 0.0.0.0 0.0.0.0 dialer0
Definiamo la policy per l'access list 1:
NightRouter(config)# access-list 1 permit 192.168.1.0 0.0.0.255
NB: tale access list permette a tutti gli host della net locale di uscire verso la rete esterna (Internet). Il paramentro 0.0.0.255 è detto wildcard mask ed effettua un check solo sugli ultimi 4 bit degli indirizzi ip locali.
Adesso non ci resta che bloccare l'accesso Telnet dall'esterno (ovvero da Internet) ed abilitare i log:
NightRouter(config)# line vty 0 4
NightRouter(config-line)# access-class 1 in
NightRouter(config-line)# exit
NightRouter(config)# service timestamps log datetime localtime show-timezone msec
NightRouter(config)# service timestamps debug datetime localtime show-timezone msec
NightRouter(config)# service sequence-numbers
NightRouter(config)# logging queue-limit 10000
NightRouter(config)# logging buffered 1000000 notifications
NightRouter(config)# logging console critical
NightRouter(config)# logging monitor debug
NightRouter(config)# logging history notifications
NightRouter(config)# logging buffered 150000
NightRouter(config)# logging count
NightRouter(config)# logging exception 100000
NB: per visualizzare i log basta lanciare il comando show log (dalla modalità enable).
Ah, quasi dimenticavo, per motivi di sicurezza conviene disabilitare il server HTTP interno:
NightRouter(config)# no ip http
Adesso salviamo quanto fatto fino ad ora digitando:
NightRouter# copy run start
Ecco completata la configurazione del nostro Router. A presto :)
PS: Per utilizzare alcuni programmi, quali ad esempio client p2p, è necessario impostare correttamente il port forwarding. Un esempio di rule è la seguente (porta tcp di aMule):
NightRouter(config)# ip nat inside source static tcp 192.168.1.4 4652 interface dialer0 4652
Dove 192.168.1.4 è l'host su cui è in esecuzione aMule, tcp il protocollo utilizzato e 4652 il numero della porta usata per la connessione al server p2p.