Salta al contenuto
Note per Studenti Router CISCO

Router CISCO

In questa pagina 9

Questo laboratorio (LAB4) si fa in aula con dispositivi veri, non con Katharà: due router Cisco e tre PC Linux del laboratorio. Per i PC i comandi sono gli stessi di Routing statico in KatharàLaboratorio 2 (LAB2). Due LAN (195.11.14.0/24 e 200.1.1.0/24) sono unite da due router r1 e r2 collegati da una rete 100.0.0.8/30. Una interfaccia attiva inserisce da sola nella tabella di instradamento solo la rete direttamente collegata: per le altre servono rotte inserite a mano. I PC usano una rotta predefinita (route add default gw 195.11.14.1), i router rotte statiche (route add -net 195.11.14.0/24 gw 100.0.0.9 dev eth1). Senza la rotta di ritorno su r2 le richieste di ping arrivano ma le risposte no: la raggiungibilità vale solo se c'è un percorso in entrambi i versi. A configurazione finita ping da pc1 a pc2 risponde con ttl=62 (64 meno 2 router).Routing statico in Katharà → e Routing avanzato in KatharàLaboratorio 3 (LAB3). Tre router r1, r2, r3 a triangolo con tre LAN (96.96.0.0/24, 192.192.192.0/20, 128.128.0.0/20) e tre collegamenti /30 (10.0.0.0/30, 20.0.0.0/30, 30.0.0.0/30). Obiettivo: ogni dispositivo deve poter fare ping a ogni interfaccia di ogni altro. Gli host usano una rotta predefinita; i router soltanto rotte statiche (vietato il default), tre per router, una per ogni rete non direttamente collegata. Con soli default in un triangolo i percorsi si allungano e i pacchetti per indirizzi sconosciuti girano in cerchio fino al TTL; un buon compromesso è un default più qualche rotta specifica. traceroute scopre i router incrementando il TTL: ogni router che lo porta a 0 risponde con ICMP time exceeded.Routing avanzato in Katharà →; per i router Cisco si impara un'altra sintassi. Il compito è creare una topologia lineare, configurare indirizzi e tabelle di instradamento di tutti gli elementi e controllare con ping la comunicazione tra ogni coppia di dispositivi. Teoria di riferimento: Instradamento e inoltroL'inoltro (forwarding) mette il pacchetto sulla strada verso la destinazione, un salto alla volta (hop by hop). Se la destinazione è nella stessa rete del mittente l'inoltro è diretto (si usa l'ARP per il MAC del destinatario), altrimenti è indiretto: il pacchetto va al router successivo (next hop) indicato dalla tabella di instradamento, o al default gateway. Con le netmask: l'inoltro è diretto attraverso l'interfaccia $x$ se $\text{IP(dst)}\ \text{AND}\ \text{NM}(x)=\text{IP}(x)\ \text{AND}\ \text{NM}(x)$; altrimenti si scorre la tabella dalla maschera più lunga (longest prefix match) e si usa il primo match. La riga con rete $0.0.0.0$ e maschera $0.0.0.0$ (default route) corrisponde sempre. L'aggregazione di rotte (route aggregation) riduce la tabella, e nell'inoltro con etichette (MPLS) la tabella si consulta per indice.Instradamento e inoltro → e Elementi di rete - hub, switch e routerI dispositivi che interconnettono le reti si distinguono per il livello della pila che arrivano a leggere. Hub (livello 1): ripetitore, rigenera il segnale e lo manda su tutte le porte, tutte le stazioni condividono la capacità. Bridge e switch (livello 2): leggono l'indirizzo MAC e inoltrano solo verso la porta giusta, imparando la tabella (FDB) dagli indirizzi sorgente. Router (livello 3): leggono l'indirizzo IP e collegano reti indipendenti (internetwork). Switch e bridge isolano il traffico e sono plug and play; il router fa instradamento ottimo ma va configurato.Elementi di rete - hub, switch e router →.

La topologia lineare

 pcB (eno1: rete del lab, invariata)
 pcB enp2s0 .1 --- .2 FE0/0 r1 FE0/1 .1 --- .2 eno1 pcC enp2s0 .1 --- .2 FE0/0 r2 FE0/1 .1 --- .2 eno1 pcD
          192.168.2x.0/24        192.168.3x.0/24                192.168.4x.0/24         192.168.5x.0/24

Il valore x è il numero della riga del banco dove si trova il PC: PC 1-4 →x=0\to x=0, 5-8 →1\to 1, 9-12 →2\to 2, 13-16 →3\to 3, 17-20 →4\to 4, 21-24 →5\to 5. In formula, per il PC numero nn, x=⌊(n−1)/4⌋x=\lfloor(n-1)/4\rfloor (parte intera: ogni riga ha 44 PC): per n=24n=24, ⌊23/4⌋=⌊5,75⌋=5\lfloor23/4\rfloor=\lfloor5{,}75\rfloor=5; per n=5n=5, ⌊4/4⌋=1\lfloor4/4\rfloor=1. Nel terzo byte l'indirizzo scrive le cifre 2, 3, 4, 5 seguite da x: per x=2x=2 le reti sono 192.168.22.0/24, 192.168.32.0/24, 192.168.42.0/24, 192.168.52.0/24; per x=5x=5 sono 192.168.25.0/24, 192.168.35.0/24, 192.168.45.0/24, 192.168.55.0/24 (verificato con Python). Esempio delle slide: se pcD è il pc24, la sua interfaccia eno1 ha l'indirizzo 192.168.55.2/24.

PC eno1 enp2s0
pcB invariato (rete del laboratorio) 192.168.2x.1/24
pcC 192.168.3x.2/24 192.168.4x.1/24
pcD 192.168.5x.2/24 non usata
Router FE 0/0 FE 0/1
r1 192.168.2x.2/24 192.168.3x.1/24
r2 192.168.4x.2/24 192.168.5x.1/24

eno1 è l'interfaccia «nativa» del PC (quella già collegata alla rete del laboratorio); enp2s0 è la seconda scheda. Se enp2s0 non compare, si attiva con ifconfig -a (elenca anche le interfacce spente). FE 0/0 e FE 0/1 sono le due interfacce FastEthernet del router. I nomi cambiano rispetto a Katharà (eth0, eth1), ma i concetti sono gli stessi.

Ogni rete ha due soli dispositivi: quello a sinistra nello schema prende l'indirizzo .1, quello a destra .2. Per esempio nella rete 192.168.3x.0/24 ci sono r1 (.1, su FE 0/1) e pcC (.2, su eno1).

Accedere a un router Cisco

Il router non ha schermo né tastiera: si usa un PC collegato alla porta console del router con un cavo seriale.

  1. Si collega la porta seriale del PC (/dev/ttyUSB0) alla porta console del router (routerXX).
  2. Si collegano anche i cavi Ethernet alle due interfacce FE 0/0 e FE 0/1.
  3. Si apre una connessione remota con minicom (login sul PC rdclab, con sudo quando servono privilegi di amministratore):
bash
rdclab@pcXX# minicom -D /dev/ttyUSB0 -8b 9600    # -D porta seriale; -8b 8 bit di dati; 9600 baud

Per uscire da minicom: Ctrl+A e poi X. Se compare il prompt routerXX# si è già in modalità privilegiata; altrimenti si preme più volte Invio. Alla richiesta di utente e password si inseriscono quelli indicati nelle slide del laboratorio.

Le modalità dei comandi Cisco

Il router ha una gerarchia di modalità, e il prompt dice dove si è. Ogni modalità accetta solo certi comandi.

Modalità Prompt Come ci si entra Come si esce
User EXEC routerXX> accesso iniziale logout chiude la sessione
Privileged EXEC routerXX# enable (con password) da User EXEC disable torna a User EXEC
Global Configuration routerXX(config)# configure terminal exit, end o Ctrl+Z
Interface Configuration routerXX(config-if)# interface FastEthernet 0/0 exit (sale di uno), end (torna a Privileged)
Router Configuration routerXX(config-router)# router <protocollo> exit, end

Per vedere e cambiare i parametri di sistema bisogna essere in Privileged EXEC (#). exit risale di un livello; end (o Ctrl+Z) torna direttamente in Privileged EXEC da qualsiasi modalità di configurazione. La modalità Router Configuration serve ai protocolli di instradamento ed è citata nello schema delle slide; in questo laboratorio non si usa.

Configurare gli indirizzi dei router

Dalla modalità Privileged EXEC:

Router1# configure terminal                         ! entra in configurazione globale
Router1(config)# no ip routing                      ! spegne l'inoltro IP (azzera lo stato)
Router1(config)# ip routing                         ! lo riaccende: ora il router instrada tra le interfacce
Router1(config)# interface FastEthernet 0/0         ! entra nella configurazione dell'interfaccia FE 0/0
Router1(config-if)# ip address <ip> <maschera>      ! assegna indirizzo e maschera (es. 192.168.22.2 255.255.255.0)
Router1(config-if)# no shutdown                     ! attiva l'interfaccia (di default è spenta)
Router1(config-if)# interface FastEthernet 0/1      ! passa all'interfaccia FE 0/1
Router1(config-if)# ip address <ip> <maschera>
Router1(config-if)# no shutdown
Router1(config-if)# end                             ! torna in Privileged EXEC

Il testo dopo ! è un commento Cisco (non si scrive). Spiegazione, riga per riga:

Esempio (x=2x=2). Su r1: FE 0/0 →\to ip address 192.168.22.2 255.255.255.0; FE 0/1 →\to ip address 192.168.32.1 255.255.255.0. Su r2: FE 0/0 →\to 192.168.42.2, FE 0/1 →\to 192.168.52.1.

Rotte sui router Cisco

Dalla modalità di configurazione globale:

ip route <destinazione> <maschera> <indirizzo del gateway>   ! aggiunge una rotta statica
ip route <destinazione> <maschera> <interfaccia>             ! idem, indicando l'interfaccia di uscita
no ip route <destinazione> <maschera> <indirizzo del gateway>   ! la cancella
ip route 0.0.0.0 0.0.0.0 <indirizzo del gateway>             ! rotta predefinita (default gateway)

Formula (rotta statica Cisco). ip route <rete> <maschera> <next hop>: «per raggiungere <rete>/<maschera> si invia al <next hop>», con la maschera per esteso. La rotta predefinita è la rete 0.0.0.0 con maschera 0.0.0.0.

Esempio (x=2x=2). Su r1, per raggiungere la rete di pcD: ip route 192.168.52.0 255.255.255.0 192.168.32.2, cioè «la 192.168.52.0/24 si raggiunge tramite l'eno1 di pcC».

Le reti collegate direttamente (qui, per r1, le prime due) sono nella tabella da sole, come in Katharà e su qualunque router.

Maschera e wildcard. Nei comandi ip address e ip route Cisco usa la maschera (bit a 11 sulla parte di rete). In altri comandi (per le liste di accesso e per il comando network di OSPF, che qui non si usano) usa la wildcard, che è il complemento: bit a 00 dove la maschera ha 11, e viceversa. Si ottiene con 255.255.255.255−maschera255.255.255.255-\text{maschera} ottetto per ottetto: 255.255.255.0 →\to 0.0.0.255; 255.255.255.252 (/30/30) →\to 0.0.0.3; 255.255.240.0 (/20/20) →\to 0.0.15.255. Una wildcard a 00 vuol dire "questo bit deve coincidere", a 11 "non importa": 192.168.22.0 con wildcard 0.0.0.255 descrive tutti gli indirizzi 192.168.22.x.

Comandi di controllo, da Privileged EXEC:

Comando Cosa mostra
show interfaces stato e indirizzi di tutte le interfacce
show ip route la tabella di instradamento
show ip cache la cache di instradamento

Configurare i PC

Per i PC si usano i comandi già noti di Katharà:

bash
ifconfig <interfaccia> <indirizzo> netmask <maschera> broadcast <broadcast> up   # indirizzo e attivazione
route add default gw <gateway> dev <interfaccia>                                  # rotta predefinita
route add -net <rete> netmask <maschera> gw <gateway> dev <interfaccia>           # rotta statica
sysctl -w net.ipv4.ip_forward=1                                                   # inoltro IP abilitato (solo pcC)

L'ultima riga serve ai PC che fanno da router: pcC sta in mezzo tra r1 e r2 e deve inoltrare i pacchetti da un'interfaccia all'altra; senza net.ipv4.ip_forward=1 il kernel Linux li scarta (in Katharà l'inoltro è già attivo nelle macchine). Servono i privilegi (sudo).

La configurazione completa (esempio x=2x=2)

Calcolate con Python: reti 192.168.22.0/24 (pcB-r1), 192.168.32.0/24 (r1-pcC), 192.168.42.0/24 (pcC-r2), 192.168.52.0/24 (r2-pcD).

pcB. Ha già eno1, che non si tocca.

bash
ifconfig enp2s0 192.168.22.1 netmask 255.255.255.0 broadcast 192.168.22.255 up   # verso r1
route add -net 192.168.32.0 netmask 255.255.255.0 gw 192.168.22.2 dev enp2s0     # rete r1-pcC
route add -net 192.168.42.0 netmask 255.255.255.0 gw 192.168.22.2 dev enp2s0     # rete pcC-r2
route add -net 192.168.52.0 netmask 255.255.255.0 gw 192.168.22.2 dev enp2s0     # rete r2-pcD

Le slide indicano come comodo il default gateway; su pcB, che ha già eno1 collegata alla rete del laboratorio, le tre rotte statiche evitano di toccare l'instradamento verso il resto del laboratorio (osservazione: la scelta è nostra, entrambi i modi raggiungono lo scopo).

r1 (Cisco).

interface FastEthernet 0/0
 ip address 192.168.22.2 255.255.255.0
 no shutdown
interface FastEthernet 0/1
 ip address 192.168.32.1 255.255.255.0
 no shutdown
exit
ip route 192.168.42.0 255.255.255.0 192.168.32.2
ip route 192.168.52.0 255.255.255.0 192.168.32.2

pcC (in mezzo).

bash
ifconfig eno1 192.168.32.2 netmask 255.255.255.0 broadcast 192.168.32.255 up     # verso r1
ifconfig enp2s0 192.168.42.1 netmask 255.255.255.0 broadcast 192.168.42.255 up   # verso r2
sysctl -w net.ipv4.ip_forward=1                                                    # pcC fa da router
route add -net 192.168.22.0 netmask 255.255.255.0 gw 192.168.32.1 dev eno1       # a sinistra: via r1
route add -net 192.168.52.0 netmask 255.255.255.0 gw 192.168.42.2 dev enp2s0     # a destra: via r2

r2 (Cisco).

interface FastEthernet 0/0
 ip address 192.168.42.2 255.255.255.0
 no shutdown
interface FastEthernet 0/1
 ip address 192.168.52.1 255.255.255.0
 no shutdown
exit
ip route 192.168.22.0 255.255.255.0 192.168.42.1
ip route 192.168.32.0 255.255.255.0 192.168.42.1

pcD.

bash
ifconfig eno1 192.168.52.2 netmask 255.255.255.0 broadcast 192.168.52.255 up
route add default gw 192.168.52.1 dev eno1     # unica uscita: r2

Un ping da pcB a pcD, passo per passo (esempio x=2x=2, destinazione 192.168.52.2). A ogni nodo si confronta 192.168.52.2 AND maschera con le righe della tabella:

nodo rotta usata next hop TTL all'uscita
pcB 192.168.52.0/24 (192.168.52.2 AND 255.255.255.0 == 192.168.52.0) 192.168.22.2 (r1) 64 (parte da pcB)
r1 ip route 192.168.52.0 255.255.255.0 192.168.32.2 192.168.32.2 (pcC) 63
pcC 192.168.52.0/24 192.168.42.2 (r2) 62
r2 rete collegata (FE 0/1, 192.168.52.0/24) consegna diretta a pcD 61

pcD riceve il pacchetto con TTL 6161 (tre dispositivi hanno sottratto 11: r1, pcC, r2). La risposta riparte da pcD con TTL 6464 e torna con regole analoghe in senso inverso: la rotta predefinita di pcD manda tutto a r2, poi r2 usa ip route 192.168.22.0 ... 192.168.42.1 (pcC), pcC usa la rotta per 192.168.22.0/24 verso r1, r1 consegna a pcB; a pcB arriva con TTL 64−3=6164-3=61, il ttl=61 che si legge nel ping. Con l'aumento dei salti cresce anche il tempo di andata e ritorno (ogni dispositivo aggiunge elaborazione e attesa, Analisi delle prestazioni di reteLe prestazioni di una rete si misurano con tre famiglie di metriche: traffico (bitrate $R_0$ massimo del collegamento, throughput $S\le R_0$ dati consegnati con successo, goodput al livello applicazione), ritardo (end-to-end $d_{tot}=d_{proc}+d_{queue}+d_{trans}+d_{prop}$ con $d_{trans}=L/R$ e $d_{prop}=d/v$; jitter; RTT) e capacità del tubo (BDP $=R\cdot$ ritardo, bit che riempiono il collegamento), più l'affidabilità (PER, PDR, PLR). Il throughput di un percorso è quello del collegamento collo di bottiglia, $\min$ dei bitrate, ricordando che i collegamenti condivisi dividono la capacità.Analisi delle prestazioni di rete →): per questo il foglio chiede di annotare i tempi dai vicini ai lontani.

