Archivi tag: cisco 877w

Configurare una VPN IPsec site-to-site tra un router Cisco 2811 ed un router Cisco 877W

Affinchè si possa realizzare un canale di comunicazione “sicuro” tra due o più filiali, sfruttando, ad esempio, una normale linea ADSL, è necessario affidarsi ad una tecnologia VPN che supporti tale funzionalità. Lo standard “de facto” per i collegamenti Site-to-Site è rappresentato dal protocollo IPsec.

Adesso vedremo come configurare tale tipologia di VPN, utilizzando come piattaforme hardware un router Cisco 2811 (main office) ed un router Cisco 877W (branch office).

Lo schema di rete si può riassumere come segue:

vpn-ipsecConfigurazione del router Cisco 2811 (Main Office)

La prima cosa da fare è creare la policy ISAKMP per gestire le Security Associations (in gergo dette semplicemente SA), ovvero le due entità che vogliono instaurare il tunnel VPN.

R1(config)crypto isakmp policy 1
R1(config-isakmp)# encr 3des
R1(config-isakmp)# hash md5
R1(config-isakmp)# authentication pre-share
R1(config-isakmp)# group 2
R1(config-isakmp)# lifetime 86400

In particolare, sto definendo alcuni parametri relativi alla fase 1 IKE (in realtà ISAKMP è solo uno dei 3 protocolli definiti nella suite IKE), ovvero:

1) il tipo di cifratura simmetrica da utilizzare (3des);

2) l’algoritmo di hashing per l’HMAC (md5), utilizzato per garantire l’integrità dei pacchetti scambiati tra le parti;

3) il tipo di autentica (tramite chiave condivisa – pre-shared);

4) il gruppo Diffie-Helman da utilizzare (l’algoritmo in questione definisce un metodo “sicuro” per lo scambio delle chiavi tra le parti);

5) la durata del tunnel IPSec (in secondi).

Ora si può procedere con la definizione della chiave condivisa:

R1(config)# crypto isakmp key cisco address 2.2.2.3

A questo punto possiamo configurare la fase 2 IKE, impostando l’apposito transform set:

R1(config)# crypto ipsec transform-set TS esp-3des esp-md5-hmac

Esso si occupa di cifrare i dati trasmessi tra le due parti dopo l’instaurazione del tunnel.

Definiamo adesso l’ACL che si occuperà di indentificare il traffico VPN (detto, in gergo, interesting traffic):

R1(config)# ip access-list extended VPN-TRAFFIC
R1(config-ext-nacl)# permit ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255

A questo punto sarà possibile definire la crypto map:

R1(config)# crypto map CMAP 6 ipsec-isakmp 
R1(config-crypto-map)# set peer 2.2.2.3
R1(config-crypto-map)# set transform-set TS
R1(config-crypto-map)# match address VPN-TRAFFIC

Inoltre, dobbiamo evitare che il traffico LAN-to-LAN venga nattato. E’ possibile fare ciò definendo un’ACL ad hoc:

R1(config)# access-list 100 remark --NO-NAT--
R1(config)# access-list 100 deny ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255
R1(config)# access-list 100 permit ip 192.168.1.0 0.0.0.255 any
R1(config)# access-list 100 remark

associandola, successivamente, al processo di NAT vero e proprio:

R1(config)# ip nat inside source list 100 interface fastethernet0/0 overload

Come ultimo step dobbiamo associare la crypto MAP precedentemente definita all’interfaccia fa0/0 (Internet):

R1(config)# int fa0/0
R1(config-if)# crypto map CMAP

Configurazione del router Cisco 877W (Branch Office)

La configurazione del Branch Office è del tutto speculare a quella del Main office. L’unica stostaziale differenza sta nell’interfaccia esposta ad Internet: per il main office è la fa0/0 mentre per il branch office è la dia1 (protocollo PPPoE).

IKE fase 1:

R2(config)#  crypto isakmp policy 1
R2(config-isakmp)# encr 3des
R2(config-isakmp)# hash md5
R2(config-isakmp)# authentication pre-share
R2(config-isakmp)# group 2
R2(config-isakmp)# lifetime 86400

Pre-shared key:

R2(config)# crypto isakmp key cisco address 2.2.2.2

IKE fase 2 (transform set):

R2(config)# crypto ipsec transform-set TS esp-3des esp-md5-hmac

 ACL per il traffico LAN-to-LAN:

R2(config)# ip access-list extended VPN-TRAFFIC
R2(config-ext-nacl)# permit ip 192.168.2.0 0.0.0.255 192.168.1.0 0.0.0.255

 Crypto map:

R2(config)# crypto map CMAP 6 ipsec-isakmp 
R2(config-crypto-map)# set peer 2.2.2.2
R2(config-crypto-map)# set transform-set TS
R2(config-crypto-map)# match address VPN-TRAFFIC

No-NAT:

R2(config)# access-list 100 remark --NO-NAT--
R2(config)# access-list 100 deny ip 192.168.2.0 0.0.0.255 192.168.1.0 0.0.0.255
R2(config)# access-list 100 permit ip 192.168.2.0 0.0.0.255 any
R2(config)# access-list 100 remark
R2(config)# ip nat inside source list 100 int dia1 overload

