Dispense corso Laboratorio di Internet
Transcript
Dispense corso Laboratorio di Internet
Universitá di Roma Sapienza Dipartimento di Ingegneria Elettronica e delle Telecomunicazioni Dispense corso Laboratorio di Internet Luca Chiaraviglio E-mail: {luca.chiaraviglio}@diet.uniroma1.it 3 marzo 2014 1 Indice 1 Introduzione 1.1 Materiale richiesto . . . . . . . . . . . . . . . . . . . . . . . . 4 4 2 Il sistema operativo Linux 2.1 Scopo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Descrizione dell’esercitazione . . . . . . . . . . . . . . . . . . 2.2.1 Analisi del comando ifconfig . . . . . . . . . . . . . 5 5 5 5 3 Configurazione software e hardware degli host: analisi livello utente 3.1 Scopo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Documentazione disponibile . . . . . . . . . . . . . . . . . . 3.3 Descrizione dell’esercitazione . . . . . . . . . . . . . . . . . 3.3.1 Configurazione di una rete . . . . . . . . . . . . . . 3.3.2 Verifica connettività a livello rete . . . . . . . . . . . 3.3.3 Verifica modalità di funzionamento consegna diretta 3.3.4 Protocollo ARP . . . . . . . . . . . . . . . . . . . . . 3.3.5 Configurazioni di indirizzamento atipiche e sbagliate 6 6 6 6 6 7 8 8 9 a . . . . . . . . 4 Configurazione software e hardware degli host: analisi a livello rete 4.1 Scopo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 Documentazione disponibile . . . . . . . . . . . . . . . . . . . 4.3 Descrizione dell’esercitazione . . . . . . . . . . . . . . . . . . 4.3.1 Analisi di base. . . . . . . . . . . . . . . . . . . . . . . 4.3.2 Consegna diretta e risoluzione di indirizzi: il protocollo ARP . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4 Cattura e analisi di protocolli di livello trasporto/applicazione 4.4.1 Protocollo TCP . . . . . . . . . . . . . . . . . . . . . . 4.4.2 Analisi del comando nmap . . . . . . . . . . . . . . . . 5 Misure di prestazioni 5.1 Scopo . . . . . . . . . . . . . . . . . . . . 5.2 Configurazione della scheda di rete . . . . 5.3 Analisi del comando nttcp . . . . . . . . . 5.4 Impatto delle topologie e degli apparati di stazioni. . . . . . . . . . . . . . . . . . . . 5.4.1 Controllo di congestione . . . . . . 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . livello 2 sulle pre. . . . . . . . . . . . . . . . . . . . . . 11 11 11 11 12 13 15 15 19 21 21 22 23 23 26 5.5 Emulazione di reti geografiche . . . . . . . . . . . . . . . 5.5.1 Emulare ritardi rete . . . . . . . . . . . . . . . . 5.5.2 Perdita di pacchetti . . . . . . . . . . . . . . . . 5.6 Verifica del funzionamento dell’emulazione . . . . . . . . 5.7 Impatto dei ritardi sulle prestazioni del protocollo TCP 5.8 Prestazioni di Streaming Video . . . . . . . . . . . . . . 5.8.1 Configurazione Streaming su UDP . . . . . . . . 5.8.2 Configurazione Streaming su TCP . . . . . . . . 5.9 Confronto prestazioni UDP/TCP . . . . . . . . . . . . . 5.10 Impatto della probabilitá di perdita . . . . . . . . . . . 5.11 Impatto della capacitá del canale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 28 29 29 29 30 31 32 33 33 33 6 Configurazione rete mediante routing statico 6.1 Scopo . . . . . . . . . . . . . . . . . . . . . . . . 6.2 Documentazione disponibile . . . . . . . . . . . . 6.3 Configurazione instradamento statico intra-isola . 6.3.1 ICMP-redirect . . . . . . . . . . . . . . . 6.4 Configurazione instradamento statico inter-isola . 6.4.1 Topologia a stella . . . . . . . . . . . . . . 6.4.2 Scoperta della topologia . . . . . . . . . . 6.4.3 Prestazioni con rete carica . . . . . . . . . 6.4.4 Prestazioni per traffico uniforme . . . . . 6.4.5 Prestazioni per traffico sbilanciato . . . . 6.4.6 Riconfigurazione in caso di guasto. . . . . 6.4.7 Conclusioni . . . . . . . . . . . . . . . . . 6.5 Topologia ad anello con routing distanza minima 6.5.1 Configurazione . . . . . . . . . . . . . . . 6.6 Topologia ad anello con routing unidirezionale . . 6.7 Analisi di protocolli a livello geografico . . . . . . 6.7.1 Analisi del comando traceroute . . . . . . 6.7.2 Analisi del comando ping “Record route” 6.7.3 Analisi del protocollo DNS . . . . . . . . 6.7.4 Analisi del protocollo HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 34 34 34 35 36 36 37 37 38 38 39 39 39 39 39 40 40 40 40 41 7 Protocolli di routing dinamico 7.1 Scopo . . . . . . . . . . . . . 7.2 Configurazione di base . . . . 7.3 Il protocollo RIP . . . . . . . 7.4 Il protocollo OSPF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 42 42 43 44 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Introduzione Questa è una raccolta di esercitazioni da svolgere durante il corso di Laboratorio di Internet1 . Sono descritte diverse esercitazioni da svolgere in laboratorio, che verranno di volta in volta proposte dal docente. Il corso presenta contenuti fortemente sperimentali, e permette agli studenti di applicare le nozioni apprese durante le lezioni di teoria. Per semplicità, il corso viene diviso in esperienze. Ciascuna esperienza può richiedere diverse ore, per cui non vi è nessuna corrispondenza tra la divisione dei laboratori e le settimane di corso. Per lo svolgimento del corso, gli studenti hanno a disposizione i PC del Laboratorio Informatico. I PC dovranno fare il boot sul sistema operativo Ubuntu o Windows a seconda dell’esercitazione richiesta. Gli studenti del corso dovranno lavorare in gruppi da 2 studenti. 1.1 Materiale richiesto Per lo svolgimento del corso, ogni gruppo ha a disposizione: • due personal computer del laboratorio • eventualmente il proprio portatile se portato dallo studente • uno switch a 10/100 Mbps 1 Questo materiale si basa sul corso di Laboratorio di Telecomunicazioni del Politecnico di Torino. Si ringrazia il prof. Marco Mellia per averne permesso la condivisione 4 2 Il sistema operativo Linux 2.1 Scopo Lo scopo di questa esercitazione é di familiarizzare con il sistema operativo linux e la scrittura di alcuni semplici programmi di scripting. 2.2 2.2.1 Descrizione dell’esercitazione Analisi del comando ifconfig Ciascun gruppo durante questa esercitazione lavorerá con un singolo PC. 1. A cosa serve il comando ifconfig? Suggerimento: guardare prima la documentazione del comando digitando man ifconfig 2. Quali informazioni vengono riportate in output? Si salvi la schermata del comando e si commentino i risultati che vengono stampati. 3. Selezionare l’interfaccia relativa alla scheda di rete. Annotare l’indirizzo IP, la netmask e il gateway (suggerimento: per il gateway utilizzare le informazioni disponibili dal comando route). Che tipo di sottorete viene utilizzata? Perché? Che indirizzo ha il gateway? Perché? 4. Si crei uno script di shell/AWK per selezionare i bytes che vengono trasmessi e ricevuti. 5. Si modifichi lo script precedente per salvare i bytes che vengono trasmessi e ricevuti in un file di uscita in un certo intervallo temporale (1 volta al secondo per 5 minuti). Suggerimento: utilizzare il comando sleep per impostare il tempo di campionamento. Plottare su un grafico l’evoluzione temporale dei bytes trasmessi e ricevuti. 6. Ripetere l’esperimento precedente navigando su Internet quando si esegue lo script (aprire il browser Firefox). Cosa succede quando si apre un video? Cosa succede quando si apre una pagina di ricerca? Plottare un grafico che mostra i risultati ottenuti, indicando anche quali siti sono stati visitati. 5 3 Configurazione software e hardware degli host: analisi a livello utente 3.1 Scopo Lo scopo di questa esperienza è capire i meccanismi di configurazione di host e router IP, provando a creare delle reti locali. I PC a disposizione verranno connessi tramite switch, e verrà controllato il corretto funzionamento delle reti create. Il tempo atteso richiesto è circa 10 ore. 3.2 Documentazione disponibile • Manuali dei comandi ifconfig, ping, traceroute, netstat, arp, route http://www.telematica.polito.it/mellia/corsi/LaboratorioTLM/doc/ifconfig.html http://www.telematica.polito.it/mellia/corsi/LaboratorioTLM/doc/ping.html http://www.telematica.polito.it/mellia/corsi/LaboratorioTLM/doc/traceroute.html http://www.telematica.polito.it/mellia/corsi/LaboratorioTLM/doc/netstat.html http://www.telematica.polito.it/mellia/corsi/LaboratorioTLM/doc/arp.html • Tutorial sulla crimpatura di un cavo di rete UTP RJ45 http://www.telematica.polito.it/mellia/corsi/LaboratorioTLM/doc/cat5cable.htm 3.3 Descrizione dell’esercitazione Nota: In questa esercitazione non è consentito l’uso di analizzatore di protocolli di rete. 3.3.1 Configurazione di una rete Ogni gruppo dispone di cavi UTP, di PC e di uno switch. In ogni isola, si connettano i terminali a disposizione tramite lo switch. Attenzione: nel caso sia presente una porta denominata di UPLINK, non utilizzarla. 1. Si disegni la topologia corrispondente sia a livello fisico che a livello collegamento. 2. Si disabiliti l’interfaccia di rete tramite il comando ifconfig eth0 down 6 (si elimini anche l’indirizzo IP associato all’interfaccia dal Network Manager di Ubuntu). Si crei una rete con al massimo 128 hosts, utilizzando indirizzi privati IP di classe B. Per configurare l’indirizzo IP IP ADDRESS (nel formato decimale X.X.X.X) e la subnet mask NET MASK (nel formato decimale X.X.X.X) si utilizzi il comando ifconfig eth0 IP_ADDRESS netmask NET_MASK ifconfig eth0 up 3. Verificare la configurazione delle interfacce con il comando ifconfig -a Quale delle informazioni a disposizione riuscite a capire? Quante interfacce sono presenti? Come sono configurate? Gli indirizzi dell’host, di rete e di broadcast sono corretti? 4. Verificare l’aggiornamento delle tabelle di routing tramite il comando route Che host risultano raggiungibili secondo le tabelle di routing? 3.3.2 Verifica connettività a livello rete Verificare la connettività da un host verso un’altro (e viceversa) con indirizzo IP IP ADDRESS mediante il comando ping IP_ADDRESS -c 10 Per verificare quale scheda di rete risulta collegata allo switch e i relativi parametri di livello fisico è utile il comando ethtool eth0 Quale delle informazioni mostrate siete in grado di capire? 1. Eseguendo il comando di ping, si riceve un output simile al seguente: PING 172.16.1.1 (172.16.1.1) from 172.16.1.2 : X(Y) bytes of data. Z bytes from 130.192.73.1: icmp_seq=0 ttl=253 time=3.3 ms quale è il significato preciso dei valori X,Y e Z ? Che cosa indica i campi icmp seq, ttl e time? 7 3.3.3 Verifica modalità di funzionamento consegna diretta 1. Si determini sperimentalmente il massimo range di indirizzi IP raggiungibili da un host, usando il comando ping. Si ponga la netmask a 255.255.0.0 su tutti gli host. Supponendo di non conoscere la netmask (e quindi la dimensione della sottorete a cui si è connessi), come è possibile determinare il nuovo massimo range di indirizzi IP raggiungibile da un host. 2. Cosa succede se si mandano pacchetti ICMP verso l’indirizzo di rete? 3. Cosa succede se si mandano pacchetti ICMP verso l’indirizzo broadcast? 4. Si determini la dimensione effettiva della MTU mediante il comando ping con l’opzione DON’T FRAGMENT, facendo diversi tentativi con dimensioni del pacchetto differenti. 5. Il comando netstat -i fornisce delle informazioni ridondanti rispetto a quelle di ifconfig. Quali sono? 6. Il comando netstat -r fornisce delle informazioni ridondanti rispetto a quelle di route. Quali sono? Il comando netstat -r -c fornisce delle informazioni ridondanti rispetto a quelle di route. Quali sono? 7. Spiegare brevemente tutte le opzioni di ifconfig, ping, route e netstat utilizzate finora. 8. Descrivere la configurazione corrente del proprio host, commentando tutti i campi di vostra conoscenza dell’output dei comandi route, ifconfig e ethtool. 3.3.4 Protocollo ARP Ricordando che tutti gli host appartengono alla stessa sottorete IP, i terminali scambiano tra loro delle PDU mediante il meccanismo di consegna diretta. Questo prevede che l’host sorgente crei una PDU di livello rete contenente come indirizzo di destinazione quello del terminare che si vuole contattare. Per poter trasmettere tale PDU, l’host sorgente deve creare una PDU Ethernet contenente come SDU la PDU IP. Come indirizzo MAC, l’host dovrà inserire quello del terminale remoto. Per poter conoscere tale 8 indirizzo, l’host dovrà associare all’indirizzo IP (noto) della destinazione con l’indirizzo MAC (non noto) della stessa. Per fare questo si usa il protocollo ARP - Address Resolution Protocol. Una volta effettuata l’associazione, il terminale mantiene tali informazioni in tabelle, dette tabelle di ARP. Per capire il funzionamento di tali meccanismi, si eseguano di seguenti punti. 1. Si configuri la rete come nel punto Sec. 3.3.1. Dopo aver eseguito dei ping tra tutte le stazioni, si consultino le tabelle di ARP mediante il comando arp Spiegare il significato dell’output del comando. 2. Si individui, sia nel caso di ARP-request sia di ARP-reply, quali sono gli host che aggiornano le tabelle di ARP, spiegando la metodologia adottata. Quali altre possibilità ci sono per la gestione dei messaggi di ARP da parte degli host? Quali sono i vantaggi e svantaggi di tali soluzioni? 3. Si provi a contattare un host inesistente appartenente alla propria sottorete e verificare il risultato a video e il contenuto delle ARP tables. 4. Si provi a contattare un host inesistente non appartenente alla propria sottorete e verificare il risultato a video e il contenuto delle ARP tables. 5. Verificare la durata delle entry nella tabella di ARP. Suggerimento: cancellare la tabella, e far creare due entry, una per un host raggiungibile, e una per un host non raggiungibile. Il comando date visualizza l’ora del PC e può essere utile per la misurazione. 3.3.5 Configurazioni di indirizzamento atipiche e sbagliate 1. Cosa succede se due host hanno lo stesso indirizzo IP? Verificare attentamente la connettività da un terzo host verso l’indirizzo comune consultando le tabelle ARP. Cosa succede se gli host che hanno lo stesso indirizzo contattano il terzo host? 2. Si configurino due host in modo che un host A veda l’host B come appartenente alla medesima sottorete ma non viceversa. Verificare la connettività tra i due host. Cosa succede se A contatta B? E viceversa? 9 3. Si configuri l’host A con indirizzo 10.1.0.1/24 e l’host B con l’indirizzo 10.1.0.255/23. Si verifichi la connettività reciproca tra i due host. Cosa succede in questo caso? Che indirizzo usa A per B ? Che indirizzo usa B per A? 10