Chapter 22. Fondamenti del collegamento in rete

Table of Contents

22.1. TCP/IP: un' introduzione
22.2. IPv6 – l'Internet di prossima generazione
22.3. Configurazione manuale della rete
22.4. L'integrazione nella rete
22.5. Routing sotto
22.6. SLP — rilevare i servizi sulla rete
22.7. DNS: Domain Name System
22.8. NIS: Network Information Service
22.9. LDAP — Un servizio directory
22.10. NFS – file system dislocati
22.11. DHCP
22.12. Sincronizzare l'orario con xntp

Abstract

Linux, che è nato grazie all'Internet, offre tutti gli strumenti di rete necessari per essere integrato in diverse strutture di rete. In questo capitolo, vi presentiamo il protocollo TCP/IP usato solitamente da Linux, con tutti i suoi servizi e le sue proprietà. Vi mostreremo come realizzare sotto e l'aiuto di l'accesso alla rete utilizzando una scheda di rete. Parleremo dei file centrali di configurazione e verranno illustrati alcuni dei tool principali. Dato che la configurazione di una rete può assumere diversi gradi di complessità, in questo capitolo descriveremo solo i meccanismi di base. Anche la connessione Internet via PPP tramite Modem, ISDN o DSL si lascia configurare comodamente con e viene illustrata nel Manuale dell'utente.

22.1. TCP/IP: un' introduzione

Linux ed altri sistemi operativi Unix usano il cosiddetto protocollo TCP/IP: in fondo si tratta di un gruppo di protocolli che offre svariati servizi. TCP/IP deriva da uno sviluppo di applicazioni in ambito militare e, nella forma usata oggi, è stato definito circa nel 1981 in un cosiddetto RFC Request for comments; si tratta di documenti che descrivono i diversi protocolli Internet ed il procedimento da seguire per l'implementazione del sistema operativo e delle applicazioni. Potete consultare direttamente questi documenti RFC tramite il web: l'URL è: http://www.ietf.org/. Nel frattempo, sono state apportate delle migliorie al protocollo TCP/IP, ma il "nocciolo" del protocollo è rimasto invariato dal 1981.

[Tip]Tip

I documenti RFC spiegano la struttura dei protocolli Internet. Se volete approfondire le vostre conoscenze su un determinato protocollo, i documenti RFC sono la fonte giusta. http://www.ietf.org/rfc.html

I servizi riportati nella tabella Table 22.1, “Diversi protocolli del gruppo di protocolli TCP/IP”, consentono lo scambio di dati fra due sistemi Linux tramite TCP/IP:

Table 22.1. Diversi protocolli del gruppo di protocolli TCP/IP

Protocollo

Descrizione

TCP

Transmission control protocol: protocollo orientato alla connessione. Dal punto di vista dell'applicazione, i dati da trasmettere vengono inviati sotto forma di flusso di dati e convertiti dal sistema operativo stesso nel formato adatto alla trasmissione. I dati arrivano all'applicazione-meta che si trova sul computer-meta nella sequenza in cui sono stati spediti. TCP assicura che non vadano persi dei dati durante la trasmissione, e che non vengano mescolati. TCP viene usato dove è saliente la sequenza dei dati.

UDP

User Datagram protocol: un protocollo non orientato alla connessione: i dati vengono spediti in pacchetti, ed i pacchetti di dati vengono generati dall'applicazione. Non è garantito che i dati arrivano nella sequenza esatta al destinatario, e non è escluso che si possa verificare la perditadi singoli pacchetti. UDP è adatto per applicazioni orientati al set di dati, e ha tempi di latenza inferiori al TCP.

ICMP

Internet control message protocol: fondamentalmente, questo non è un protocollo pensato per gli utenti, ma uno speciale protocollo di controllo che trasmette comunicazioni di errori, ed è in grado di controllare il comportamento dei sistemi coinvolti nella trasmissione di dati tramite TCP/IP. Inoltre, con ICMP, viene messo a disposizione anche uno speciale “modo echo ” che può venire esaminato con il programma ping.

IGMP

