from scratch to network - user mode linux

55
1 NETWORKING CON USER MODE LINUX

Upload: majong-devjfu

Post on 24-May-2015

1.064 views

Category:

Technology


5 download

TRANSCRIPT

Page 1: From Scratch To Network - User mode linux

1

NETWORKING CONUSER MODE LINUX

Page 2: From Scratch To Network - User mode linux

2

Configurazione della rete

Page 3: From Scratch To Network - User mode linux

3

Scopo dell'esperienza (1)

• Creare tre sistemi in rete come nella figura

Page 4: From Scratch To Network - User mode linux

4

Scopo dell'esperienza (2)

• Tre nodi

– node1

– node2

– node3

• Due sottoreti

– 192.168.1.0, legata a switch1

– 192.168.2.0, legata a switch2

– Per entrambe netmask=255.255.255.0

• Obiettivo: far comunicare i nodi attraverso le due sottoreti

Page 5: From Scratch To Network - User mode linux

5

Presentazione dei componenti della rete (1)

• switch1

– connesso alla socket unix /tmp/uml1.ctl

• switch2

– connesso alla socket unix /tmp/uml2.ctl

• node1

– 1 scheda di rete eth0

– indirizzo 192.168.1.1

– legata alla sottorete 192.168.1.0

– si collega allo switch switch1

• node3

– analogo a node 1 ma sulla sottorete 192.168.2.0

Page 6: From Scratch To Network - User mode linux

6

Presentazione dei componenti della rete (2)

• node2

– scheda di rete eth0 su sottorete 192.168.1.0 indirizzo 192.168.1.254 fa da gateway per quella sottorete si collega a switch1

– scheda di rete eth1 eth1 su sottorete 192.168.2.0 indirizzo 192.168.2.254 fa da gateway per quella sottorete si collega a switch2

Page 7: From Scratch To Network - User mode linux

7

Primo passo: preparare i sistemi UML

• Assicurarsi di avere le immagini dei filesystem nella opportuna directory

– NOTA: MAI lavorare in $HOME, SEMPRE in /tmp

– usiamo l'immagine debian5b.ext2

• Fare partire il supporto per la rete (i due switch virtuali)

– switch1

$ ./uml_switch -unix /tmp/uml1.ctl

– switch2

$ ./uml_switch -unix /tmp/uml2.ctl

Page 8: From Scratch To Network - User mode linux

8

Due parole su come si scompatta un archivio

• tar (TApe aRchive)

• Opzioni

– -v (verbose operation)

– comando -x scompatta -t mostra contenuto

– algoritmo di compressione -Z compress (archivi .tar.Z) -z gzip (archivi .tar.gz) -j bzip2 (archivi .tar.bz2)

– -f file

• Esempio: tar -xzvf archivio.tar.gz

Page 9: From Scratch To Network - User mode linux

9

Secondo passo: lanciare i sistemi virtuali (1)

• node1

$ ./linux \

ubd0=node1.cow,debian5b.ext2 \

eth0=daemon,,unix,/tmp/uml1.ctl

• node3

$ ./linux \

ubd0=node3.cow,debian5b.ext2 \

eth0=daemon,,unix,/tmp/uml2.ctl

interfaccia direte: eth0 suswitch1 (/tmp/uml1.ctl)

interfaccia direte: eth0 suswitch2 (/tmp/uml2.ctl)

Page 10: From Scratch To Network - User mode linux

10

Secondo passo: lanciare i sistemi virtuali (2)

• node2

$ ./linux \

ubd0=node2.cow,debian5b.ext2 \

eth0=daemon,,unix,/tmp/uml1.ctl \

eth1=daemon,,unix,/tmp/uml2.ctl

• Ogni volta che si lancia un nodo dovrebbe apparire un'indicazione nelle schermate dove girano gli switch

2 interfaccedi rete• eth0 su switch1• eth1 su switch2

Page 11: From Scratch To Network - User mode linux

11

Errori comuni

• Mettere lo spazio tra i sottoparametri del kernel

– NO: ubd0=file.cow, file.ext2

– SI: ubd0=file.cow,file.ext2

• Sbagliare a scrivere i nomi dei parametri

– NO: udb

– SI: ubd

– NO: demon o damon

– SI: daemon

• Terminare in modo sporco i processi UML

