Linux e le reti – 1 Tiziano Ragazzi Classificazione delle reti in base alle dimensioni PAN – Personal Area Network: reti private formate da pochi dispositivi che comunicano tra loro con tecnologie a corto raggio; LAN - Local Area Network o reti locali: tipicamente sono reti private per l'interconnessione di computer ed altri apparati appartenenti ad un unico ente o azienda; MAN - Metropolitan Area Network o reti metropolitane: possono essere reti private o pubbliche e fornire servizi di vario tipo in ambito urbano, dall'interconnessione di computer, alla telefonia, alla TV via cavo; WAN - Wide Area Network o reti geografiche: in passato erano le reti dei grandi gestori tipicamente pubblici che fornivano servizi e connettività a livello nazionale; oggi, dopo la deregulation, possono anche appartenere a privati ed offrire connettività a livello mondiale. Classificazione delle reti in base alle dimensioni La differenza tra questi tre tipi di reti in termini di distanza coperta è rappresentata nella tabella seguente (puramente indicativa): Area coperta Distanza Tipo di rete Stanza 10 m PAN o LAN Edificio 100 m LAN Campus 1 km LAN Città 10 km MAN Area metropolitana 100 km MAN Stato, continente, pianeta, … >= 1000 km WAN Un esempio L’importanza di un sistema “aperto” Cioè qualunque calcolatore dev’essere in grado di comunicare con qualunque altro indipendentemente dalla sua architettura e dal suo costruttore. Un sistema aperto ha infatti alcuni importanti vantaggi: favorire la diffusione delle reti di calcolatori tramite l'interconnessione delle reti esistenti; rendere possibile agli utenti e ai costruttori di reti approvvigionarsi da qualunque produttore, favorendo la concorrenza. Per realizzare reti di calcolatori che siano sistemi aperti è necessario: Delineare un modello di riferimento per la comunicazione fra calcolatori che sia base comune di questi sistemi; giungere alla definizione di standard universalmente accettati che specifichino in modo preciso le funzioni che sono necessarie per realizzare la comunicazione. Il perché dei “modelli” La comunicazione fra calcolatori di tipo diverso è in generale un problema abbastanza complesso. Per semplificare la progettazione dal punto di vista tecnico di una rete di calcolatori risulta quindi conveniente suddividere il problema complessivo in una serie di sottoproblemi ben confinati, chiarendo poi come essi debbano interagire. Modello ISO-OSI I 7 strati del modello ISO-OSI strato fisico; ha come compito principale effettuare il trasferimento fisico delle cifre binarie tra i due sistemi in comunicazione; strato di collegamento (data link); la sua funzione fondamentale è quella di rivelare e recuperare gli errori trasmissivi che potrebbero essersi verificati durante il trasferimento fisico; strato di rete (network); rende invisibile allo strato superiore il modo in cui sono utilizzate le risorse di rete per la fase di instradamento; strato di trasporto (transport); fornisce le risorse per il trasferimento trasparente di informazioni; strato di sessione (session); assicura la possibilità di instaurare un colloquio tra due sistemi; strato di presentazione (presentation); è interessato alla sintassi e alla semantica delle informazioni da trasferire; strato di applicazione (application); ha lo scopo di fornire ai processi residenti nei due sistemi in comunicazione i mezzi per accedere all'ambiente OSI. Modello TCP/IP Due livelli di pari grado posti su due calcolatori differenti comunicano tra loro tramite un protocollo, mentre due livelli adiacenti della stessa macchina comunicano tra loro tramite interfaccia. L'obiettivo di un livello è quello di fornire servizi al livello superiore nascondendo a questo il modo in cui i servizi sono realizzati. Application (http, telnet, snmp, smtp, nfs, ftp, smb) Transport (TCP, UDP) Network (IPv4/IPv6) Data link Physical layer Comunicazione HTTP Application Layer Transport Layer Network Layer Data Link Layer Physical Layer HTTP Request Application Layer TCP HTTP Request Transport Layer IP TCP HTTP Ethernet IP Request TCP HTTP Request Network Layer Data Link Layer Physical Layer HTTP Request TCP HTTP Request IP TCP HTTP Ethernet IP Request TCP HTTP Request Confronto tra i modelli OSI Model 7 Application 6 Presentation 5 Session TCP/IP Model Application Telnet 4 Transport Transport Layer 3 Network Network 2 Data link Data link 1 TCP/IP Protocol Suite FTP Physical DNS TCP RIP SNMP UDP IGMP ICMP IP ARP Ethernet Physical SMTP Token Ring Frame Relay ATM Transport Layer Definisce 2 protocolli standard di trasporto: TCP e UDP TCP è un affidabile protocollo per il trasferimento di dati Orientato alla connessione Prevede il recupero degli errori e il controllo del flusso UDP implementa un protocollo non affidabile Privilegia la velocità di connessione Transport Layer TCP e UDP introducono il concetto di porta e di socket Specificando un numero di porta assieme ai dati TCP/UDP, possiamo ottenere il multiplexing Multiplexing consente che numerose connessioni di rete possano aver luogo su uno stesso indirizzo IP Il numero della porta, assieme agli indirizzi sorgente e destinazione dei dati, costituiscono il socket. Ad esempio una connessione http sull’ip 192.168.100.1 ha il seguente socket 192.168.100.1:80 Porte comuni e servizi associati: FTP Ssh telnet SMTP http POP3 https 21 and 20 22 23 25 80 110 443 Network Layer Il compito del network layer è la trasmissione di pacchetti tra due host arbitrari, che in generale non sono direttamente connessi (ovvero non hanno un collegamento diretto tra di loro) I principali protocollo appartenente a questo strato sono l’IP (o IPv4) e la sua evoluzione IPv6 L’IP garantisce l’inoltro del pacchetto (ovvero ricevere un pacchetto su una porta, immagazzinarlo e ritrasmetterlo su un'altra), la frammentazione (se un pacchetto ricevuto ha una dimensione eccessiva per la rete su cui deve essere trasmesso, il livello di rete lo divide in frammenti e si occupa di riassemblare i frammenti ricevuti al momento della consegna) e l’instradamento o routing (ovvero determinare il percorso per la trasmissione dei dati attraverso la rete) Il pacchetto IP Un datagramma IP è costituito al più da 64 kB di cui i primi da 20 a 60 byte costituiscono l’intestazione. Particolarmente importanti sono i campi “Identificativo” che permette di riassemblare un datagramma frammentato, “TTL (Time To Live)” necessario per evitarne la persistenza indefinita sulla rete nel caso in cui non si riesca a recapitarlo al destinatario, “Protocollo” indica il protocollo di trasporto associato. Struttura dell’indirizzo IPv4 E’ un numero composto da 32 bit IP binario: 11000000.10101000.11011100.00000001 IP decimale: 192 . 168 . 220 . NOTA : con 8 bit si può al massimo rappresentare in decimale il numero 255 1 Struttura dell’indirizzo IP Il Net-ID identifica la rete, mentre l'Host-ID identifica l'host all'interno della rete. L'indirizzo con i bit relativi alla parte di host posti a zero risulta essere l'indirizzo della rete in cui si trova l'host, mentre quello con i bit di host posti tutti a uno indica l'indirizzo broadcast di quella rete, cioè quello usato per inviare pacchetti a tutti gli host della rete. La separazione tra il blocco Net-ID e Host-ID avviene per mezzo della Subnet Mask. La SM è un numero binario di 32 bits, ovvero 4 byte separati da un punto. Ad esempio 11111111.11111111.00000000.00000000 255 . 255 . 0 . 0 Notare che il blocco degli “zeri” segue il blocco degli ”uno” senza mescolanza tra essi. Esempio Esempio di calcolo dell’indirizzo di rete, di broadcast e n° di hosts possibili IP 132.125.18.36 SM 255.255.0.0 Indirizzo di rete: si fa l’AND logico tra la rappresentazione binaria di IP e SM, otteniamo 132.125.0.0 Tutti gli host appartenenti alla stessa rete logica devono avere lo stesso indirizzo di rete Indirizzo di broadcast: si fa l’OR logico con il complemento della SM (molto più semplicemente si pongono a 1 tutti i bit della sezione HostID). Otteniamo 132.125.255.255 Calcolo del n° di hosts possibili: si contano gli n zeri della SM (in questo caso n=16); si fa 2n-2. Nel nostro caso possiamo disporre di 216-2=65534 hosts nella nostra rete. Gli indirizzi IP disponibili andranno da quello immediatamente successivo all’indirizzo di rete, cioè 132.125.0.1, a quello precedente all’indirizzo di broadcast, cioè 132.125.255.254. Esercizio: IP 194.116.10.19 SM 255.255.255.248 trovare i parametri di cui sopra Attenzione Due computer,anche se connessi fisicamente alla stessa rete, possono comunicare direttamente solo se hanno lo stesso indirizzo di rete ed hanno interfacce di rete dello stesso tipo Classi di indirizzi IP – Schema classico A 0 network id Host ID B 10 C 110 D 1110 Multicast Address E 11110 Unused at present network id Host ID network id 8 16 Host ID 24 32 Classi di indirizzi IP – Schema classico Suddivisione degli indirizzi Indirizzi IP Pubblici Sono unici al mondo in Internet e sono segnati da enti internazionali GARR / IANA Privati Sono indirizzi autorizzati per le reti private; vengono eliminati in Internet Indirizzi privati e per uso speciale Classe Subnet mask Indirizzo di partenza Indirizzo finale Funzione C B A A 255.255.255.0 192.168.0.0 192.168.255.255 IP privati 255.255.0.0 172.16.0.0 172.31.255.255 IP privati 255.0.0.0 10.0.0.0 10.255.255.255 IP privati 255.0.0.0 0.0.0.0 0.0.0.255 Indirizzi zero A 255.0.0.0 127.0.0.0 127.255.255.255 Localhost loopback B C 255.255.0.0 169.254.0.0 169.254.255.255 Zeroconf 255.255.255.0 198.18.0.0 198.19.255.255 Benchmark Subnetting La rigidità dello schema NetID-HostID proponeva classi A e B troppo grosse o classi C troppo piccole. Se un’azienda doveva indirizzare 2000 hosts, necessitava di una classe B (65534 hosts), con uno spreco di oltre di 63000 indirizzi. Vi è stata quindi una grande richiesta di classi A e B (in gran parte già assegnate) e una relativamente bassa richiesta di classi C. Subnetting Soluzione: dato un indirizzo di rete di qualsiasi classe, la lunghezza del prefisso (NetID) può essere estesa arbitrariamente, non deve più essere necessariamente un multiplo di 8 bit. Si ricava un campo SubnetID sfruttando una parte arbitrariamente lunga dell’HostID Net Id Net Id Host Id Subnet Id Host Id Terminologia NetID: porzione dell’indirizzo la cui lunghezza è determinata dalla maschera della classe a cui l’indirizzo appartiene. Es. 192.135.23.5/255.255.255.252, NetID = 192.135.23.0 SubnetID: porzione di lunghezza variabile dell’indirizzo che segue il NetID e la cui lunghezza è definita dalla differenza fra il prefisso e la lunghezza del NetID. Es. 192.135.23.0/255.255.255.252, la lunghezza del SubNetID è di 6 bit Indirizzo di Sottorete: l’indirizzo ottenuto dalla concatenazione (NetID:SubnetID) ponendo nella rimanente parte HostID una sequenza di 0 e accompagnato dal prefisso Indirizzo di rete: sinonimo di Sottorete. Se il subnetting non è utilizzato allora SubnetID è nullo, e quindi l’indirizzo di rete corrisponde al NetID Indirizzo dell’host: la concatenazione (NetID:SubnetID:HostID) Esempio Dato un indirizzo di CLASSE B applichiamo il subnetting per ottenere reti da circa 2000 host l’una: indirizzo senza subnetting: 137.204.0.0 maschera standard: 255.255.0.0 ==>65534 indirizzi , [137.204.0.1 , 137.204.255.254] 211 = 2048, quindi useremo 11 bit per l’HostID e 21 complessivi per il NetID-SubnetID==> SM 255.255.248.0 quante subnet: 25-2=30 (la prima e l’ultima non sono utilizzabili) Indirizzo di subnet range di indirizzi 137.204.8.0 [137.204.8.1-137.204.15.254] ……………… ………………………… 137.204.240.0 [137.204.240.1-137.204.247.254] Indirizzamento senza classi –CIDR Classless Inter-Domain Routing Problema: una rete di classe C corrisponde a 256 indirizzi IP Molte organizzazioni hanno bisogno di piu’ indirizzi Soluzione: assegnare ad una stessa organizzazione blocchi contigui di indirizzi in classe C Esempio: l’organizzazione X riceve i tre blocchi contigui 220.123.16.x, 220.123.17.x e 220.123.18.x 768 indirizzi disponibili Richiederebbe numerosi instradamenti diversi per raggiunger una rete Indirizzamento senza classi –CIDR Classless Inter-Domain Routing Come rappresentare il blocco di indirizzi assegnati? Informazioni necessarie: indirizzo + basso del blocco e Numero di Blocchi In pratica: CIDR non prevede che gli indirizzi di rete debbano necessariamente essere di classe C CIDR usa le seguenti informazioni: Valore a 32 bit dell’indirizzo piu’ basso del blocco Maschera a 32 che funziona come una maschera di sottorete standard Notazione CIDR -esempio Prefisso della rete + No. bit per il prefisso Esempio: per un blocco di indirizzi da 220.16.128.0 a 220.16.255.255: 220.16.128.0/17 11111111.11111111.10000000.00000000 In questa situazione abbiamo 215-2=32766 ip disponibili (il 220.16.128.0 è il network address, il 220.16.255.255 è il broadcast address) Network Manager In ambiente grafico Network Manager E’ il tool di configurazione predefinito nelle principali distribuzioni che usano il desktop manager Gnome. Per configurare le interfacce di rete (cablate e/o wireless) è sufficiente cliccare col tasto destro sull’icona in alto a destra e scegliere Modifica Connessioni Attraverso il Network Manager è possibile anche configurare connessioni VPN, connessioni Internet Mobile 3G, modem ADSL Network Manager I file di configurazione del Network Manager risiedono in /etc/NetworkManager in particolare i file di configurazione delle singole interfacce di rete sono posizionati in /etc/NetworkManger/systemconnections (non configurare manualmente) Talvolta può essere necessario disabilitare il Network Manager per procedere a una configurazione manuale delle interfacce service network-manager stop e per riattivarlo service network-manager start Denominazione classica delle interfaccedi rete lo – Interfaccia di loopback; è una interfaccia virtuale essenziale per il funzionamento del sistema. Ha ip in classe 127.0.0.0/8 solitamente 127.0.0.1 ethx (eth0, eth1, ..) – Interfacce fisiche Ethernet I nomi del tipo eth0:0 eth0:1 indicano + indirizzi ip associati alla stessa interfaccia (alias ip) pppx (ppp0, ppp1…) – Interfacce fisiche Point-to-Point usate ad esempio per i modem analogici tunx (tun0, tun1,..) – Interfacce virtuali usate da openvpn wlanx (wlan0,..) – Interfacce wireless. Talvolta tali interfacce di rete vengono denominate come quelle ethernet (eth0,..) ATTENZIONE: LE PRECEDENTI DENOMINAZIONI SONO PURAMENTE INDICATIVE E POSSONO ESSERE DIVERSE A SECONDA DELLA DISTRO UTILIZZATA Ifconfig La linea di comando rimane uno strumento elegante ed efficiente soprattutto quando si accede da remoto. Per la configurazione delle interfacce di rete linux ha ifconfig ifconfig -a mostra la configurazione IP di tutte le interfacce ifconfig eth0 192.168.0.1 netmask 255.255.255.128 broadcast 192.168.0.127 up assegna l'indirizzo IP 192.168.0.1 e attiva l'interfaccia, creando una mask 192.168.0.0/25. ifconfig eth0:1 192.168.0.1 up assegna l'indirizzo IP 192.168.0.1 alla eth0:1 e attiva l'interfaccia. Eseguendo questo comando di fatto assegniamo un'altro indirizzo IP alla interfaccia. ifconfig eth0 down disabilita eth0 Rendere le modifiche permanenti I comandi ifconfig dati da consolle, non sono permanenti (al riavvio la configurazione è persa) Per renderli permanenti si configura il file /etc/network/interfaces, ad esempio # The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet static address 172.16.1.36 netmask 255.255.255.0 network 172.16.1.0 broadcast 172.16.1.255 gateway 172.16.1.1 up route add -net 10.8.0.0 netmask 255.255.255.0 gw 172.16.1.36 Ricaricare la configurazione col comando /etc/init.d/networking restart Rendere le modifiche permanenti auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 192.168.1.36 netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255 gateway 192.168.1.1 auto eth1 iface eth1 inet dhcp In questo caso abbiamo l’interfaccia eth1 posta in una lan nella quale è presente un server dhcp (cioè un server che configura automaticamente le interfacce dei pc sulla stessa rete) Rotte statiche Nell’intestazione di ogni pacchetto ip c’è l’indirizzo ip del destinatario del pacchetto. Se il pacchetto è destinato a una diversa rete/sottorete (diverso net_id) del mittente, il pacchetto è inviato a una macchina prestabilita detto default gateway. In talune circostanze può essere necessario ridefinire il default gateway o definire un nuovo gateway per destinatari diversi Route Il comando linux route consente di definire Alcuni esempi: route Visualizza la tabella di routing route add default gw 192.168.12.1 Aggiunge l'host 192.168.12.1 come gateway di default route del default Cancella il default gateway route add -net 192.168.101.0 netmask 255.255.255.0 gw 192.168.101.102 Aggiunge la route 192.168.101.0 alla routing table indicando la maschera di rete 255.255.255.0 e il gateway 192.168.101.102