Internet group management protocol: questo protocollo regola il comportamento dei sistemi che usano il multicast IP. Purtroppo, in questa sede non possiamo entrare nei dettagli del multicasting IP.

Quasi tutti i protocolli hardware lavorano a pacchetti. I dati da trasmettere vengono riuniti in piccoli “pacchetti”, e non possono venire spediti in una volta sola. Per questo motivo, TCP/IP lavora con piccoli pacchetti di dati. La dimensione massima di un pacchetto TCP/IP è di appena 64 Kbyte. Normalmente, i pacchetti sono molto più piccoli, poiché l'hardware della rete è un fattore limitante: ad esempio, le dimensioni di un pacchetto di dati su Ethernet sono limitate a 1500 byte. La grandezza del pacchetto TCP/IP viene limitata di conseguenza (se i dati vengono trasmessi tramite Ethernet). Nel caso si vogliono trasmettere più dati, il sistema operativo deve inviare più pacchetti di dati.

22.1.1. Modello a strati

Tramite IP (Internet protocol) si ha una trasmissione di dati non garantita. Il TCP (Transmission control protocol) poggia in un certo senso sul sottostante IP, volto a garantire una trasmissione sicura dei dati. IP a sua volta poggia sul protocollo sottostante che dipende dall'hardware, p.es. Ethernet. Così si parla di “modello a strati”. A riguardo, osservate anche la figura Figure 22.1, “Modello a strati semplificato per TCP/IP”.

Figure 22.1. Modello a strati semplificato per TCP/IP

Modello a strati semplificato per TCP/IP

Nella figura vengono menzionati degli esempi per il rispettivo strato. Come vedete, gli strati sono disposti secondo dei “livelli di astrazione”; lo strato inferiore è molto vicino all'hardware. Lo strato superiore invece, astrae quasi completamente dall'hardware sottostante. Ogni strato ha una funzione speciale che si deduce quasi giàdal nome. Ad esempio, la rete usata (p.es. Ethernet) viene rapprensentata dallo strato di trasmissione dei bit e dallo strato di sicurezza.

  • Mentre lo strato 1 è relazionato al tipo di cavi, al tipo e codifica di segnale e cose simili, lo strato 2 regola il procedimento di accesso (quale computer può quando inviare dei dati?) e la correzione degli errori (sicurezza dei dati, ecco perché strato di sicurezza). Lo strato 1 viene chiamato anche strato di trasmissione dei bit.

  • Lo strato 3 a sua volta, strato di mediazione è responsabile per la trasmissione dei dati su lunghe distanze. Lo strato di mediazione, assicura che i dati arrivino al destinatario giusto.

  • Lo strato 4, lo strato di trasporto, si occupa dei dati dell'applicazione: assicura che i dati arrivino a destinazione nella sequenza giusta, e che non vada perso niente. Lo strato di sicurezza controlla solo che i dati in entrata siano corretti. Lo strato di trasporto evita che vadano “persi” dei dati per strada.

  • Nello strato 5 infine, si ha l'elaborazione dei dati tramite l'applicazione stessa.

Affinché ogni strato possa adempiere alla sua funzione, si devono aggiungere al pacchetto determinate informazioni dallo strato corrispondente. Ciò avviene nell'header, l'intestazione del pacchetto di dati. Ogni strato aggiunge, all'inizio del pacchetto in via di formazione, un piccolo blocco di dati, la cosiddetta “testata del protocollo” (ingl. protocol header). Se osserviamo un qualsiasi pacchetto di dati TCP/IP in viaggio su un cavo Ethernet, si vedaamo che è strutturato come rappresentato nella figura Figure 22.2, “Pacchetto TCP/IP nell'Ethernet”.

Figure 22.2. Pacchetto TCP/IP nell'Ethernet

Pacchetto TCP/IP nell'Ethernet

Come vedete, il mondo non è ancora perfetto e, soprattutto, non privo di eccezioni. La somma di controllo dello strato di sicurezza si trova alla fine del pacchetto e non all'inizio: la cosa comunque comporta una semplificazione per l'hardware di rete. In un pacchetto, la quantità massima possibile dei dati utente (per quello che riguarda la rete Ethernet) è di 1460 byte.