– MAI chiudere le finestre di UML, dare il comando shutdown dalla linea di comando del sistema UML

Page 12: From Scratch To Network - User mode linux

12

Terzo passo: configurare i nodi (1)

• Si fa il login su ciascuno dei nodi e si lavora da linea di comando sui nodi virtuali

• Login:

– Username: root

– Password nulla (basta battere invio, se non funziona provare con “root”)

• Dare un nome ai nodi:

– Editare il file /etc/hostname in modo che contenga il nome del nodo

Page 13: From Scratch To Network - User mode linux

13

Terzo passo: configurare i nodi (2)

• Inserire le giuste informazioni di rete per risolvere i nomi

– Si agisce sul file /etc/hosts

– Alla fine ogni nodo dovrebbe avere un file fatto in questo modo:

127.0.0.1 localhost

192.168.1.1 node1

192.168.2.1 node3

192.168.1.254 node2

192.168.2.254 node2

Page 14: From Scratch To Network - User mode linux

14

Quarto passo: configurare le interfacce di rete (1)

• Si usa il file /etc/network/interfaces

• Il file contiene diverse direttive

– Direttiva auto: quali interfacce vanno inizializzate all'avvio della macchina auto lo auto eth0 auto eth1 (per node2)

– Direttiva iface: una per ogni interfaccia iface <nome> inet <modalità> <nome> vale lo, eth0, eth1 inet indica che sono interfacce TCP/IP

Page 15: From Scratch To Network - User mode linux

15

Quarto passo: configurare le interfacce di rete (2)

• Direttiva iface nel file /etc/network/interfaces

– <modalità> vale dhcp = inizializzazione dell'interfaccia in modo automatico col

protocollo dhcp loopback = interfaccia locale (127.0.0.1) static = seguono parametri per configurare l'interfaccia

– Configurazione statica di un'interfaccia address = indirizzo IP dell'interfaccia (192.168.X.Y) netmask = 255.255.255.0 network = indirizzo della rete (192.168.X.0) broadcast = indirizzo di broadcast (192.168.X.255) gateway = solo per node1 e node3, l'indirizzo dell'interfaccia

di node2 che si affaccia sulla sottorete

Page 16: From Scratch To Network - User mode linux

16

Esempio

# File di configurazione per node1

# The loopback network interface

auto lo

iface lo inet loopback

# Interface eth0

auto eth0

# iface eth0 inet dhcp

iface eth0 inet static

address 192.168.1.1

netmask 255.255.255.0

broadcast 192.168.1.255

network 192.168.1.0

gateway 192.168.1.254

Page 17: From Scratch To Network - User mode linux

17

Quinto passo: mettere tutto insieme (1)

• Possiamo riavviare tutti e tre i sistemi

$ reboot

• In alternativa possiamo forzare il riavvio delle interfacce di rete con i comandi

– ifdown <interfaccia>, ifup <interfaccia> oppure

– /etc/init.d/networking restart

• In entrambi i casi abbiamo comunicazione entro una sottorete

– Facendo login da node 1 riusciamo a fare ping su node 2 e viceversa

– Stessa cosa tra node 3 e node 2

Page 18: From Scratch To Network - User mode linux

18

Quinto passo: mettere tutto insieme (2)

• Perché node 1 e 3 non comunicano?

• Serve che node 2 diventi un vero router e passi il traffico tra le sue due interfacce (eth0 e eth1)

# echo “1” >/proc/sys/net/ipv4/ip_forward

• Ora dovremmo essere in grado di far comunicare anche node1 e node3 attraverso node2

Page 19: From Scratch To Network - User mode linux

19

Configurare le interfacce “da uomini veri”

• Comandi ifconfig e route

• ifconfig <interface> <address> netmask <mask> up

– Configura l'interfaccia di rete specificata con: indirizzo IP netmask

– ifconfig consente di fare anche molte altre cose, verificare la manpage per vedere le altre opzioni

– Ad ogni reboot il comando va di nuovo lanciato

• route add default gw <gwaddr>

– Inserisce l'indirizzo del gateway di default (come comando gateway in /etc/network/intefaces)

Page 20: From Scratch To Network - User mode linux

20

Configurare le interfacce “al volo”

• Nel nostro caso i comandi da lanciare sono:

• Su node1

– ifconfig eth0 192.168.1.1 netmask 255.255.255.0 up

