====== Cisco Router 2600 ======
===== Reset configurazione =====
Router Cisco 2600, versione del sistema operativo (show version):
Cisco Internetwork Operating System Software
IOS (tm) C2600 Software (C2600-IS-M), Version 12.0(7)T, RELEASE SOFTWARE (fc2)
Copyright (c) 1986-1999 by cisco Systems, Inc.
Compiled Tue 07-Dec-99 02:21 by phanguye
Immagine del sistema operativo in flash memory (show flash):
System flash directory:
File Length Name/status
1 7330920 c2600-is-mz.120-7.T.bin
2 25 snmpengineid
[7331076 bytes used, 1057532 available, 8388608 total]
8192K bytes of processor board System flash (Read/Write)
Interfacce presenti (show interfaces):
* Console seriale (9600 8N1)
* Ethernet0/0
* BRI0/0 (ISDN)
* BRI0/0:1 (ISDN)
* BRI0/0:2 (ISDN)
* Serial0/0
* ATM1/0
Per resettare completamente la configurazione del router ai valori di fabbrica e per impostare le password di accesso
(rispettivamente la password per accesso da console, per la modalità enable e per l'accesso via network):
Router>enable
Router#erase startup-config
Router#reload
... (system reboot)
... (initial configuration dialog: no)
Router>enable
Router#copy running-config startup-config
Router>enable
Router#configure terminal
Router(config)#line console 0
Router(config-line)#login
Router(config-line)#password CiscoRut
Router(config-line)#Ctrl-Z
Router>enable
Router#configure terminal
Router(config)#enable secret CiscoRut
Router(config)#Ctrl-Z
Router>enable
Router#configure terminal
Router(config)#line vty 0 4
Router(config-line)#login
Router(config-line)#password CiSPO
Router(config-line)#^Z
===== Bootstrap automatico =====
Durante il boot il router si può bloccare su //initial configuration dialog//, ignorando la startup-config.
Ciò dipende dal bit 6 (0x40) del configuration register, se è impostato ad 1 il router ignora la startup-config al boot. Per vedere il valore corrente del configuration register:
Router>show version
...
Configuration register is 0x2142
Per modificare il valore:
Router>enable
Router#configure terminal
Router(config)#config-register 0x2102
Oppure se si è interrotta la sequenza di boot dalla console con un Ctrl-BRAK e si è arrivati al prompt del ROM monitor:
rommon 1 >confreg 0x2102
rommon 2 >reset
===== enable password =====
Vedere anche il paragrafo [[#gestione_password|Gestione password]].
Per impostare la password di //enable// (viene chiesta quando si usa tale comando per ottenere i permessi di amministratore):
enable secret MySecret
Usare invece questo comando **solo su vecchie versioni del S.O.** che non supportano la //secret//:
enable password MySecret
Se il S.O. supporta i due tipi di password e se sono impostate entrambe, la //secret// ha la precedenza e viene verificata solo quella.
Le due password impostate si vedono nello show running-config:
enable secret 5 $1$v4W3$P5zy5FOyWvJEdcwl3WqW0.
enable password 7 13151E021B03
Il 5 significa che la password è criptata (oneway hash), invece il 7 significa che la password è //hidden// (cioè offuscata).
===== Configurazione TCP/IP =====
==== Configurazione dell'interfaccia Ethernet ====
Mostra la configurazione attuale della scheda Ethernet, abilita il routing ip, assegna un indirizzo ip e attiva l'interfaccia. Salva la configurazione in NVRAM.
Router>enable
Router#show interfaces
Router#configure terminal
Router(config)#ip routing
Router(config)#interface ethernet 0/0
Router(config-if)#ip address 192.168.2.7 255.255.255.0
Router(config-if)#no shutdown
Router(config-if)#exit
Router(config)#^Z
Router#write memory
==== Configurazione di un secondo IP address su Ethernet ====
Mostra la configurazione, abilita un numero di ip scondario su una interfaccia e poi lo toglie.
Router>enable
Router#show running-confg
Router>enable
Router#configure terminal
Router(config)#interface ethernet 0/0
Router(config-if)#ip address 10.1.1.1 255.0.0.0 secondary
Router(config-if)#^Z
Router#write memory
Router>enable
Router#configure terminal
Router(config)#interface ethernet 0/0
Router(config-if)#no ip address 10.1.1.1 255.0.0.0 secondary
Router(config-if)#^Z
Router#write memory
==== Configurazione del default gateway ====
Mostra la configurazione attuale del default gateway, attiva il routing ip e aggiunge un default gateway. Infine lo toglie.
**ATTENZIONE**: il comando //ip default-gateway 192.168.2.2// non ottiene lo scopo desiderato. Cisco intende per dafault-gateway quello utilizzato quando non è attivo il routing ip, ma è in funzione il bridging. In quel caso per vedere il default gateway in uso "show ip redirects".
Router>show ip route
Router>enable
Router#configure terminal
Router(config)#ip routing
Router(config)#ip route 0.0.0.0 0.0.0.0 192.168.2.2 permanent
Router(config)#^Z
Router#write memory
Router>enable
Router#configure terminal
Router(config)#no ip route 0.0.0.0 0.0.0.0 192.168.2.2 permanent
Router(config)#^Z
Router#write memory
==== Configurazione di una route statica ====
Mostra le route statiche definite, ne aggiunge una e poi la toglie.
Routeri>show ip route
Router>enable
Router#show running-config | include ip route
Router>enable
Router#configure terminal
Router(config)#ip route 172.16.0.0 255.255.0.0 192.168.2.2
Router(config)#^Z
Router#write memory
Router>enable
Router#configure terminal
Router(config)#no ip route 172.16.0.0 255.255.0.0 192.168.2.2
Router(config)#^Z
Router#write memory
==== Configurazione del DNS ====
Mostra la configurazione attuale del server DNS, imposta un server DNS e lo rimuove.
Router>enable
Router#show running-config | include name-server
Router>enable
Router#configure terminal
Router(config)#ip name-server 192.168.2.2
Router(config)#^Z
Router#write memory
Router>enable
Router#configure terminal
Router(config)#no ip name-server
Router(config)#^Z
Router#write memory
===== Configurazione del NAT (SNAT) =====
==== NAT statico (NAT uno-a-uno, usato di rado) ====
**NOTA**: vedere il classico SNAT più avanti.
Configura il **NAT statico** di un singolo host interno (A.B.C.D) con un singolo indirizzo IP pubblico (E.F.G.H).
L'interfaccia verso la rete interna è **Ethernet0/0** e quella verso la rete esterna e' **BRI0/0**.
Router#configure terminal
Router(config)#interface Ethernet 0/0
Router(config-if)#ip nat inside
Router(config-if)#exit
Router(config)#interface BRI 0/0
Router(config-if)#ip nat outside
Router(config-if)#exit
Router(config)#ip nat inside source static A.B.C.D E.F.G.H
Router(config)#^Z
Router#show running-config | include ip nat
Invece dell'IP pubblico ''E.F.G.H'' è possibile specificare il nome dell'interfaccia (ad esempio se è dinamico), questo esempio è per un'interfaccia ppp su ATM, denominata ''Dialer1'':
Router(config)#ip nat inside source static A.B.C.D interface Dialer1
Appena si imposta questa configurazione l'accesso telnet dall'interfaccia esterna viene interrotto, in quanto **tutto il traffico viene dirottato sull'host interno**. Quindi **non è necessario attivare il port forward** verso l'host interno.
Per rimuovere la configurazione:
Router#configure terminal
Router(config)#no ip nat inside source static A.B.C.D E.F.G.H.
Router(config)#interface Ethernet 0/0
Router(config-if)#no ip nat inside
Router(config-if)#exit
Router(config)#interface BRI 0/0
Router(config-if)#no ip nat outside
Router(config-if)#exit
Router(config)#^Z
==== NAT dinamico (SNAT classico) ====
Configura il **NAT dinamico** degli host interni (**A.B.C.0/24**) usando un pool di indirizzi esterni. Il pool è costituito da un singolo indirizzo (**E.F.G.H/32**), cioè inizio e fine pool coincidono, pertanto è necessario l'overload dell'inside global address E.F.G.H. L'interfaccia verso la rete interna è Ethernet 0/0 e quella verso la rete esterna e' BRI0/0.
Se il pool di indirizzi esterni è abbastanza ampio si può evitare l'overload (si omette l'opzione overload). Potranno
essere nattati solo tanti host quanti sono gli indirizzi esterni del pool.
Router#configure terminal
Router(config)#ip nat pool NAT-POOL E.F.G.H E.F.G.H prefix-length 1
Router(config)#access-list 1 permit A.B.C.0 0.0.0.255
Router(config)#ip nat inside source list 1 pool NAT-POOL overload
Router(config)#interface Ethernet 0/0
Router(config-if)#ip nat inside
Router(config-if)#exit
Router(config)#interface BRI 0/0
Router(config-if)#ip nat outside
Router(config-if)#exit
Router(config)#^Z
Router#show running-config | include ip nat
Nel comando **''ip nat pool''** invece di ''prefix-length'' si può usare ''netmask'', che però va intesa alla rovescia, cioè per indicare un solo indirizzo IP si mette 0.0.0.0.
Nel caso in cui l'IP pubblico sia dinamico, si può utilizzare il **nome dell'interfaccia** invece che definire un pool di indirizzi IP:
access-list 1 permit 10.11.12.0 0.0.0.255
ip nat inside source list 1 interface Dialer1 overload
Per rimuovere la configurazione:
Router#configure terminal
Router(config)#no ip nat pool NAT-POOL E.F.G.H E.F.G.H netmask 255.255.255.252
Router(config)#no access-list 1 permit A.B.C.0 0.0.0.255
Router(config)#no ip nat inside source list 1 pool NAT-POOL overload
Router(config)#interface Ethernet 0/0
Router(config-if)#no ip nat inside
Router(config-if)#exit
Router(config)#interface BRI 0/0
Router(config-if)#no ip nat outside
Router(config-if)#exit
Router(config)#^Z
==== Port forward (DNAT) ====
**Ridirezione della porta** 23 TCP dall'indirizzo esterno A.B.C.D verso la porta 23 dell'indirizzo interno E.F.G.H. L'interfaccia interna è **Ethernet 0/0** e quella esterna e' **BRI 0/0**.
Router>enable
Router#configure terminal
Router(config)#interface Ethernet 0/0
Router(config-if)#ip nat inside
Router(config-if)#exit
Router(config)#interface BRI 0/0
Router(config-if)#ip nat outside
Router(config-if)#exit
Router(config)#ip nat inside source static tcp E.F.G.H 23 A.B.C.D 23
Router(config)#^Z
Al posto dell'indirizzo IP esterno è possibile usare il nome dell'interfaccia (ad esempio per una punto-punto con IP dinamico):
ip nat inside source static tcp 192.168.2.253 80 interface Dialer2 8443
==== Doppio PVC DSL con destination routing e NAT ====
Scenario: router ADSL con **due canali PVC** (connessione PPP), il primo usato come rotta predefinita, senza NAT. Il secondo utilizzato solo per raggiungere uno specifico host (server VoIP), ma con SNAT usando l'indirizzo punto-punto; su questo PVC infatti solo l'indirizzo punto-punto è pubblicamente raggiungibile.
Anzitutto la configurazione delle due interfacce dial-up:
interface Dialer1
ip address negotiated
ip virtual-reassembly
encapsulation ppp
dialer pool 1
no cdp enable
no ppp chap wait
ppp pap sent-username MyLogin password 0 MySecret
no ppp pap wait
!
interface Dialer2
description BANDA PER VOIP
ip address negotiated
ip nat outside
ip virtual-reassembly
encapsulation ppp
dialer pool 2
no cdp enable
no ppp chap wait
ppp pap sent-username MyLogin2 password 0 MySecret2
!
Con le seguenti impostazioni si definisce il NAT quando la **destinazione** è il server VoIP (213.251.147.16) e l'**interfaccia d'uscita** è **Dialer2**
ip nat inside source route-map VOIP-MAP interface Dialer2 overload
access-list 100 permit ip any host 213.251.147.16
route-map VOIP-MAP permit 10
match ip address 100
match interface Dialer2
!
Infine con una semplice **regola di routing** si instrada opportunamente il traffico verso il server VoIP:
ip route 213.251.147.16 255.255.255.255 Dialer2
===== Rimozione regola NAT in uso =====
Non è possibile rimuovere una regola di NAT se questa è stata usata di recente, il router risponde **Static entry in use, cannot remove**. Si deve ripulire la lista delle //translations// in uso:
router# confgure terminal
router(config)# no ip nat inside source static tcp 192.168.1.2 1196 interface Dialer1 1196
%Static entry in use, cannot remove
router(config)# exit
router# show ip nat translations
Pro Inside global Inside local Outside local Outside global
...
tcp 185.21.72.66:1196 192.168.1.2:1196 213.182.68.98:35942 213.182.68.98:35942
...
router# clear ip nat translation forced
router# confgure terminal
router(config)# no ip nat inside source static tcp 192.168.1.2 1196 interface Dialer1 1196
router(config)# exit
router# write memory
Dovrebbe essere possibile rimuovere selettivamente solo le regole interessate, vedere l'help del comando **clear ip nat**.
===== Aggiornamento Sistema Operativo IOS =====
Installare sul PC un server TFTP e abilitarlo in scrittura (la document root in Debian è **''/srv/tftp/''**):
apt-get install tftpd-hpa
Per abilitare il server TFTP in scrittura mettere in **''/etc/default/tftpd-hpa''**:
TFTP_OPTIONS="--secure --create"
Il server sta in ascolto sulla porta **UDP/69**, ma il trasferimento di dati avviene su porte effimere. Bisogna essere sulla stessa rete oppure il firewall deve avere il connection tracking TFTP abilitato:
10:55:39.494731 IP 77.239.141.26.55143 > 10.0.1.2.69: 31 WRQ "c2600-i-mz.122-12b.bin" octet
...
11:08:09.448816 IP 10.0.1.2.48939 > 77.239.141.26.55143: UDP, length 4
11:08:09.495166 IP 77.239.141.26.55143 > 10.0.1.2.48939: UDP, length 516
Salvare l'immagine esistente nel router:
Router#show flash:
System flash directory:
File Length Name/status
1 5427564 c2600-i-mz.122-12b.bin
2 749 cisco2600_nat_config
[5428444 bytes used, 27601700 available, 33030144 total]
32768K bytes of processor board System flash (Read/Write)
router#copy flash:c2600-i-mz.122-12b.bin tftp://62.48.51.8
Con la vecchia versione 11.3 la sintassi è leggermente diversa:
Router#copy flash tftp
System flash directory:
File Length Name/status
1 3119712 c2600-i-mz.113-10.T
[3119776 bytes used, 5268832 available, 8388608 total]
Address or name of remote host [255.255.255.255]? 192.168.10.46
Source file name? c2600-i-mz.113-10.T
Destination file name [c2600-i-mz.113-10.T]?
Verifying checksum for 'c2600-i-mz.113-10.T' (file # 1)... OK
Copy 'c2600-i-mz.113-10.T' from Flash to server
as 'c2600-i-mz.113-10.T'? [yes/no]yes
Quindi si fa spazio nella memoria flash per caricare la nuova versione:
Router#erase flash
Infine è possibile caricare dal server TFTP la nuova immagine nella flash:
Router#copy tftp flash
System flash directory:
No files in System flash
[0 bytes used, 8388608 available, 8388608 total]
Address or name of remote host [192.168.7.46]?
Source file name? c2600-i-mz.122-12b.bin
Destination file name [c2600-i-mz.122-12b.bin]?
Accessing file 'c2600-i-mz.122-12b.bin' on 192.168.7.46...
Loading c2600-i-mz.122-12b.bin from 192.168.7.46 (via Ethernet0/0): ! [OK]
Erase flash device before writing? [confirm]
Copy 'c2600-i-mz.122-12b.bin' from server
as 'c2600-i-mz.122-12b.bin' into Flash WITH erase? [yes/no]
Al reboot successivo il router parte con la prima immagine IOS che trova.
===== Gestione password =====
==== Password su console ====
line console 0
login
password MySecret
==== Password su accesso telnet ====
Con questa impostazione si attiva la richiesta di password per gli accessi telnet, si entra **senza privilegi di enable**:
line vty 0 4
access-class 23 in
password MySecret
login
transport input telnet ssh
La password di enable è impostata con:
enable secret MyEnableSecret
Con questa impostazione viene chiesto un **nome di login**, se i privilegi sono giusti si accede direttamente come **enable**, è richiesta la **password associata** al login, che va impostata a parte:
line vty 0 4
access-class 23 in
privilege level 15
login local
transport input telnet ssh
username admin privilege 15 secret MyEnableSecret