Se dunque, un'applicazione invia dei dati tramite una rete, questi attraversano i singoli strati che sono tutti implementati nel kernel di Linux (ad eccezione dello strato 1: la scheda di rete). Ogni strato deve trattare i dati in modo da poterli passare di volta in volta allo strato inferiore. L'ultimo strato infine, ha il compito di spedire i dati. Al ricevimento dei dati, le cose si svolgono all' incontrario; vengono eliminate le testate dei protocolli di ogni strato e rimangono i dati utente (proprio come quando si sbuccia una cipolla). Alla fine, lo strato 4 deve mettere a disposizione i dati per le applicazioni sul computer-meta. Durante questo processo uno strato comunica sempre solo con quello direttamente superiore o inferiore. Per un'applicazione, non fa perciò differenza se i dati vengano trasmessi tramite una rete FDDI di 100 MBit/s o tramite un modem di 56 kbit/s: d'altra parte, per la trasmissione dei dati non importa quali dati vengano trasmessi, purché siano impacchettati nel modo giusto.

22.1.2. Indirizzi IP e routing

[Important]Important

Nei seguenti paragrafi diamo una descrizione di reti IPv4. Per avere delle informazioni riguardanti IPv6 consultate la sezione Section 22.2, “IPv6 – l'Internet di prossima generazione”.

22.1.2.1. Indirizzi IP

Ogni computer su Internet ha un indirizzo di 32 bit univoco. Normalmente, questi 32 bit o 4 byte vengono scritti come mostrato nella seconda riga della tabella Example 22.1, “Sintassi di un indirizzo IP”:

Example 22.1. Sintassi di un indirizzo IP

Indirizzo IP (binario):   11000000 10101000 00000000 00010100
Indirizzo IP (decimale):      192.     168.       0.      20

I quattro byte vengono scritti l'uno accanto all'altro nel modo decimale, e separati da un punto. L'indirizzo IP viene assegnato ad un computer o ad un'interfaccia di rete, e non può quindi venire assegnato nuovamente. Ci sono eccezioni alla regola che comunque non ci interessano nelle seguenti considerazioni.

Anche la scheda Ethernet possiede un proprio indirizzo: si tratta del cosiddetto indirizzo MAC (ingl. Media access control), un indirizzo lungo 48 bit, unico in tutto il mondo e memorizzato dal produttore della scheda di rete nell'hardware. Lo svantaggio di questo indirizzo fisso di fabbrica consiste nel fatto che gli indirizzi MAC non formano un sistema gerarchico, vengono piuttosto assegnati in modo più o meno casuale, e quindi non sono adatti all'indirizzamento di host remoti. L'indirizzo MAC svolge però un ruolo di primo piano nella comunicazione tra gli host in una rete locale (e rappresenta la parte principale della testata del protocollo dello strato 2).

Ed ora torniamo agli indirizzi IP: i punti ci indicano già che gli indirizzi IP formano un sistema gerarchico. Fino alla metà degli anni 90, questi indirizzi erano suddivisi in classi: questo sistema si dimostrò però troppo inflessibile, e questa suddivisione venne subito abbandonata. Ora si usa il “routing libero” (CIDR classless inter domain routing).

22.1.2.2. Maschere di rete e routing

Poiché, in un primo tempo, il computer con l'indirizzo IP non può sapere dove trovare il computer con l'indirizzo IP , si escogitò la maschera rete.

Detto in parole povere, in un computer con indirizzo IP, la (sotto)maschera di rete definisce cosa si trova “dentro ” e cosa si trova “fuori” la rete locale. I sistemi che si trovano “dentro” (in gergo “nella stessa sottorete”) possono essere indirizzati direttamente; quelli invece che si trovano “fuori” (“che quindi non sono nella stessa sottorete”) della rete locale, devono essere indirizzati tramite un gateway o router. Dato che ogni interfaccia di rete può avere un proprio indirizzo IP, avrete intuito che la faccenda può diventare davvero complessa.