– route add default gw 192.168.1.254

• Su node2

– ifconfig eth0 192.168.1.254 netmask 255.255.255.0 up

– ifconfig eth1 192.168.2.254 netmask 255.255.255.0 up

• Su node3

– ifconfig eth0 192.168.1.2 netmask 255.255.255.0 up

– route add default gw 192.168.2.254

Page 21: From Scratch To Network - User mode linux

21

Salvare il lavoro fatto

• Alla fine di una sessione di lavoro può far comodo salvare le proprie immagini UML

• Il meccanismo Copy on Write è molto pignolo sulla consistenza file cow/file ext2– L'età dei file deve corrispondere

– In caso contrario UML si rifiuterà all'avvio successivo di montare I dischi

• Bisogna preservare le date di accesso– Opzione -p (preserve) del comando copy

– Opzione --atime-preserve del comando tar

• Esempio:– $ tar -cSzvf mie_immagini.tgz *.cow *.ext2 \

--atime-preserve

Page 22: From Scratch To Network - User mode linux

22

Testing della rete:protocolli di supporto

Page 23: From Scratch To Network - User mode linux

23

Campo Time-To-Live del datagramma IP

• Poiché le tabelle di instradamento dei router non sono sempre “corrette”, è possibile che un pacchetto entri in cicli da cui non riesca ad uscire

• Per evitare congestioni dovute a situazioni di questo tipo, si fissa un limite al tempo entro cui un pacchetto può restare sulla rete. Nei pacchetti IP il campo Time-To-Live misura il tempo di vita rimanente al pacchetto.

• Ciascun router deve decrementare il TTL di almeno una unità (RFC 1812). Nella pratica, i pacchetti raramente rimangono in un router per più di un secondo ed i router semplicemente decrementano di uno il TTL prima di instradare un pacchetto

Page 24: From Scratch To Network - User mode linux

24

Campo Time-To-Live del datagramma IP (2)

• Quindi, indipendentemente dal nome, il TTL conta il numero di hop che il pacchetto può fare prima di giungere a destinazione o di essere scartato.

• I router controllano se il TTL è uguale a zero dopo il decremento, subito prima dell’inoltro. Se il destinatario del pacchetto è il router stesso questo non viene mai scartato (RFC 1812).

Page 25: From Scratch To Network - User mode linux

25

Protocolli di supporto

protocolli di supportoprotocolli che offrono servizi

esempi:

portano “dati utente” le loro pdu vengono imbustate” in accordo alla pila iso-osi

portano dati “di controllo” e non offrono direttamente servizi

la loro posizione nella pila è indipendente da come vengono imbustate le pdu

IP

tcp

ethernet ARP/RARP

ICMP protocolli di routing

12

4

IP

esempi:

viaggia in pdu di livello 3 (ip)

viaggiano in pdu di livello 2

3

1

2

43

Page 26: From Scratch To Network - User mode linux

26

Testing della rete:protocollo ICMP

Page 27: From Scratch To Network - User mode linux

27

Internet Control Message Protocol (ICMP)

• Definito da IETF rfc792 (Settembre 1981)• Scopi

– Notifica situazioni di errore o anomalie

(congestione e controllo di flusso dei datagram)– Supporta “debugging” interattivo della rete

( determinare cammini circolari o eccessivamente lunghi,

stimare il tempo di trasmissione da mittente a destinatario)

• ICMP è funzionale ad IP e viaggia in pacchetti IP• ICMP porta informazioni di controllo e di notifica di errori.

Non porta dati. I pacchetti ICMP viaggiano all’interno dei pacchetti IP.

• Le funzionalità fornite da ICMP sono accessorie al livello 3, quindi ICMP è considerato un protocollo di livello 3. ICMP è sempre presente a fianco di IP.

Page 28: From Scratch To Network - User mode linux

28

ICMP Message Types

• Echo Request• Echo Response• Destination Unreachable• Time Exceeded• Redirect (route change)• altri ...

Page 29: From Scratch To Network - User mode linux

29

Relazione tra ICMP e IP

frame header trailerframe data

ip header ip data

icmp hdr icmp data

regola 1: nessun messaggio ICMP viene generato a seguito ad eventuali errori rilevati su messaggi ICMP

regola 2: se il pacchetto viene frammentato solo il primo frammento può generare messaggi di errore ICMP