Regola per scrivere le rotte in una topologia lineare: ogni nodo ha una rotta per ogni rete lontana, e il next hop è sempre il vicino dal lato in cui sta quella rete. Per esempio r1 (a sinistra pcB, a destra pcC) manda a destra le reti 4x e 5x; pcC manda a sinistra la 2x e a destra la 5x. Le due reti adiacenti a un nodo sono collegate e non richiedono rotte.

Verifiche richieste

Il foglio chiede, a ogni passo, di verificare con ping la comunicazione tra ogni coppia di dispositivi e di annotare i tempi di ogni coppia. Si procede dal vicino al lontano: prima i vicini diretti, poi con un salto in più, e così via fino a pcB ↔\leftrightarrow pcD. Quando tutte le sottoreti sono collegate, la prova finale è un traceroute da un estremo all'altro:

bash
traceroute 192.168.52.2      # da pcB a pcD: attraversa r1, pcC e r2

Il percorso ha tre router intermedi: 192.168.22.2 (r1), 192.168.32.2 (pcC, che fa da router) e 192.168.42.2 (r2), poi pcD. Con ping, se pcD risponde con TTL=64\text{TTL}=64, a pcB arriva ttl=61 (64−364-3, tre dispositivi che inoltrano). In Wireshark si controllano le intestazioni IP delle sonde, come in Routing avanzato in KatharàLaboratorio 3 (LAB3). Tre router r1, r2, r3 a triangolo con tre LAN (96.96.0.0/24, 192.192.192.0/20, 128.128.0.0/20) e tre collegamenti /30 (10.0.0.0/30, 20.0.0.0/30, 30.0.0.0/30). Obiettivo: ogni dispositivo deve poter fare ping a ogni interfaccia di ogni altro. Gli host usano una rotta predefinita; i router soltanto rotte statiche (vietato il default), tre per router, una per ogni rete non direttamente collegata. Con soli default in un triangolo i percorsi si allungano e i pacchetti per indirizzi sconosciuti girano in cerchio fino al TTL; un buon compromesso è un default più qualche rotta specifica. traceroute scopre i router incrementando il TTL: ogni router che lo porta a 0 risponde con ICMP time exceeded.Routing avanzato in Katharà →: TTL crescente a ogni gruppo di sonde e messaggi ICMP time exceeded dai router (Protocollo ICMPIPv4 non ha meccanismi per segnalare o correggere gli errori né per interrogare host e router: li fornisce l'ICMP (Internet Control Message Protocol), un protocollo di rete i cui messaggi viaggiano dentro datagrammi IP con campo Protocol $=1$. I messaggi sono di errore (destination unreachable, tipo 3; time exceeded, tipo 11; redirect, tipo 5; parameter problem, tipo 12), sempre inviati alla sorgente originale e con l'intestazione IP più i primi 8 byte del datagramma che ha causato l'errore, oppure di interrogazione (echo request 8 e reply 0, timestamp 13-14). ICMP segnala ma non corregge. Con l'echo si fanno ping (RTT) e scoperta dell'MTU (bit D, codice 4, payload massimo $1500-20-8=1472$ byte); con time exceeded e port unreachable si fa traceroute ($n+1$ messaggi con TTL crescente). Attacchi: smurf e redirect.Protocollo ICMP →). Il laboratorio si chiude premendo il pulsante Finish.

Errori tipici

  • Dimenticare no shutdown: l'interfaccia Cisco resta spenta (show interfaces la dà administratively down).
  • Scrivere il prefisso (/24) nei comandi Cisco: serve la maschera per esteso.
  • Dimenticare sysctl -w net.ipv4.ip_forward=1 su pcC: i pacchetti arrivano e non ripartono.
  • Sbagliare il valore di x: gli indirizzi vanno calcolati dalla riga del banco.
  • Dimenticare una rotta: ogni nodo deve conoscere tutte le reti lontane (andata e ritorno).
  • Cercare la configurazione dal prompt sbagliato: i comandi ip route vanno in Global Configuration, ip address in Interface Configuration.

Versione ripasso

  • LAB4, su macchine vere. Topologia lineare pcB - r1 - pcC - r2 - pcD con reti 192.168.2x.0/24 (pcB-r1), 3x (r1-pcC), 4x (pcC-r2), 5x (r2-pcD). Su ogni rete il dispositivo a sinistra prende .1, quello a destra .2. Valore xx = riga del banco: PC 1-4 →0\to0, 5-8 →1\to1, 9-12 →2\to2, 13-16 →3\to3, 17-20 →4\to4, 21-24 →5\to5. Per x=2x=2: 192.168.22.0/24, 32, 42, 52 (pc24: pcD 192.168.55.2/24).
  • Indirizzi. pcB: enp2s0 == .2x.1 (eno1 non si tocca). pcC: eno1 == .3x.2, enp2s0 == .4x.1. pcD: eno1 == .5x.2. r1: FE 0/0 == .2x.2, FE 0/1 == .3x.1. r2: FE 0/0 == .4x.2, FE 0/1 == .5x.1. Se enp2s0 non compare: ifconfig -a.
  • Accesso. Cavo seriale da /dev/ttyUSB0 alla porta console del router, poi minicom -D /dev/ttyUSB0 -8b 9600; uscita con Ctrl+A, poi X. Privilegi con sudo.
  • Modalità. User EXEC routerXX>, poi enable (password) porta a Privileged EXEC routerXX#, poi configure terminal porta a (config)#, poi interface FastEthernet 0/0 porta a (config-if)#; router <protocollo> porta a (config-router)#. exit sale di un livello; end o Ctrl+Z torna a #; disable torna a >; logout chiude. Vedere e cambiare i parametri richiede #.
  • Comandi su r1 (x=2x=2).
bash
no ip routing                                # spegne e riaccende l'inoltro: stato pulito
ip routing
interface FastEthernet 0/0
 ip address 192.168.22.2 255.255.255.0       # maschera per esteso, non il prefisso
 no shutdown                                 # le interfacce Cisco partono spente
interface FastEthernet 0/1
 ip address 192.168.32.1 255.255.255.0
 no shutdown
exit
ip route 192.168.42.0 255.255.255.0 192.168.32.2   # rotta statica: rete, maschera, next hop
ip route 192.168.52.0 255.255.255.0 192.168.32.2

Lezioni in cui compare