Ecco cosa avviene nel computer, prima che possa venire “instradato” un pacchetto: l'indirizzo meta viene collegato bit dopo bit con la maschera rete tramite l'operatore logico AND; successivamente anche l'indirizzo del mittente viene collegato bit dopo bit con la maschera di rete tramite l'operatore logico AND (vd. tabella Example 22.2, “Abbinare indirizzo IP con la maschera di rete”). Di regola, se sono disponibili più interfacce di rete, vengono controllati tutti i possibili indirizzi di invio.

Vengono abbinati i risultati ottenuti con l'operatore logico AND. Se i risultati sono esattamente concordanti, vuol dire che il sistema meta si trova nella stessa sottorete, in caso contrario esso dovrà essere indirizzato tramite un gateway. Ciò significa che più bit “1 ” si trovano nella maschera di rete, meno sistemi possono venire indirizzati direttamente, e che dunque si dovrà passare per un gateway. A scopo esplicativo abbiamo elencato alcuni esempi nella tabella Example 22.2, “Abbinare indirizzo IP con la maschera di rete”.

Example 22.2. Abbinare indirizzo IP con la maschera di rete

Indirizzo IP (192.168.0.20):       11000000 10101000 00000000 00010100
Maschera di rete  (255.255.255.0): 11111111 11111111 11111111 00000000
______________________________________________________________________
Risultato (binario):               11000000 10101000 00000000 00000000
Risultato (decimale):                   192.     168.       0.       0

Indirizzo IP (213.95.15.200):      11010101 10111111 00001111 11001000
Maschera di rete (255.255.255.0):  11111111 11111111 11111111 00000000
--------------------------------------------------------------
Risultato (binario):               11010101 10111111 00001111 00000000
Risultato (decimale):                   213.      95.      15.       0

Anche la maschera di rete (come già gli indirizzi IP) viene scritta in numeri decimali divisi da punti, e poiché la maschera di rete ha un valore di 32 bit, si hanno 4 valori numerici l'uno accanto l'altro. L'utente deve stabilire quale host debba fungere da gateway o quali spazi di indirizzi debbano essere raggiungibili tramite quale interfaccia di rete.

Per esempio, di solito tutti i sistemi collegati allo stesso cavo Ethernet, si trovano nella stessa sottorete, e sono indirizzabili in modo diretto. Anche se l'Ethernet è suddiviso per via di cosiddetti switch o bridge, questi sistemi continuano ad essere indirizzabili in modo diretto.

Ethernet, anche se vantaggioso da un punto di vista del costo, non è indicato per coprire distanze lunghe, quindi dovrete inoltrare i pacchetti IP ricorrendo ad un altro tipo di hardware (p.es. FDDI o ISDN): a tal fine si usano dei dispositivi chiamati router o gateway. Naturalmente, anche un computer Linux può fungere da router o gateway; basta impostare l'opzione relativa che è ip_forwarding.

Se avete configurato un gateway, il pacchetto IP viene inviato al gateway appropriato che a sua volta cerca di inoltrarlo (sempre sulla base dello stesso schema). Ciò viene ripetuto su una serie di computer, finchè il pacchetto non raggiunge la sua destinazione o scade il TTL time to live del pacchetto.

Table 22.2. Indirizzi speciali

Tipo di indirizzo

Descrizione

Indirizzo base della rete

Si tratta dell'indirizzo della maschera di rete abbinato ad un indirizzo qualsiasi preso dalla rete: cioé ciò che è raffigurato nell'esempio  Example 22.2, “Abbinare indirizzo IP con la maschera di rete” sotto Risultato. Questo indirizzo non può venire assegnato ad alcun computer.

L'indirizzo broadcast

Vuol dire: “contatta tutti i computer in questa sottorete”. Per crearlo, si inverte in modo binario l'indirizzo della maschera di rete ed abbinato all'indirizzo di base della rete con l'operatore logico OR. Dal suddetto esempio risulta quindi 192.168.0.255. Chiaramente, neanche questo indirizzo può essere attribuito ad un computer.

Il local host

L'indirizzo 127.0.0.1 è attribuito permanentemente su ogni computer al cosiddetto “dispositivo di loopback”. Con questo indirizzo si può creare un collegamento sul proprio computer.