regola 3: i broadcast e multicast non generano ICMP

Page 30: From Scratch To Network - User mode linux

30

Messaggi di informazione

• ECHO_REQUEST e REPLY (richiesta di echo e relativa risposta) – controllo di raggiungibilità di un host

• TIMESTAMP e TIMESTAMP_REPLY come ECHO più informazioni su orario invio – misura di velocità del collegamento– sincronizzazione (approssimativa) dell’ora di sistema

• REDIRECT Un router intermedio si accorge che il percorso che il datgram sta seguendo non è ottimale: gli dice di cambiare percorso, ma nel frattempo inoltra il datagram originale verso la sua destinazione

Page 31: From Scratch To Network - User mode linux

31

Messaggi di errore

Questi messaggi di errore seguono un pacchetto scartato:

• TIME_ EXCEEDED (tempo scaduto)– il pacchetto ha TTL=0

• DESTINATION_UNREACHABLE– un gateway vede la rete destinazione a distanza infinita (net unreachable)– l'host non risponde ad una chiamata ARP (host unreachable)– l'host destinazione non conosce il protocollo nel pacchetto (protocol

unreachable)– il pacchetto non può essere frammentato (fragmentation needed and DF

set)

Page 32: From Scratch To Network - User mode linux

32

Messaggi di errore (2)

• PARAMETER_PROBLEM (problema con i parametri). – Il gateway non riesce ad interpretare il pacchetto ricevuto a causa di un valore

errato, possibile errore software

• SOURCE_QUENCH obsoleto (rallentamento, soffocamento della sorgente) – congestione di un gateway intermedio– host destinazione lento nell’acquisizione

Far riferimento alla RFC 792 per ulteriori approfondimenti inparticolare alle sezioni “description” per ciasun messaggio.

Page 33: From Scratch To Network - User mode linux

33

ping

• Invia una successione di pacchetti ICMP ECHO_REQUEST e attende la relativa risposta ECHO_REPLY

• Misura il tempo che intercorre tra l’invio e la ricezione di ogni pacchetto e riporta semplici statistiche

• Il comando ping fa parte della dotazione standard di tutte le macchine sia Unix che Windows anche se con sintassi leggermente diverse.

• L’indirizzo localhost viene risolto in un indirizzo IP normale che dall’output è 127.0.0.1

• Ulteriori informazioni: manuale in linea di ping (sui sistemi Unix: man ping)

Page 34: From Scratch To Network - User mode linux

34

ping

Esempio di ping con pacchetti persi

<utente@pascal ~> ping wilma.cs.brown.edu

PING wilma.cs.brown.edu: (128.148.19.15): 56 data bytes 64 bytes from 128.148.19.15: icmp_seq=1 ttl=239 time=1736 ms 64 bytes from 128.148.19.15: icmp_seq=2 ttl=239 time=1507 ms 64 bytes from 128.148.19.15: icmp_seq=6 ttl=239 time=1209 ms 64 bytes from 128.148.19.15: icmp_seq=8 ttl=239 time=762 ms 64 bytes from 128.148.19.15: icmp_seq=9 ttl=239 time=1235 ms 64 bytes from 128.148.19.15: icmp_seq=11 ttl=239 time=1566 ms 64 bytes from 128.148.19.15: icmp_seq=13 ttl=239 time=586 ms 64 bytes from 128.148.19.15: icmp_seq=14 ttl=239 time=352 ms 64 bytes from 128.148.19.15: icmp_seq=22 ttl=239 time=910 ms ^C ----wilma.cs.brown.edu PING Statistics---- 29 packets transmitted, 9 packets received, 68% packet loss round-trip min/avg/max = 352/1095/1736 ms • <utente@pascal ~>

Page 35: From Scratch To Network - User mode linux

35

traceroute

• Il comando traceroute permette di capire per quali router passano i pacchetti IP quando sono diretti ad una data destinazione.

• traceroute è compreso nella dotazione standard di tutte i sistemi Unix.

• Nei sistemi Windows il comando ha il nome tracert e sintassi leggermente differente.

• traceroute trova utilizzo anche nell’ambito dell’amministrazione della rete per isolare guasti o incoerenze nelle tabelle di routing.

• Dal punto di vista didattico la sua utilità è di mostrare il percorso dei pacchetti svelando un po’ della topologia nascosta di Internet.

