Archivi tag: soho 77

Upgrade di un router Cisco da SOHO 77 a 827

Premessa

Per effettuare l’upgrade del nostro router da SOHO 77 a 827 è necessario che esso soddisfi i requisiti hw richiesti dalla IOS che abbiamo intenzione di installare.

Se ad esempio la IOS implementa diverse feature, come un firewall, la possibilità di gestire il traffico VOIP o di realizzare VPN PPTP, i requisiti in termini di RAM potrebbero superare di gran lunga quelli in dotazione al nostro router. Un ostacolo ancora maggiore potrebbe essere rappresentato dalle dimensioni della memoria flash (solitamente 8 MB), dunque è impossibile installarci sopra una IOS che abbia dimensioni superiori agli 8 MB.

Esistono, ovviamente, dei moduli di espansione per la flash (piuttosto costosi), mentre per la RAM potete utilizzare un banco di SDRAM a 100pin PC100 dalla capacità di 32 MB (per intenderci, quella installata sulle stampanti). Per la precisione anche un banco di RAM a 64 MB va bene, sappiate però che il router riuscirà a leggere (e quindi ad utilizzare) solo 48 MB dei 64 disponibili.

Upgrade della piattaforma

Ma vediamo come far digerire al nostro SOHO 77 una IOS sviluppata per l’827.

Spegniamo il router e riaccendiamolo. Una volta avviata la fase di boot teniamo premuto CTRL+PAUSA, in modo di accedere al rom monitor.

cisco827.jpg

 

Successivamente, il prompt ci apparirà nel modo seguente:

rommon 1 >

Per avere una lista dei comandi disponibili è sufficiente digitare ?:

rommon 1 > ?
alias               set and display aliases command
boot                boot up an external process
break               set/show/clear the breakpoint
confreg             configuration register utility
cont                continue executing a downloaded image
context             display the context of a loaded image
cookie              display contents of cookie PROM in hex
dev                 list the device table
dir                 list files in file system
dis                 display instruction stream
dnld                serial download a program module
frame               print out a selected stack frame
help                monitor builtin command help
history             monitor command history
meminfo             main memory information
repeat              repeat a monitor command
reset               system reset
set                 display the monitor variables
stack               produce a stack trace
sync                write monitor environment to NVRAM
sysret              print out info from last system return
tftpdnld            tftp image download
unalias             unset an alias
unset               unset a monitor variable
xmodem              x/ymodem image download
rommon 2 >

Ora, per fare l’upgrade del router occorre visualizzare il cookie che identifica la piattaforma. Per fare ciò basta digitare il comando cookie:

rommon 2 > cookie
cookie:
01 01 00 01 96 71 b4 61 5b 00 01 00 01 ff 00 00
00 00 00 00 00 00 00 00 4a 41 44 04 33 30 47 39
59 05 01 00 00 00 00 00 00 ff ff ff 60 04 49 11
ec 03 ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff

A noi interessa modificare ESCLUSIVAMENTE il nono byte, portandolo da 5b a 3e. Tutti gli altri byte possono rimanere inalterati.

Per modificare il cookie occorre entrare in modalità privilegiata. E’ dunque necessario digitare il comando priv con relativa password, dove la password può essere calcolata mediante questo tool, dandogli in pasto solo la prima riga del cookie sopra riportato.

Una volta ottenuta la password utilizziamola per accedere alla modalità privilegiata. Riceveremo in output il seguente messaggio:

You now have access to the full set of monitor commands.
Warning: some commands will allow you to destroy your
configuration and/or system images and could render
the machine unbootable.
rommon 4 >

Digitiamo nuovamente il comando cookie per procedere con la modifica di quest’ultimo:

rommon 4 > cookie

View/alter bytes of serial cookie by field --
Input hex byte(s) or: CR -> skip field; ? -> list values
byte  0x00       - version: 01
                          >

Per lasciare inalterati i valori di default ci basterà premere INVIO. Per la precisione dobbiamo modificare solo il nono byte, il cui valore dovrà essere 3e.

Una volta terminata la modifica del cookie, possiamo installare la IOS dell’827 mediante il comando tftpdnld. Prima di utilizzarlo, però, si dovranno settare alcune variabili di sistema che tale comando utilizzerà, ovvero:

IP_ADDRESS

IP_SUBNET_MASK

DEFAULT_GATEWAY

TFTP_SERVER

TFTP_FILE

Ad esempio:

IP_ADDRESS=192.168.1.2

IP_SUBNET_MASK=255.255.255.0

DEFAULT_GATEWAY=192.168.1.1

TFTP_SERVER=192.168.1.1

TFTP_FILE=c827v-y6-mz.121-1.XB.bin

Controlliamo che le variabili siano state impostate correttamente digitando semplicemente set.

Adesso procediamo con il download dell’IOS mediante tftpdnld (come applicativo che funga da server TFTP vi consiglio di utilizzare tftp32):

rommon 10 > tftpdnld

          IP_ADDRESS: 192.168.1.2
      IP_SUBNET_MASK: 255.255.255.0
     DEFAULT_GATEWAY: 192.168.1.1
         TFTP_SERVER: 192.168.1.1
           TFTP_FILE: c827v-y6-mz.121-1.XB.bin

Invoke this command for disaster recovery only.
WARNING: all existing data in all partitions on flash will be lost!
Do you wish to continue? y/n:  [n]:

Digitiamo y e proseguiamo con l’installazione:

Receiving c827v-y6-mz.121-1.XB.bin from 192.168.1.1 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
File reception completed.
Copying file c827v-y6-mz.121-1.XB.bin to flash.

Erasing flash ................................................................
Programming flash ..............................