Binding crypto map/interfaccia:

R2(config)# int dia1
R2(config-if)# crypto map CMAP
R2(config-if)# crypto ipsec df-bit clear

L’ultimo comando relativo alla configurazione dell’interfaccia dia1 ci mette al riparo da eventuali problemi dovuti ad un MTU mismatch (ad esempio, il router Cisco 2811 utilizza una MTU pari a 1500 byte mentre il router Cisco 877W, essendo configurato per un accesso ad Internet di tipo PPPoE, usa una MTU pari a 1492 byte).

Test e troubleshooting

Per testare l’effettivo funzionamento del tunnel VPN appena configurato è sufficiente, in primo luogo, lanciare un semplice ping verso la LAN del peer, avendo cura di definire come interfaccia sorgente quella esposta sulla rete privata:

R1(config)ping 192.168.2.1 source fa0/1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.2.1, timeout is 2 seconds:
Packet sent with a source address of 192.168.1.1
.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 41/44/46 m

Il primo ping ha restituito un timeout poichè il tunnel VPN viene tirato su solo on-demand, ovvero dopo aver appurato la presenza di traffico LAN-to-LAN, per poi rimanere attivo fino al timeout definito nella policy ISAKMP (86400 secondi).

Altri comandi utili per verificare lo stato del tunnel VPN sono i seguenti:

show crypto session
show crypto isakmp sa
show crypto ipsec sa
debug crypto isakmp
debug crypto ipsec

E’ tutto. Alla prossima.

Cisco 877W: configurare una porta ethernet come WAN

Alcuni provider esteri prevedono l’accesso ad Internet tramite connessione diretta (via cavo UTP) tra il router del cliente (CPE – Customer Premise Equipment) ed un loro router di zona. Ciò permette di evitare completamente la vecchia linea POTS (detta anche PSTN), garantendo un servizio sicuramente migliore.

Per quanto riguarda il router Cisco 877W, occorre precisare che con l’IOS fornita di default (ovvero la 870-advsecurityk9-mz.124-24.T4.bin), l’unico modo per connettersi al service provider è mediante l’interfaccia ATM, utilizzando quindi il doppino telefonico. Per questa ragione, affinchè si possa configurare una porta ethernet WAN dedicata, è necessario, in primo luogo, aggiornare l’IOS del dispositivo in oggetto, sostituendo la  870-advsecurityk9-mz.124-24.T4.bin con la c870-advipservicesk9-mz.124-24.T6.bin.

cisco 877

Preparazione del router

Per prima cosa è necessario assegnare al router un indirizzo IP che possa contattare il server SCP (su cui copiare la vecchia IOS come backup e da cui scaricare quella nuova).

Router>
Router#
Router(config)# int vlan 1
Router(config-if)# ip address 192.168.1.9 255.255.255.0
Router(config-if)# end
Router# copy run start

Facciamo un ping al server SCP (per sincerarci che sia effettivamente raggiungibile):

Router# ping 192.168.1.8

Upgrade dell’IOS 

Poichè l’IOS (ovvero il sistema operativo del router) viene salvata all’interno della memoria flash (che comunque è piuttosto limitata in termini di spazio), occorre dapprima cancellare quella di default, rimuovendo anche tutti i file con estensione *.tar ed il file home.shtml (che concorrono a formare l’SDM).

Per prima cosa facciamo un backup della vecchia IOS (nel caso in cui l’operazione di upgrade dovesse non riuscire):

Router# copy flash: scp://user@192.168.1.8:870-advsecurityk9-mz.124-24.T4.bin

cancelliamo i file precedentemente elencati:

Router# delete flash:c870-advsecurityk9-mz.124-24.T4.bin
Router# delete flash:home.tar
Router# delete flash:common.tar
Router# delete flash:sdm.tar
Router# delete flash:home.shtml

e salviamo la nuova immagine nella memoria flash:

Router# copy scp://user@192.168.1.8:c870-advipservicesk9-mz.124-24.T6.bin flash:

A questo punto dobbiamo definire la nuova immagine da caricare al boot:

Router# conf t
Router(config)# boot system flash:c870-advipservicesk9-mz.124-24.T6.bin
Router(config)# end
Router# copy run start
Router# reload

Dopo il riavvio del router dobbiamo appurare che la nuova IOS sia stata effettivamente caricata. Per fare ciò è sufficiente lanciare il comando:

Router# sh ver

Bene, ora che il dispositivo in questione è stato aggiornato correttamente, possiamo procedere con la configurazione dello stesso.

Configurazione

Per prima cosa cancelliamo la nvram (dove è stata salvata la configurazione precedente):

Router# erase nvram:

e successivamente passiamo alla configurazione vera e propria:

no service pad
service timestamps debug datetime msec
service timestamps log datetime msec
service password-encryption
!
hostname RouterADSL
!
boot-start-marker
boot-end-marker
!
logging exception 100000
logging count
logging message-counter syslog
logging queue-limit 10000
logging buffered 150000 notifications
logging console informational
enable secret <secret>
enable password <password>
!
no aaa new-model
clock timezone UTC 2
!
!
dot11 syslog
ip source-route
!
!
ip dhcp excluded-address 192.168.1.1 192.168.1.127
!
ip dhcp pool LAN
   network 192.168.1.0 255.255.255.0
   default-router 192.168.1.1
   dns-server 8.8.8.8 8.8.4.4
   domain-name uniqro.local
!
!
ip cef
ip name-server 8.8.8.8
ip name-server 8.8.4.4
!
multilink bundle-name authenticated
!
vpdn enable
!
vpdn-group 1
 accept-dialin
  protocol pptp
  virtual-template 1

!
!
!
no spanning-tree vlan 2
username admin password <password>
!
!
!
archive
 log config
  hidekeys
!
!
!
!
interface ATM0
 no ip address
 shutdown
 no atm ilmi-keepalive
!
interface FastEthernet0
 switchport access vlan 2
 no cdp enable
!
interface FastEthernet1
!
interface FastEthernet2
!
interface FastEthernet3
!
interface Virtual-Template1
 ip unnumbered Vlan1
 ip nat inside
 ip virtual-reassembly
 peer default ip address pool PPTP-Pool
 no keepalive
 ppp encrypt mppe 128
 ppp authentication ms-chap ms-chap-v2
!
interface Dot11Radio0
 no ip address
 shutdown
 speed basic-1.0 basic-2.0 basic-5.5 6.0 9.0 basic-11.0 12.0 18.0 24.0 36.0 48.0 54.0
 station-role root
!
interface Vlan1
 ip address 192.168.1.1 255.255.255.0
 ip nat inside
 ip tcp adjust-mss 1452
!
interface Vlan2
 no ip address
 pppoe enable group global
 pppoe-client dial-pool-number 1
!
interface Dialer1
 ip address negotiated
 ip mtu 1492
 ip virtual-reassembly
 ip nat outside
 encapsulation ppp
 ip tcp adjust-mss 1452
 dialer pool 1
 dialer-group 1
 no cdp enable
 ppp authentication chap pap callin
 ppp chap hostname <username>
 ppp chap password <password>
 ppp pap sent-username <username> password <password>
 ppp ipcp dns request accept
 ppp ipcp route default
 ppp ipcp address accept
!
ip local pool PPTP-Pool 192.168.1.244 192.168.1.254
ip forward-protocol nd
no ip http server
no ip http secure-server
ip route 0.0.0.0 0.0.0.0 Dia1
!
!
!
!
!
ip nat inside source list 1 interface Dialer1 overload
!
access-list 1 permit 192.168.1.0 0.0.0.255
dialer-list 1 protocol ip permit
!
control-plane
!
!
line con 0
 password <vostrapass>
 login
 no modem enable
line aux 0
line vty 0 4
 access-class 1 in
 password <vostrapass>
 login
!
scheduler max-task-time 5000
sntp server 193.204.114.232
!

Da notare che la suddetta configurazione comprende la timezone (clock timezone UTC 2), un server SNTP tramite il quale aggiornare la data e l’ora del router (sntp server 193.204.114.232), i parametri per il logging, la configurazione del server DHCP embedded e la configurazione della VPN PPTP (vedi questo post per approfondire).

Occorre soffermarsi, inoltre, sulla configurazione della VLAN 2. Infatti, essa ci permette di fare in modo che una delle porte ethernet del router possa essere configurata come WAN (ed è il reale motivo per cui abbiamo aggiornato l’IOS, poichè quella di default non consentiva di configurare VLAN multipe). Il protocollo utilizzato per la connessione all’ISP è il PPPoE ed i parametri associati alla VLAN 2 sono i seguenti:

interface Vlan2
 no ip address
 pppoe enable group global
 pppoe-client dial-pool-number 1

Nella fattispecie, la suddetta VLAN viene messa in binding con l’interfaccia virtuale (spoofed) Dialer 1, nella quale bisogna configurare i seguenti parametri:

interface Dialer1
 ip address negotiated
 ip mtu 1492
 ip virtual-reassembly
 ip nat outside
 encapsulation ppp
 ip tcp adjust-mss 1452
 dialer pool 1
 dialer-group 1
 no cdp enable
 ppp authentication chap pap callin
 ppp chap hostname <username>
 ppp chap password <password>
 ppp pap sent-username <username> password <password>
 ppp ipcp dns request accept
 ppp ipcp route default
 ppp ipcp address accept

Infine, nella configurazione completa che ho illustrato precedentemente, potete notare che il protocollo spanning-tree è stato disabilitato per la VLAN 2:

no spanning-tree vlan 2

Ciò è preferibile in quanto, non conoscendo la configurazione del router di zona del provider, potrebbe venir fuori un port type mismatch con il successivo shutdown dell’interfaccia fa0 del nostro router (mi è già successo).

Infine, salviamo la nostra configurazione mediante il comando:

RouterADSL# copy run start

ed abbiamo finito.

Alla prossima.