Page 36: From Scratch To Network - User mode linux

36

traceroute

<utente@pascal ~>traceroute wilma.cs.brown.edu traceroute to wilma.cs.brown.edu (128.148.19.15), 30 hops max, 40 byte packets 1 gw1.fis.uniroma3.it (193.204.160.1) 3 ms 3 ms 2 ms 2 141.108.132.1 (141.108.132.1) 832 ms 967 ms 402 ms 3 mp4rm1.roma1.infn.it (141.108.127.6) 267 ms 106 ms 417 ms 4 atm-garrten-rm.infn.it (192.135.31.5) 100 ms 939 ms 839 ms 5 cnafint-ten34.infn.it (192.135.34.21) 1100 ms * 1056 ms 6 mix-serial3-4.Washington.mci.net (204.189.152.161) 618 ms * * 7 * core1-fddi-0.Washington.mci.net (204.70.2.1) 1249 ms * 8 * * * 9 wtn-bbn-nap.Washington.mci.net (206.157.77.218) 766 ms * * 10 * * chicago1-br1.bbnplanet.net (4.0.1.5) 857 ms 11 * * * 12 * boston1-br1.bbnplanet.net (4.0.2.245) 846 ms * 13 boston1-br2.bbnplanet.net (4.0.2.250) 680 ms * * 14 * * boston1-mr4.bbnplanet.net (4.0.44.19) 648 ms 15 providence-cr1.bbnplanet.net (4.0.45.106) 416 ms providence-cr1.bbnplanet.net (4.0.45.102) 1298 ms * 16 brown.bbnplanet.net (131.192.32.2) 1444 ms 615 ms 802 ms 17 * * * 18 * ftp.cs.brown.edu (128.148.19.15) 834 ms 435 ms <utente@pascal ~>

Page 37: From Scratch To Network - User mode linux

37

Esempio: traceroute

• Si ipotizzi di inviare un pacchetto, ad esempio un ECHO_REQUEST con TTL=n “basso”. Se il destinatario è troppo lontano l’ultimo router risponderà con un TIME_EXCEEDED, se il destinatario risponde con ECHO_REPLY allora è raggiungibile con n hop

• In realtà alcuni traceroute non utilizzano gli ECHO_REQUEST se non gli viene chiesto esplicitamente ma altri protocolli (UDP). Inoltre manda 3 pacchetti per ogni valore di n. Se non si osserva un TIME_EXCEEDED entro un tempo prestabilito traceroute visualizza un asterisco “*”

• Il manuale in linea di traceroute è estremamente interessante e mostra anche esempi di strani comportamenti da parte dei router

Page 38: From Scratch To Network - User mode linux

38

ttl=1

ttl=2

time exceeded (mitt: router1)

router1

time exceeded (mitt: router2)

ttl=1

router1

router1

router1

router2

router2

Esempio: traceroute (2)

Page 39: From Scratch To Network - User mode linux

39

ttl=3ttl=2

router1

router1 router2

router2

Esempio: traceroute (2)

ttl=1

Il messaggio di risposta dipende dal messaggio inviato

Page 40: From Scratch To Network - User mode linux

40

Strumenti di analisi della rete

Page 41: From Scratch To Network - User mode linux

41

Comando ifconfig

• Ifconfig è il comando principe per l'interazione con le interfacce di rete

• Esso consente di:

– controllare i dati di un'interfaccia di rete

– modificare lo stato di un'interfaccia

• In questa parte ci si concentra sull'uso di ifconfig per leggere lo stato di un'interfaccia di rete

Page 42: From Scratch To Network - User mode linux

42

Uso di ifconfig: un esempio pratico

# ifconfig eth0

eth0 Link encap:Ethernet HWaddr 00:10:5A:9D:88:AF

inet addr:192.168.1.3 Bcast:192.168.1.255 Mask:255.255.255.0

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:92 errors:0 dropped:0 overruns:0 frame:0

TX packets:52 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:14162 (13.8 KiB) TX bytes:6744 (6.5 KiB)

Interrupt:9 Base address:0xfc00

Page 43: From Scratch To Network - User mode linux

43

Analisi di un'interfaccia ethernet

# ifconfig eth0 #voglio tutte le informazioni sulla interfaccia di rete eth0

