02/01/2012
Script per il backup automatico della configurazione di un router Cisco SOHO 77
Premessa
Un sistemista di rete previdente sa che è di vitale importanza poter contare su di un backup valido delle configurazioni relative ai vari network device. Proprio per questo motivo ho deciso di creare uno script che permettesse di automatizzare tale procedura.
Configurare un server TFTP
Occorre precisare che il backup della configurazione del nostro router Cisco SOHO 77 verrà archiviato su di un server TFTP basato su una distribuzione *buntu.
Ma veniamo al dunque. Per prima cosa installiamo il server TFTP digitando:
nightfly@nightbox:~$ sudo apt-get install tftp tftpd xinetd
A questo punto posizioniamoci sulla directory /etc/xined.d e creiamo il file tftp il cui contenuto dovrà essere:
service tftp
{
protocol = udp
port = 69
socket_type = dgram
wait = yes
user = nobody
server = /usr/sbin/in.tftpd
server_args = /tftpboot
disable = no
}
Come si può notare dalla direttiva server_args = /tftpboot il nostro server salverà la configurazione del router nella directory /tftpboot. Inoltre, poichè tale dir non è presente sulla nostra macchina è necessario crearla digitando:
nightfly@nightbox:/$ mkdir tftpboot
posizioniamoci all'interno di /tftpboot e creiamo il file vuoto router.cfg che conterrà la configurazione del SOHO 77:
nightfly@nightbox:/tftpboot$ sudo touch router.cfg
A questo punto lavoriamo sui permessi della directory appena creata e del suo contenuto:
nightfly@nightbox:/$ sudo chmod 777 -R tftpboot
nightfly@nightbox:/$ sudo chown nobody tftpboot
Riavviamo xinetd digitando:
nightfly@nightbox:/$ sudo /etc/init.d/xinetd stop
nightfly@nightbox:/$ sudo /etc/init.d/xinetd start
Infine, verifichiamo che il nostro server TFTP sia in ascolto digitando:
nightfly@nightbox:/$ sudo nmap -sU localhost
se l'output sarà simile al seguente:
69/udp open|filtered tftp
vuol dire che il server risulta effettivamente in ascolto.
Script per il backup automatico della configurazione relativa al SOHO 77
Prima di mostrarvi lo script, è necessario installare un tool indispensabile al suo funzionamento. Tale tool prende il nome di expect:
nightfly@nightbox:/$ sudo apt-get install expect
Creiamo ora il file backup_conf_soho77 il cui contenuto dovrà essere il seguente:
#!/usr/bin/expect
set password1 "<pass1>"
set password2 "<pass2>" #necessaria nel caso in cui la password per l'enable sia diversa da quella per l'accesso via telnet
spawn telnet <IP del router>
expect "Password:"
send "$password1r"
expect ">"
send "enar"
expect "Password:"
send "$password2r"
expect "#"
send "copy system:running-config tftp://<IP del server TFTP>/router.cfgr"
expect "?"
send "r"
expect "?"
send "r"
expect "#"
send "exitr"
expect eof
NB: prima della r all'interno delle virgolette ci vuole il backslash, in modo da inviare al router un ritorno a capo (nello script non appare in quanto viene automaticamente skippato da myblog per ragioni di sicurezza).
Rendiamo lo script eseguibile mediante il comando:
nightfly@nightbox:~$ sudo chmod +x backup_conf_soho77
e successivamente spostiamolo nella directory /usr/bin:
nightfly@nightbox:~$ sudo mv backup_conf_soho77 /usr/bin
Adesso non ci resta che "schedulare" l'esecuzione dello script. Per fare questo è sufficiente inserire una entry in /etc/crontab:
00 00 * * * root backup_conf_router
In particolare, ogni mezzanotte verrà eseguito il backup della configurazione mediante lo script descritto in precedenza.
Riavviamo cron per rendere effettive le nuove impostazioni:
nightfly@nightbox:~$ sudo /etc/init.d/cron restart
ed abbiamo finito.
A presto.
11:07 Scritto da: nazarenolatella in Networking | Link permanente | Commenti (0) | Segnala | Tag: bash, cisco, soho77, router, linux, conf, tftp, expect, telnet | OKNOtizie |
Facebook
11/07/2011
Configurare un router Cisco SOHO per PPPoE
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.
16:09 Scritto da: nazarenolatella in Networking | Link permanente | Commenti (3) | Segnala | Tag: cisco, soho77, 827, pppoe | OKNOtizie |
Facebook
09/03/2011
SOHO 77 e logging su una linux box
In questo post abbiamo visto come salvare i log di un Cisco PIX 501 su di un apposito server linux. Oggi invece descriverò la procedura per impostare correttamente il logging su di un router Cisco SOHO 77, affinchè le informazioni da esso generate vengano inviate ad una linux box che funge da logserver.
Per prima cosa entriamo in modalità enable e lanciamo un conf t:
soho77# conf t
soho77(config)#
Adesso digitiamo i seguenti comandi:
soho77(config)# logging <indirizzo IP del logserver>
soho77(config)# log facility local2
Nel caso in cui si voglia impostare un certo livello di severity (ad esempio warning), deve essere usato il comando:
soho77(config)# logging trap 4
Infine, lanciamo un copy run start per rendere effettive le modifiche apportate alla configurazione del nostro router:
soho77(config)# copy run start
Linux box
Sulla nostra linux box (ovvero il logserver) occorre fare in modo che il demone rsyslogd intercetti a dovere gli eventi inviati dal router.
Per prima cosa apriamo in scrittura il file 50-default.conf presente nella directory /etc/rsyslog.d ed inseriamo la seguente stringa subito dopo user.* :
local2.4 /var/log/soho77.log
Creiamo il file che dovrà contenere i log del SOHO77:
nightfly@nightbox:/etc/rsyslog.d$ sudo touch soho77.log
Riavviamo quindi il demone rsyslogd:
nightfly@nightbox:/etc/rsyslog.d$ sudo service rsyslog restart
A questo punto non ci resta che definire appositamente la logrotation, in modo da tenere traccia dei log inviati dal router per un giusto lasso di tempo, magari sottoforma di tarball.
Per fare ciò posizioniamoci nella directory /etc/logrotate.d/ e creiamo il file soho77, il cui contenuto dovrà essere:
/var/log/soho77.log {
rotate 7
weekly
compress
missingok
notifempty
}
In particolare, il numero massimo di log che verranno conservati (comprese le tarball) è pari a 7 (rotate 7), ciascun log verrà compresso (compress) ed archiviato settimanalmente (weekly). Inoltre, nel caso in cui il file di log sia mancante non verrà generato alcun messaggio di errore (missingok) e la rotation non verrà attuata quando il file di log risulta vuoto (notifempty).
Fine del post, alla prossima.
10:00 Scritto da: nazarenolatella in Networking | Link permanente | Commenti (0) | Segnala | Tag: router, cisco, soho77, rsyslogd, syslogd, syslog, logrotate | OKNOtizie |
Facebook
