Digitiamo reset per riavviare il router e finalmente il nostro 827 è (o dovrebbe) essere pronto per l’uso.

A presto.

Errore su Cisco SOHO 77: MALLOCFAIL

Recentemente, esaminando i log del mio SOHO 77 ho notato la presenza dei seguenti messaggi d’errore:

Mar 10 13:27:24 *** 714: 000185: Mar 10 13:27:25.256 UTC: %SYS-2-MALLOCFAIL: Memory allocation of 65536 bytes failed from 0x801381A8, alignment 0
Mar 10 13:27:24 *** 715: Pool: Processor  Free: 233440  Cause: Memory fragmentation
Mar 10 13:27:24 *** 716: Alternate Pool: None  Free: 0  Cause: No Alternate pool
Mar 10 13:27:24 *** 717:
Mar 10 13:27:24 *** 718: -Process= "IP Input", ipl= 0, pid= 34
Mar 10 13:27:24 *** 719: -Traceback= 8013C184 8013E2A8 801381AC 8058F648 80584810 80585568 80248C24 80248F40 80248FF4 80249148 80162010 80165628
soho77-2.jpg

 

Trattandosi di MALLOCFAIL e di Memory Fragmentetion sono quasi sicuro che la poca RAM installata onboard si sia esaurita. Inoltre, poichè sul server ho attivo un demone p2p 24/7, sono altrattanto certo che la causa sia imputabile alla mole di traffico ed alle troppe NAT translations.

Accedo dunque al router, digito un conf t ed imposto dei nuovi timeout per il NAT:

SOHO77(config)# ip nat translation timeout 420
SOHO77(config)# ip nat translation tcp-timeout 120
SOHO77(config)# ip nat translation syn-timeout 120
SOHO77(config)# ip nat translation udp-timeout 120
SOHO77(config)# ip nat translation dns-timeout 120
SOHO77(config)# ip nat translation icmp-timeout 120

Lancio infine un copy run start per rendere permanenti le modifiche appena messe in atto:

SOHO77(config)# copy run start

Ora non resta che controllare che la memoria non stia sempre a tappo (mediante il comando sh memory) e che le translations attive non siano troppe (mediante uno sh ip translations statistics).

A presto.

Sincronizzare data ed ora dei dispositivi di rete mediante un server NTP

L’uso di un buon timeserver rappresenta la prima regola per ottenere dei log affidabili e soprattutto privi di eventuali inconsistenze. Inoltre, grazie ad esso, è possibile sincronizzare la data e l’ora sui vari dispositivi di rete, in modo da non dover necessariamente ricorrere ad un settaggio manuale di tali parametri.

synchronize-internet-time-server.jpg

Vediamo adesso come definire un timeserver su di un router Cisco SOHO 77, su di un firewall Cisco PIX 501 e su una macchina linux.

NTP su Cisco SOHO 77

Entriamo nella modalità di configurazione del nostro router:

SOHO77# conf t

e successivamente digitiamo il comando:

SOHO77(config)# sntp server <IP del server NTP>

In questo caso ho utilizzato come server NTP ntp.ubuntu.com, il cui indirizzo IP è 91.189.94.4

Adesso definiamo la timezone:

SOHO77(config)# clock timezone UTC +1

Come potete notare dal comando precedente, ho utilizzato la timezone UTC+1 poichè attualmente in Italia è in vigore l’ora legale.

Controlliamo che tutto sia andato a buon fine digitando il comando:

SOHO77(config)# sh clock

ed infine salviamo la configurazione:

SOHO77(config)# copy run start

NTP su Linux

Passiamo adesso all’installazione di un timeserver sulla nostra macchina linux.

Per fare ciò è sufficiente digitare:

nightfly@nightbox:~$ sudo apt-get install ntp

Ad installazione completata editiamo il file di configurazione relativo ad ntpd, ovvero il demone che funge da timeserver:

nightfly@nightbox:~$ sudo nano /etc/ntp.conf

Inseriamo i seguenti hostname:

# You do need to talk to an NTP server or two (or three).
 server ntp.ubuntu.com
 server ntp1.inrim.it
 server ntp2.inrim.it

Salviamo il file e riavviamo ntpd:

nightfly@nightbox:~$ sudo service ntp restart

NTP su Cisco PIX 501

Bene, ora non ci resta che configurare un server NTP sul nostro firewall. Per fare ciò occorre seguire questi step:

PIX501# conf t

PIX501(config)# ntp server <IP della nostra macchina linux su cui gira ntpd> source inside

PIX501(config)# clock timezone UTC +1

Inoltre, è necessario definire un’ACL apposita sul firewall in questione in modo da consentire il traffico udp sulla porta 123. Ciò si rende necessario poichè il server NTP interno (presente sulla macchina linux) deve poter ricevere gli aggiornamenti da quello esterno.

PIX501(config)# access-list inbound permit udp host 91.189.94.4 host <IP del server NTP interno> eq 123

Controlliamo che tutto sia andato a buon fine digitando:

PIX501# sh clock

ed anche:

PIX501# sh ntp status

il cui output dovrebbe essere simile al seguente:

Clock is synchronized, stratum 4, reference is <IP del server NTP interno>
 nominal freq is 99.9967 Hz, actual freq is 99.9966 Hz, precision is 2**6
 reference time is d1161f31.f0ef3448 (14:18:41.941 UTC Mon Feb 28 2011)
 clock offset is 3.5382 msec, root delay is 78.16 msec
 root dispersion is 1386.23 msec, peer dispersion is 880.07 msec

ed infine salviamo la configurazione con un write mem.

Adesso i nostri dispositivi dovrebbero essere sincronizzati alla perfezione con i server NTP di riferimento.

A presto.