# se non sono root dovrò inserire il percorso completo /sbin/ifconfig

eth0 Link encap:Ethernet HWaddr 00:10:5A:9D:88:AF

# eth0 e' un'interfaccia di tipo ethernet

# il suo indirizzo MAC è 00:10:5A:9D:88:AF

inet addr:192.168.1.3 Bcast:192.168.1.255 Mask:255.255.255.0

# l'interfaccia è configurata con un indirizzo IP, ovvero 192.168.1.3

# l'indirizzo IP usato per i broadcast è 192.168.1.255

# la netmask vale 255.255.255.0

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

# i flag dell'interfaccia sono

# UP: l'interfaccia è configurata

# BROADCAST: si usa un canale broadcast

# RUNNING: l'interfaccia è attiva

Page 44: From Scratch To Network - User mode linux

44

Analisi di un'interfaccia ethernet (2)

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

# MULTICAST: l'interfaccia può essere usata per il multicast

# MTU: dimensione massima di un frame trasmissibile con questa interfaccia

# Metric: parametro usato per calcolare la lunghezza dei cammini che attraversano questa interfaccia (parametro usato nei calcoli per il routing)

RX packets:92 errors:0 dropped:0 overruns:0 frame:0

TX packets:52 errors:0 dropped:0 overruns:0 carrier:0

# dati sul traffico dell'interfaccia: quanti pacchetti abbiamo spedito e ricevuto e

collisions:0 txqueuelen:1000

# dati sul numero di collisioni avute sull'interfaccia (questo parametro fornisce una stima della congestione della rete)

RX bytes:14162 (13.8 KiB) TX bytes:6744 (6.5 KiB)

# dati trasmessi e ricevuti

Interrupt:9 Base address:0xfc00

# dati del dispositivo fisico (interrupt e indirizzo di I/O)

Page 45: From Scratch To Network - User mode linux

45

Altro esempio: un'interfaccia point-to-point

• Interfacia ppp (point to point protocol)

• Al posto del dispositivo fisico abbiamo un software che gestisce il prtocollo per le comunicazioni via modem.

# ifconfig ppp0

ppp0 Link encap:Point-to-Point Protocol

inet addr:151.30.166.243 P-t-P:151.6.143.246 Mask:255.255.255.255

UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1

RX packets:8 errors:0 dropped:0 overruns:0 frame:0

TX packets:7 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:3

Quali sono le differenze con il caso precedente?

Page 46: From Scratch To Network - User mode linux

46

Altro esempio: un'interfaccia point-to-point

# ifconfig ppp0

ppp0 Link encap:Point-to-Point Protocol

inet addr:151.30.166.243 P-t-P:151.6.143.246 Mask:255.255.255.255

UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1

RX packets:8 errors:0 dropped:0 overruns:0 frame:0

TX packets:7 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:3

# l'interfaccia usa il protocollo PPP (Point-to-Point Protocol)

# L'altro punto della connessione ha indirizzo IP 151.6.143.246

# Il canale e' di tipo point to point invece che broadcast

# non c'e' bisogno del protocollo ARP per risolvere gli indirizzi fisici (NOARP) perche' non ci sono indirizzi MAC associati alla scheda

ESERCIZIO: Guardiamo le interfacce eth0 e lo

Page 47: From Scratch To Network - User mode linux

47

Testing della rete:protocollo ARP

Page 48: From Scratch To Network - User mode linux

48

Protocollo ARP

• Le reti utilizzano gli indirizzi IP come elemento identificativo della sorgente dei dati

• Tuttavia a livello più basso le schede di rete ragionano in termini di indirizzi MAC

• Serve un sistema per stabilire una corrispondenza tra IP e MAC address

• Uso di protocolli appositi (ARP=Address Resolution Protocol) per interrogare le schede di rete remote al fine di conoscere l'indirizzo MAC corrispondente ad un dato indirizzo IP

• Uso di una cache per conservare le risoluzione ARP fatte di recente

Page 49: From Scratch To Network - User mode linux

49

Analisi della tabella ARP

• comando ARP consente di visualizzare il contenuto della cache ARP

• La cache ARP ci fornisce un'immagine dei nodi con cui la macchina ha interagito

riccardo@chrysophylax:~$ sudo arp # altrimenti /usr/sbin/arp

Address HWtype Hwaddress Flags Mask Iface