Poiché, però, in tutto il mondo, gli indirizzi IP devono essere biunivoci, non si possono inventare indirizzi qualsiasi. Per poter però creare ugualmente una rete sulla base dell'IP, esistono tre aree di indirizzi da poter usare senza restrizione alcuna: con esse però non sarà possibile (senza usare qualche trucco) creare un collegamento verso l'esterno ovvero raggiungere l'Internet; su Internet, infatti, questi indirizzi non vengono inoltrati.

Si tratta delle aree di indirizzi definite nell' RFC 1597:

Table 22.3. Aree indirizzi IP privati

Rete/ maschera di rete

Area

10.0.0.0/ 255.0.0.0

10.x.x.x

172.16.0.0/ 255.240.0.0

172.16.x.x - 172.31.x.x

192.168.0.0/255.255.0.0

192.168.x.x

22.1.3. DNS – Domain Name System

Il DNS (Domain Name System) vi risparmia di dover tenere a mente gli indirizzi IP: grazie al DNS, un indirizzo IP viene assegnato ad uno o più nomi, e viceversa un nome viene assegnato ad un indirizzo IP. In Linux questo processo viene normalmente eseguito da un software speciale di nome bind. Il sistema che esegue questa conversione si chiama server dei nomi . I nomi sono disposti in un ordine gerarchico, e le singoli parti del nome sono divisi da punti. La gerarchia dei nomi, però, non dipende dalla gerarchia degli indirizzi IP sopra descritta.

Osserviamo da più vicino un nome completo, p.es. laurent.suse.de scritto nel formato nomehost.dominio. Un nome completo (in gergo “Fully qualified domain name” o FQDN) è composto dal nome del sistema accompagnato dal dominio. Il dominio si compone di una parte liberamente scelta (nel nostro esempio: suse e di un cosiddetto top level domain, TLD.

L'attribuzione dei TLD è un po' intricata. In America vengono p.es. usati TLD composti da 3 lettere, mentre nel resto del mondo vengono sempre usate le denominazioni ISO dei paesi, composte da due lettere. Dal 2000 vi sono inoltre ulteriori TLD per determinati settori con spesso più di tre lettere (p.es. .info, .name, .museum etc).

Agli albori di Internet (prima del 1990), esisteva a riguardo un file /etc/hosts in cui erano memorizzati i nomi di tutti i sistemi presenti su Internet. In breve tempo, a causa del numero sempre crescente dei computer collegati ad Internet, la cosa divenne impraticabile. Per questo venne creata una banca dati in grado di distribuire e memorizzare i nomi dei computer. Questa banca dati, appunto il server dei nomi sopra menzionato, non dispone dei dati di tutti i computer su Internet, ma delega le richieste ad altri server dei nomi che si trovano un gradino più basso nella gerarchia.

All'apice della gerarchia, si trovano i “root name server” che amministrano i top level domain. I server dei nomi root vengono amministrati dal network information center, ovvero NIC. Il server dei nomi root “conosce” i server dei nomi di competenza per un determinato top level domain. Nel caso del top level domain italiano it è l'IT-NIC ad essere preposto ai domini che terminano con il TLD it. Sulla pagina web http://www.itnic.it troverete ulteriori informazioni riguardanti l'IT-NIC; sul top level domain NIC troverete informazioni all'indirizzo http://www.internic.net.

Affinché il vostro computer sia in grado di risolvere un nome in un indirizzo IP, deve esservi almeno un server dei nomi con un indirizzo IP. La configurazione di un server dei nomi può essere eseguita comodamente con . Se vi collegate tramite modem, può darsi che il protocollo usato per il collegamento fornisca l'indirizzo del server dei nomi durante il collegamento stesso.

DNS non risolve solo dei nomi di host, sa fare di più. Il server dei nomi, per esempio, “sa” anche quale sistema accetta le e-mail per tutto il dominio; si tratta del cosiddetto Mail exchanger (MX).

La configurazione dell'accesso al server dei nomi sotto viene descritta nel capitolo Section 22.7, “DNS: Domain Name System”.

Il protocollo whois è strettamente “imparentato” con DNS. Con l'omonimo programma whois, potrete scoprire velocemente quale server è l'istanza principale di un determinato dominio.