ns1.ing.unimo.it ether 00:01:03:11:6B:63 C eth0

info-gw.ing.unimo.it ether 00:0A:57:05:A0:00 C eth0

riccardo@chrysophylax:~$ ping brandy.ing.unimo.it

[...]

riccardo@chrysophylax:~$ sudo arp

Address HWtype Hwaddress Flags Mask Iface

brandy.ing.unimo.it ether 00:11:11:5A:EB:41 C eth0

ns1.ing.unimo.it ether 00:01:03:11:6B:63 C eth0

info-gw.ing.unimo.it ether 00:0A:57:05:A0:00 C eth0

Page 50: From Scratch To Network - User mode linux

50

Analisi della tabella di routing

• Contiene le informazioni su come un pacchetto deve essere instradato in base alla sua destinazione.

• Struttura dati chiave usata a livello di rete

• Comando principale per conoscere il contenuto della tabella di routing:

• Comando route

Page 51: From Scratch To Network - User mode linux

51

Esempio di uso del comando route

$ /sbin/route

Kernel IP routing table

Destination Gateway Genmask Flags Metric Ref Use Iface

192.168.84.0 * 255.255.255.0 U 0 0 0 vmnet8

192.168.99.0 * 255.255.255.0 U 0 0 0 vmnet1

155.185.48.0 * 255.255.255.0 U 0 0 0 eth0

default info-gw.ing.uni 0.0.0.0 UG 0 0 0 eth0

• 4 entries nella tabella

• Una entry per raggiungere ogni sottorete sui è connessa un'interfaccia di rete (prime 3 entry)

• Una entry per raggiungere “tutto il resto della rete”, ovvero il default gateway

Page 52: From Scratch To Network - User mode linux

52

Analisi delle connessioni attive e delle porte

• Utilizzo dello strumento netstat

• Netstat consente di capire

– Quali connessioni TCP sono attive

– Quali porte sono usate da server che attendono connessioni

– ...

• Noi vedremo solo alcune delle opzioni di netstat. Per uno studio più approfondito si rimanda alla man page del comando

Page 53: From Scratch To Network - User mode linux

53

Comando netstat

netstat [-tuelapn]

• -t mostra connessioni TCP

• -u mostra connessioni UDP

• NOTA: se non si mette ne -t ne -u netstat mostra tutte le socket, anche quelle di tipo unix (non IP)

• -e mostra informzioni aggiuntive

• -l mostra le socket in stato “listen”

• -a mostra le socket in qualsiasi stato esse siano

• NOTA: se non si mette ne -l ne -a vengono mostrate solo le socket relative a connessioni aperte

• -p mostra il programma associato a quelle socket

• -n mostra informazioni numeriche invece che simboliche per i numeri di porta

Page 54: From Scratch To Network - User mode linux

54

Esempio nell'uso del comando netstat

$ netstat -t

Active Internet connections (w/o servers)

Proto Recv-Q Send-Q Local Address Foreign Address State

tcp 0 0 localhost:38960 localhost:ipp ESTABLISHED

tcp 1 0 localhost:42807 localhost:ipp CLOSE_WAIT

tcp 0 0 localhost:ipp localhost:38960 ESTABLISHED

$ netstat -ltu

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address Foreign Address State

tcp 0 0 *:time *:* LISTEN

tcp 0 0 localhost:905 *:* LISTEN

tcp 0 0 *:discard *:* LISTEN

tcp 0 0 localhost:mysql *:* LISTEN

udp 0 0 *:xdmcp *:*

udp 0 0 localhost:sunrpc *:*

Page 55: From Scratch To Network - User mode linux

55

Intrpretazione dell'output

• Caso 1ProtoRecv-Q Send-Q Local Address Foreign Address Statetcp 0 0 localhost:ipp localhost:38960 ESTABLISHED

– cosa significa la coppia localhost:ipp in local address?

– cosa sinifica la coppia localhost:38960 in foreign address?

– Cosa e' lo stato ESTABLISEHED?

• Caso 2tcp 0 0 *:time *:* LISTENtcp 0 0 localhost:mysql *:* LISTEN

– Cosa sono gli * negli indirizzi IP

– Cosa cambia se metto localhost al posto di *?

• Caso 3udp 0 0 *:xdmcp *:*

– Perchè manca lo stato?