PDA

Visualizza versione completa : Guide: Reti di PC


Filippo1974
05-12-2007, 12.11.20
GUIDE - RETI DI COMPUTER


In questa guida affrontiamo gli aspetti chiave di una rete di PC. La prima parte richiamerà dei concetti di base; seguiranno indicazioni e consigli sulla messa in opera di una rete locale.


PARTE I: INTRODUZIONE TECNICA

Una rete di calcolatori è un mezzo che permette la condivisione di informazioni tra due o più computer. I mezzi fisici che consentono la realizzazione di una rete sono disparati (cavi, onde elettromagnetiche, fibre ottiche,...) e possono anche essere combinati tra loro per realizzare reti di complessità notevole; quale che sia l'organizzazione fisica della rete, lo scopo resta comunque quello di permettere a due o più calcolatori di comunicare tra loro.

Una prima classificazione delle reti, a prescindere dal modo in cui esse sono realizzate, viene fatta in base all'estensione geografica. Si possono così avere le seguenti tipologie di rete:


PAN (Personal Area Network): rete di estensione estremamente limitata, tipicamente entro una singola stanza di un locale.
LAN (Local Area Network): la classica rete locale, intesa come rete che copre un singolo edificio, o al limite più edifici contigui.
MAN (Metropolitan Area Network): dal nome si può intuire come una rete di questo tipo vada in genere a servire un'area cittadina, ovvero un paese, o un quartiere delle città più estese.
WAN (Wide Area Network): questo acronimo indica le reti di estensione maggiore, che interessa quindi intere regioni di una nazione o oltre.


Per quanto riguarda invece l'architettura di una rete, esiste un modello astratto, definito dall'ISO (International Standards Organization), secondo il quale una qualunque rete viene organizzata in modo gerarchico; la gerarchia è definita da una PILA divisa in 7 livelli. Si tratta del modello "ISO/OSI". Questo modello è "astratto" nel senso che non dà alcuna indicazione precisa su come una rete debba essere materialmente realizzata; semplicemente vengono definiti i livelli gerarchici, dove al livello più alto ci sono le applicazioni che necessitano di comunicare con altre attraverso la rete, e al livello più basso vi è il mezzo fisico attraverso il quale viaggiano i segnali che trasportano i dati scambiati all'interno della rete, e vengono indicate le modalità e le restrizioni con cui ciascun livello può comunicare con quelli a lui vicini. Ad esempio, nel modello ISO/OSI, ciascun livello della pila gerarchica per definizione non conosce nulla degli altri livelli, se non quelli immediatamente adiacenti, e solo con essi può comunicare.

Di seguito vediamo brevemente la descrizione di questi livelli della pila ISO/OSI, per vedere come si collocano, rispetto a questo modello, i componenti di una rete reale. E' importante notare che non esiste sempre una corrispondenza diretta tra i livelli della pila e i componenti reali: a seconda dei casi, può essere che un dispositivo svolga funzioni riconducibili a più livelli adiacenti, o che siano necessari più componenti distinti per assolvere alle funzioni descritte da un singolo livello; può anche essere che taluni livelli non trovino affatto corrispondenza, come vedremo tra poco.


Livello 7 (Applicazione): Come anticipato, a questo livello ci sono le applicazioni che necessitano di scambiare dati attraverso la rete. Il browser web, o un client di posta elettronica, o anche un gioco multiplayer, sono esempi di componenti che rientrano in questo livello.
Livello 6 (Presentazione): Le applicazioni al livello 7, in taluni casi, possono avere bisogno di associare ai dati scambiati una opportuna formattazione che le aiuti a "presentare" i dati stessi in un modo comprensibile e utile all'utente. Nel caso del browser web, e ormai anche dei client email, tale linguaggio potrà ad esempio essere HTML, o più in generale XML. Questo è uno di quei livelli che non necessariamente trovano sempre riscontro in una applicazione reale: se prendiamo l'esempio di un client FTP (File Transfer Protocol), il cui scopo è unicamente quello di trasferire files da un punto all'altro, non vi è necessità alcuna di associare ai dati scambiati delle informazioni aggiuntive per renderli "presentabili" (un file è un file e basta...).
Livello 5 (Sessione): I dati scambiati dalle due applicazioni e associati eventualmente a indicazioni aggiuntive sulla presentazione devono seguire un insieme di regole, o PROTOCOLLO, che permetta alle informazioni di sapere come iniziare/completare lo scambio dati, verificarne l'avvenuto successo o fallimento, e via dicendo; si tratta insomma di definire le procedure che regolano il dialogo tra entità. A questo scopo provvedono i componenti del livello 5. Sempre con riferimento ai casi reali, per il nostro browser web il livello 5 sarà rappresentato dal protocollo HTTP (Hyper Text Transfer Protocol); per un client FTP sarà il protocollo FTP; per un client di posta elettronica avremo i protocolli SMTP (Simple Mail Transfer Protocol), IMAP (Internet Mail Access Protocol) e POP (Post Office Protocol).
Livello 4 (Trasporto): A fronte di una richiesta da parte del livello 5 di attivare una sessione, le entità appartenenti al livello 4 hanno il compito di stabilire una connessione tra il mittente e il destinatario della comunicazione. Opzionalmente, il livello 4 si potrà anche occupare di verificare l'avvenuto successo di un invio dati, verificare l'integrità di quelli ricevuti e se necessario porre rimedio ad eventuali errori. L'esempio per antonomasia di un componente reale che appartiene al livello 4 è il protocollo TCP (Transmission Control Protocol); questo protocollo svolge tutte le funzioni sopra descritte, anche quelle opzionali di controllo affidabilità della connessione; vi è anche una sorta di "parente povero" del TCP, che è l'UDP (User Datagram Protocol) che si limita a ricoprire solo la funzione primaria (stabilire il contatto tra mittente e destinatario).
Livello 3 (Rete): Il livello 3 riceve dal livello 4 le richieste di contatto di un determinato destinatario, e conoscendo l'organizzazione della rete in termini di collegamenti possibili (indicati tecnicamente come TOPOLOGIA DELLA RETE) è in grado di determinare il percorso ottimale nella rete per collegare tra loro le due entità interessate dallo scambio dati. L'esempio principe di questo livello è il protocollo IP (Internet Protocol). L'affiancamento del protocollo di livello 4 TCP con quello di livello 3 IP è indicato con il celeberrimo acronimo TCP/IP (è consuetudine abbastanza comune, ma errata, considerarlo come un unico protocollo).
Livello 2 (Collegamento dati): Il livello 3 stabilisce qual'è nel suo complesso il percorso ottimale per collegare tra loro due punti A e B della rete; naturalmente, questo percorso potrà coinvolgere diversi nodi intermedi all'interno della rete; tali nodi potranno essere altri calcolatori o router o switch, così come una persona, per spostarsi in auto da una città all'altra, potrà dover attraversare diversi paesi intermedi, incroci e svincoli vari. Il livello 2 definisce le entità che si occupano di gestire lo scambio dati tra due nodi consecutivi. Quindi un percorso definito dal livello 3 potrà coinvolgere più tratte tra singoli nodi, e ciascuna di queste ultime sarà mantenuta da un'entità del livello 2. Ethernet e Wi-Fi sono due tra i più conosciuti esempi di componenti che rientrano in questo livello.
Livello 1: E' il livello più "fisico" del modello astratto, nel senso che in questo livello ricadono i mezzi fisici veri e propri utilizzati per propagare i dati trasmessi. Nel caso di Ethernet avremo il cavo di rete e la circuiteria elettrica che modula i segnali che viaggiano all'interno del cavo; nel caso di wi-fi il mezzo sarà un'onda elettromagnetica e ad esso verrà associato il dispositivo a radiofrequenza che trasmette e riceve i segnali radio.


Nella prossima parte della guida vedremo quali sono i componenti reali coinvolti in una tipica rete che possiamo organizzare per conto nostro, ovvero una Local Area Network (LAN).

Filippo1974
06-12-2007, 17.51.45
PARTE II: RETI LAN TCP/IP
-------------------------

Come abbiamo visto nella prima parte, una rete LAN è una rete di calcolatori che coinvolge un'area limitata, tipicamente un edificio o al più alcuni edifici contigui. Si tratta quindi della tipologia di rete nella quale ricadono le reti domestiche che un utente può pensare di implementare.

Data ormai la presenza quotidiana di Internet nella nostra vita, e considerando che essa basa il suo funzionamento sui noti protocolli TCP e IP (che, messi insieme, sono indicati con l'acronimo TCP/IP), risulta una scelta pressoché obbligata costruire la nostra rete utilizzando questi stessi protocolli, in modo da garantire una corretta integrazione tra la nostra LAN e Internet. Tanto più che nei sistemi operativi moderni che un utente può considerare per i propri PC di casa (quindi non solo Windows ma anche Linux) la scelta di default come protocollo di rete è proprio TCP/IP.

Rivediamo un attimo come funziona una rete basata su TCP/IP. I protocolli impiegati in questa rete, come detto, sono il TCP per il trasporto e l'IP per l'instradamento. TCP si occupa di assicurarsi che lo scambio dati tra mittente e destinatario avvenga con successo; se qualche pacchetto di dati viene "perso per strada" (può accadere) o arriva corrotto, TCP si occupa di ritrasmetterlo, in modo trasparente all'applicazione. IP dal canto suo gestisce la determinazione del percorso ottimale per connettere mittente e destinatario, in funzione delle funzionalità e della topologia della rete.

Innanzitutto, si presuppone che ogni computer che si intende far partecipare alla LAN abbia un dispositivo che permetta al computer stesso di inserirsi nella rete. In pratica, ci serve una scheda di rete per ogni computer. Per quanto riguarda le opzioni per l'utenza casalinga, abbiamo di fatto due scelte: costruire una rete di tipo cablato tramite dispositivi Ethernet, oppure una rete senza fili tramite lo standard Wi-Fi. Naturalmente è possibile utilizzare una combinazione di entrambe le soluzioni, in funzione delle nostre esigenze. Tra poco parleremo di pregi e difetti di queste due opzioni.

Posto quindi che i nostri computer siano fisicamente in grado di connettersi alla rete che vogliamo fare, e che noi abbiamo messo in pratica i collegamenti richiesti, il passo successivo è conferire ad ogni computer della nostra rete un indirizzo IP univoco. Questo è infatti il requisito essenziale affinché una rete TCP/IP possa funzionare correttamente.
Un indirizzo IP è di fatto un numero a 32 bit, diviso in quattro gruppi da 8 bit separati da un punto. Ciascun gruppo, quindi, potrà rappresentare 2^8 = 256 valori diversi (da 0 a 255), per un totale teorico di 256*256*256*256 = 4 miliardi e rotti di indirizzi IP univoci. Esempi di indirizzi IP possono essere: 10.25.156.24, 53.75.211.87, e così via. Ciascun gruppo di 8 bit è definito, non a caso, ottetto.
Nella realtà, di tutti questi valori teoricamente possibili, alcuni sono stati assegnati per scopi specifici. In particolare, per l'implementazione di reti, gli indirizzi IP devono sottostare a precise restrizioni, in funzione delle dimensioni della rete che vogliamo costruire, nonché del numero di reti distinte che vorremmo poter raggruppare per formare una "rete di reti". Esistono tre categorie di indirizzi IP destinate all'implementazione di reti (più ulteriori due categorie destinate a scopi speciali e che quindi qui non tratteremo); queste categorie si indicano con il nome di classi. Ciascuna classe divide l'indirizzo IP in due parti secondo un meccanismo gerarchico: la prima parte dell'indirizzo individua univocamente la rete, mentre la seconda individua un singolo computer all'interno della rete. La ragione per cui viene fatta questa organizzazione gerarchica degli indirizzi è per ragioni di efficienza dell'instradamento (ovvero la ricerca del percorso da un punto A a un punto B nella rete): se un computer A vuole mandare dati a un computer B, i dispositivi che instradano i dati (quelli del livello 3 della pila ISO di cui si diceva nella prima parte della guida) potranno capire se A e B stanno nella stessa rete oppure no solamente guardando una parte dell'indirizzo IP, e il tutto sarà quindi più rapido. La stessa cosa, se vogliamo, che accade quando mandiamo una cartolina: l'indirizzo del destinatario è costituito dal nome della via e quello della città. Volendo fare un parallelo, ogni città sarà una rete distinta, e città distinte possono avere vie con lo stesso nome: il postino, per sapere dove portare la nostra cartolina, guarderà innanzitutto se deve essere consegnata nella stessa città da cui è partita, e poi guarderà in che via la deve portare. E così, nelle nostre reti IP, chi deve consegnare i dati che viaggiano in TCP/IP guarderà prima la parte di indirizzo IP che individua la rete, e poi una volta raggiunta quella rete verrà guardata la porzione che individua il singolo computer.

Vediamo come sono strutturate queste tre classi di indirizzi:


Classe A: è la classe destinata ad implementare le reti più estese. Gli indirizzi IP appartenenti a questa classe sono quelli il cui primo ottetto ha valori da 0 a 127. Nella classe A, il primo ottetto individua la rete, mentre i restanti tre individuano i computer della rete. Con gli indirizzi IP di classe A si potranno quindi implementare fino a 128 reti, ciascuna delle quali potrà avere al suo interno fino a 256*256*256 - 2 = 16777214 computer. Se quindi adotto indirizzi di classe A per la mia rete, avrò che, ad esempio, 10.1.1.4 e 10.2.6.3 individuano due PC distinti all'interno della stessa rete, mentre 11.1.1.4 sarà un PC di una rete diversa. Perché dal numero di PC possibili in una rete si è sottratto un 2? Perché bisogna considerare che di tutti i valori possibili per l'indirizzo del PC ve ne sono due speciali: quello con tutti zeri e quello con tutti 255; questi due indirizzi non possono essere usati per individuare un computer preciso in una rete. L'indirizzo IP con tutti 255 al posto della parte che individua il computer, in particolare, si riferisce a "tutti i computer in una rete data".
Classe B: è la classe "intermedia". In questo caso, 2 ottetti saranno dedicati all'indirizzo di rete e 2 ottetti individueranno il singolo PC. Gli indirizzi di classe B sono quelli in cui il primo ottetto va da 128 a 191. Avendo quindi a disposizione 64 valori per il primo ottetto e 256 per il secondo, potremo implementare fino a 16384 reti di 256*256 - 2 = 65534 computer ciascuna.
Classe C: questa è la classe tipicamente utilizzata per LAN di piccole dimensioni, in quanto prevede che 3 ottetti vengano dedicati ad individuare la rete, e solo 1 ottetto per i singoli PC. Gli indirizzi IP di classe C sono quelli il cui primo ottetto va da 192 a 223. Ne risulta che un indirizzo IP di classe C potrà individuare fino a 32*256*256 = 2097152 reti di 256 - 2 = 254 PC ciascuna.


Di tutta questa spiegazione (purtroppo un po' macchinosa) sulle classi di indirizzi IP, probabilmente ci interesserà soprattutto il fatto che la nostra LAN di casa userà preferibilmente un indirizzo IP di classe C. La consuetudine vuole che le LAN di piccole dimensioni usino indirizzi IP del tipo 192.168.0.xxx, dove xxx sarà un numero da 1 a 254, univoco per ogni computer della nostra rete locale.

Bene, ora sappiamo che tipo di indirizzi IP vogliamo dare ai nostri computer. Per assegnare materialmente questo indirizzo abbiamo due modi:


Indirizzi IP statici con assegnazione manuale: ogni computer riceverà una volta per tutte il proprio indirizzo IP, che verrà impostato manualmente da noi stessi e resterà quindi fisso finché non decideremo noi di cambiarlo. Questa è la soluzione più semplice per una rete fatta di pochi computer, o che è soggetta a rare modifiche nella sua costituzione: quindi tipicamente una rete fatta solo di computer fissi, che vengono spostati -e quindi tolti/inseriti nella rete- molto di rado. Nella maggior parte dei casi, gli utenti domestici preferiranno configurare la rete in questo modo.
Indirizzi IP assegnati automaticamente tramite DHCP: il DHCP (Dynamic Host Configuration Protocol) è un meccanismo che permette il "plug'n'play" nella rete. Se i nostri computer sono configurati per utilizzare DHCP, essi riceveranno automaticamente un indirizzo IP non appena verranno inseriti in una rete. Per far sì che questo meccanismo funzioni, è necessario che nella rete sia presente un dispositivo in grado di fornire il servizio DHCP (di solito un router, o un computer nel quale è in esecuzione un server DHCP). Questa configurazione è preferibile in una rete destinata a cambiare di consistenza molto spesso, di solito perché è una rete destinata all'uso da parte di computer portatili.


Se abbiamo PC con sistema Windows XP, possiamo decidere la modalità di assegnazione degli indirizzi IP andando in START -> IMPOSTAZIONI -> PANNELLO DI CONTROLLO -> CONNESSIONI DI RETE e facendo click con il tasto destro sull'icona che individua il dispositivo di rete del computer (potrebbero essercene più di uno). Dal menu che compare sceglieremo PROPRIETA': ci verrà presentata una finestra che mostra quali servizi e protocolli siano associati a questo dispositivo di rete. Clicchiamo sulla voce "Protocollo Internet (TCP/IP) e premiamo il pulsante PROPRIETA'. La finestra che comparirà è quella che ci permette di assegnare l'indirizzo IP. Vi sono due possibilità:


Ottieni automaticamente un indirizzo IP: se attiviamo questa opzione, significa che intendiamo avvalerci del servizio DHCP (se disponibile) per assegnare un indirizzo IP al nostro computer. Se non viene rilevato alcun server DHCP, la scheda di rete rimarrà senza indirizzo IP, e non potrà partecipare alla nostra LAN.
Utilizza il seguente indirizzo IP: attivando questa opzione, attiveremo tre caselle Indirizzo IP, Subnet mask e Gateway predefinito. Per ora ci interessa solamente la prima voce, dove (come avrete intuito) è possibile inserire manualmente i quattro ottetti dell'indirizzo IP, se abbiamo deciso di assegnarlo manualmente.


Una parola sulla voce Subnet mask, che è accessibile solamente se attiviamo l'immissione manuale dell'indirizzo IP. Se notate, inserendo un indirizzo IP questa voce verrà automaticamente valorizzata in funzione della classe a cui appartiene l'indirizzo IP immesso. Volendo, è possibile modificare manualmente la subnet mask per forzare una suddivisione diversa tra indirizzo di rete e indirizzo del singolo PC. Quindi, agendo sulla subnet mask, potremmo ad esempio utilizzare un indirizzo IP di una certa classe, ma forzare una divisione gerarchica di una classe differente. Non credo che un utente domestico avrà mai bisogno di ricorrere a questa possibilità, per cui potremo tranquillamente accettare la subnet mask proposta in automatico dal sistema quando avremo inserito l'indirizzo IP manualmente. Del Gateway predefinito parleremo invece in seguito, quando si parlerà di interfacciare la nostra rete LAN con internet.

Quale che sia il sistema con cui decidiamo di assegnare gli indirizzi IP, nella finestra delle proprietà TCP/IP c'è un altro accorgimento da sistemare per far sì che la nostra LAN funzioni al meglio. Clicchiamo sul tasto "Avanzate..." nella parte inferiore della finestra dove abbiamo stabilito l'assegnazione dell'indirizzo IP. Ci comparirà una nuova finestra con quattro etichette: Impostazioni IP, DNS, WINS e Opzioni. La prima etichetta non fa altro che presentarci nuovamente i parametri dell'indirizzo IP; della sezione DNS parleremo in seguito. Ci interessa invece la sezione WINS. Nella parte sottostante c'è un riquadro denominato "Impostazione NetBIOS". Dovremo impostarlo su "Abilita NetBIOS su TCP/IP" per tutte le macchine che partecipano alla nostra LAN. Quando avremo fatto, potremo finalmente cliccare su OK e chiudere le impostazioni TCP/IP.

Il perché di questa modifica è presto spiegato. Quando creiamo una LAN di computer con Windows, i singoli computer possono comunicare con gli altri utilizzando gli indirizzi IP; questo sistema è comunque scomodo per un utente "umano", per il quale sarà certamente più confortevole poter individuare i computer attraverso un nome mnemonico (tipo "PC1", "PC_Pippo", "Computer_mamma" e così via). Questo nome mnemonico è assegnabile andando su START -> IMPOSTAZIONI -> PANNELLO DI CONTROLLO -> doppio click su SISTEMA. Apriamo l'etichetta "Nome computer" e clicchiamo sul pulsante "Cambia...". Qui dentro possiamo stabilire il nome mnemonico del computer, nonché il gruppo di lavoro o il dominio in cui deve eventualmente essere inserito. A noi i domini non interessano, quindi ci assicureremo che l'opzione sia impostata su "Gruppo di lavoro" e che la casella del nome gruppo di lavoro sia impostata in modo uguale per tutti i computer. Di default, Windows utilizza un gruppo di lavoro denominato "Workgroup", che a noi andrà benone. Se proprio vogliamo, possiamo cambiare questo nome; va benissimo, basta che poi tutti i PC siano impostati allo stesso gruppo di lavoro. Ebbene, se noi abbiamo cura di impostare l'opzione "Abilita NetBIOS su TCP/IP" come si diceva sopra, faremo in modo che ciascun computer possa individuare tutti gli altri usando semplicemente il nome mnemonico.

Quando avremo impostato un indirizzo IP univoco per ogni computer, e avremo eventualmente assegnato un nome mnemonico a ciascuno, potremo fare la seguente prova per verificare che tutto funzioni:


Da un qualsiasi computer della nostra LAN apriamo il prompt dei comandi: START -> ESEGUI... e digitiamo "CMD" come comando da eseguire. Si aprirà una finestra di prompt dei comandi.
Digitiamo il comando ping seguito dall'indirizzo IP di uno dei nostri computer della rete, che non sia naturalmente l'indirizzo del computer da cui stiamo eseguendo il comando. Ad esempio, se in rete abbiamo tre computer, con indirizzi rispettivamente 192.168.0.1, 192.168.0.2 e 192.168.0.3, e abbiamo aperto il prompt dei comandi dal PC con indirizzo 192.168.0.1, potremo provare con ping 192.168.0.2 o ping 192.168.0.3.
se riceviamo in risposta dei messaggi del tipo "Risposta da 192.168.0.2: byte=32 durata<1ms TTL=128"... COMPLIMENTI! I due PC riescono a comunicare tra loro. Il protocollo TCP/IP è configurato correttamente. Se proviamo da questo stesso PC a dare comando ping verso tutti gli altri PC e riceviamo riscontro positivo, possiamo stare sicuri che la rete sta funzionando.
Se invece riceviamo messaggi di errore di "Richiesta scaduta", l'indirizzo IP che stiamo interrogando non risponde. Qualcosa non va nella nostra configurazione: o il PC che stiamo cercando di raggiungere non è correttamente configurato, o i cavi di rete non sono ben collegati. Dobbiamo ricontrollare.
Se la prova con gli indirizzi IP è andata bene, possiamo verificare che funzioni anche l'interrogazione con i nomi mnemonici: si può usare ancora il comando "ping", basta usare il nome mnemonico al posto dell'indirizzo IP.


Se tutte le prove illustrate sopra hanno avuto esito positivo, la nostra rete locale è correttamente configurata e funzionante. Da questo momento potremo condividere cartelle, giocare in multiplayer, perfino accedere al desktop di un computer da un altro computer nella rete (usando Desktop Remoto).

Nella prossima puntata vedremo come organizzare questa rete locale per poter connettersi ad internet.

Filippo1974
07-12-2007, 10.39.18
PARTE III: RETE LAN E INTERNET
------------------------------

Nella parte precedente abbiamo messo a punto una rete locale, basata su TCP/IP, e abbiamo fatto dei veloci test per verificare la corretta connettività dei PC in rete.

Naturalmente, il lavoro non è terminato. Una rete locale che non abbia un accesso verso Internet non serve a granché: al limite potrà essere utile per condividere risorse e giocare in multiplayer, ma non molto di più. In questa parte della guida proviamo quindi a concludere l'opera.

Faccio una doverosa premessa di carattere legale: quanto sto per esporre qui sotto consente di condividere una connessione internet a tutti i PC di una LAN. Il fatto che questa condivisione sia tecnicamente fattibile, non implica che ciò sia lecito dal punto di vista contrattuale. Se l'abbonamento che avete stipulato con il vostro provider internet prevede esplicitamente che l'accesso ad internet sia ammesso da una singola postazione, significa che non sarebbe ammissibile attuare la condivisione della connessione su più PC di una LAN (a meno che poi la connessione non venga comunque usata da un singolo PC alla volta, il che è un po' una forzatura). Quindi, se decidete di condividere la connessione internet quando il vostro contratto con il provider lo vieta, sappiate che state violando le condizioni contrattuali e, a seconda di quanto stabilito dal provider, potreste anche vedervi sospesa la fornitura della connessione.

Detto questo, possiamo addentrarci nelle spiegazioni tecniche.

Innanzitutto, per connetterci ad Internet ci serve necessariamente un dispositivo che ce lo consenta. In questa guida daremo per scontato che il mezzo impiegato per avere questa connettività sia ADSL, vista la sua ormai ampia diffusione (immagino che la maggioranza di chi si troverà a consultare questo forum abbia una connessione ADSL in casa). Tecnicamente, anche chi ha una meno performante connessione con il classico modem analogico 56K, o con modem ISDN, può creare un accesso ad internet valido per tutta la rete locale, però è chiaro che le prestazioni ottenibili con questo genere di connessioni sono a malapena accettabili per una singola postazione, figurarsi per un'intera rete.

Dunque, torniamo al nostro "caso ottimale", nel quale abbiamo un servizio ADSL disponibile nella nostra zona. Per utilizzarlo, avremo bisogno di un modem ADSL. Vista l'esigenza di conciliare la presenza della connessione ADSL con quella della rete locale, la scelta dovrebbe essere pressoché obbligata a favore di un modem/router. Un dispositivo di questo tipo incorpora in genere tutte le funzioni necessarie a gestire la rete locale e i relativi accessi verso Internet, per cui il suo utilizzo ci faciliterà le cose sotto molti aspetti. Il tipico modem/router è uno scatolotto che mette a disposizione alcune porte Ethernet (di solito da 3 a 5) per la nostra rete locale. Con un modem/router di questo tipo potremo connettere direttamente un numero di dispositivi pari a quello delle porte Ethernet presenti; qualora volessimo estendere il numero di dispositivi, sarà sufficiente acquistare uno switch Ethernet, connettere una porta di quest'ultimo a una delle porte Ethernet del modem/router e le altre porte ai PC che vogliamo mettere in rete.

Dunque, vediamo come va modificata la configurazione della nostra LAN avendo a disposizione un modem/router.

Innanzitutto, è importante premettere il fatto che il nostro modem/router, in quanto entità della rete in grado di gestire il protocollo TCP/IP, dovrà esso stesso vedersi assegnato un indirizzo IP e questo, per forza di cose, dovrà essere un indirizzo IP statico (visto che i PC della LAN devono sapere sempre "a chi rivolgersi" per comunicare con Internet). La stragrande maggioranza dei modem/router esce dalla fabbrica con preimpostato l'indirizzo IP statico 192.168.0.1 o 192.168.1.1.
Supporremo che la nostra LAN sia stata messa in piedi usando una assegnazione manuale di indirizzi IP statici (scelta che avevo consigliato nella precedente parte di questa guida). I problemi che potranno presentarsi, a questo punto, sono due. Ricordiamo che, se avete seguito i passi descritti nella parte precedente di questa guida per mettere in piedi la LAN, state usando indirizzi IP di classe C, e quindi i primi tre ottetti dell'indirizzo IP individuano la rete, e il quarto ottetto individua il PC (o il modem/router) all'interno della rete.


Il modem/router ha preimpostato un indirizzo IP che ha la porzione di rete coincidente con quella che abbiamo già impiegato noi (e quindi, se per i nostri PC abbiamo usato indirizzi IP del tipo 192.168.0.xxx, anche il modem/router dovrà avere un indirizzo IP di questo tipo). In questo caso avremo due ulteriori possibilità:

L'indirizzo IP del modem/router è già stato usato anche da uno dei PC della nostra LAN. In questo caso abbiamo un conflitto di indirizzi IP. Dovremo quindi per forza di cose cambiare l'indirizzo IP del PC che è in conflitto con il modem/router.
L'indirizzo IP del modem/router non è utilizzato anche da uno dei nostri PC. In questo caso non vi sono problemi e possiamo proseguire tranquillamente.

Il modem/router ha preimpostato un indirizzo IP la cui porzione di rete è diversa da quella che abbiamo usato per la LAN. Per esempio, i nostri PC hanno indirizzi del tipo 192.168.0.xxx e il router ha preimpostato un IP tipo 192.168.1.xxx. In questo caso il router verrà considerato come parte di una rete diversa dalla nostra e non sarà quindi direttamente raggiungibile (se facciamo un ping all'indirizzo IP del modem, vedremo che darà esito negativo). In questo caso ci sono solo due rimedi possibili: o cambiamo su tutti i PC la porzione di rete degli indirizzi IP in modo da farla coincidere con quella del modem/router (consigliato), oppure andiamo a ritoccare la Subnet Mask nelle impostazioni IP dei PC in modo da modificare la divisione degli indirizzi IP tra parte di rete e parte di computer (sconsigliato).


Quando avremo risolto eventuali problemi/conflitti di indirizzi IP, saremo quasi a posto. Dobbiamo però sistemare ancora un paio di cose.

Se siamo arrivati fin qui e abbiamo fatto le cose per bene, avremo una LAN in cui tutti i PC riescono a comunicare tra loro e ciascuno di essi può comunicare con il modem/router. Possiamo verificare la corretta comunicazione tra PC e modem/router facendo un ping dell'indirizzo IP del modem/router dal prompt dei comandi di un qualunque PC della LAN, come avevo descritto nella scorsa parte. Tuttavia, ancora non riusciamo a navigare in internet, perché appunto ci mancano due parametri da mettere a posto: gli indirizzi IP dei server DNS e del Gateway Predefinito. Se vi ricordate, nella parte precedente della guida avevamo anticipato che ci sarebbero serviti: il momento è arrivato.

Prima di tutto, il Gateway Predefinito. Il Gateway è un dispositivo di una rete TCP/IP che permette a tutti i partecipanti di quella rete di comunicare con dispositivi di altre reti TCP/IP. E', in altre parole, il nostro "postino" per i dati da spedire a reti diverse dalla nostra. Come funziona? Semplice: ogni volta che uno dei nostri PC in rete deve spedire dati ad un altro, il sistema operativo esamina l'indirizzo IP del destinatario. Se la porzione che identifica la rete del destinatario coincide con quella del mittente, è evidente che i due si trovano nella stessa rete, e quindi il sistema operativo inoltrerà i dati direttamente al destinatario. Se invece la destinazione ha un indirizzo di rete diverso, allora il sistema operativo inoltrerà i dati direttamente al Gateway, che poi si occuperà di "parlare" con il destinatario esterno alla nostra LAN. Affinché tutto funzioni, quindi, la prima cosa da fare sarà inserire in tutti i PC della nostra rete l'indirizzo IP del modem/router come Gateway Predefinito.

Veniamo ora ai server DNS. DNS = Domain Name Service. Si tratta di quel sistema che permette una associazione tra nomi mnemonici dei servizi di rete e rispettivi indirizzi IP. Tutte le entità inserite in una rete TCP/IP comunicano conoscendo i rispettivi indirizzi IP, ma noi umani preferiremo identificarle con nomi mnemonici. In pratica la stessa identica cosa che abbiamo descritto quando parlavamo delle impostazioni WINS: quello che noi abbiamo fatto con i nomi mnemonici dei PC della nostra LAN, il servizio DNS lo fa su scala mondiale per l'intera Internet.
Quando noi scriviamo nel nostro browser l'indirizzo di un sito web, per esempio www.volovirtuale.com, in realtà noi stiamo implicitamente chiedendo ad un server DNS: per favore, recuperami l'indirizzo IP del server che corrisponde al nome mnemonico che ho appena digitato. Quando il DNS avrà fornito al nostro browser web l'indirizzo IP che stiamo cercando, solo allora inizierà la comunicazione vera e propria con il server web che vogliamo contattare.
Dunque, poiché i server DNS ricevono un nome mnemonico e ci restituiscono il corrispondente indirizzo IP, chiaramente non possono essere a loro volta individuati da un nome mnemonico, perché altrimenti sarebbe il problema del serpente che si morde la coda. E quindi dovremo per forza di cose conoscere l'indirizzo IP dei server che forniscono questo servizio. Qui non ci sono molte scelte: o usiamo i server DNS messi a disposizione dal nostro provider internet (di solito gli indirizzi IP dei DNS del provider sono pubblicati nel sito web del provider stesso), oppure possiamo optare per i servizi DNS di terze parti. Particolarmente apprezzato è il servizio OpenDNS (http://www.opendns.com), gratuito e molto performante. Quando sapremo l'indirizzo IP del server DNS che vogliamo usare, potremo inserirlo direttamente nelle proprietà TCP/IP dei PC della nostra LAN.

Infine, dovremo assicurarci che il nostro modem/router abbia attivata la funzionalità cosiddetta NAT (Network Address Translation). Questa funzionalità, a volte indicata anche come IP MASQUERADING, permette di gestire le richieste di accesso ad internet da parte dei PC di una LAN come se provenissero tutte da un'unica entità della rete, ovvero il Gateway. In assenza di funzionalità NAT, sarà necessario che tutti i PC della LAN abbiano un indirizzo IP pubblicamente riconosciuto, altrimenti poi quando questi PC tenteranno di navigare su internet, i server a cui accederemo per le nostre necessità non sapranno "a chi" rispedire i dati richiesti. Con il NAT attivo, tutte le richieste di accesso ad internet da PC della LAN "appariranno" come se venissero fatte dal Gateway (ovvero il nostro modem/router), che userà come indirizzo IP del mittente l'indirizzo IP che il nostro provider gli assegnerà quando verrà stabilita la connessione ADSL. A quel punto, il Gateway "girerà" questi dati al PC della LAN che materialmente li aveva richiesti. Quindi la funzionalità NAT nasconde l'esistenza di un'intera rete dietro la presenza di una singola entità con un singolo indirizzo IP (il Gateway), e come tale viene talvolta considerata una misura di protezione contro gli hacker. Questo in realtà non è vero (o meglio, lo è magari per gli hacker principianti, ma gli esperti sanno bene come superare l'ostacolo) e quindi l'uso del NAT non prescinde dall'installazione di un buon firewall. Ma di solito i modem/router decenti forniscono anche questa seconda funzione. Per chi vuole approfondire l'argomento, qui è dimostrato come si possa portare un attacco ad una LAN "nascosta" dietro un Gateway con NAT:

http://www.areanetworking.it/index_docs.php?title=NAT_is_not_a_security_feature

Ebbene, abbiamo terminato. Se tutto è stato eseguito correttamente, dovremmo essere in grado di fare qualunque operazione anche su internet, da qualunque dei PC della nostra LAN.

Nella quarta e ultima parte di questa guida vedremo come conciliare l'organizzazione della LAN fin qui messa in opera con la necessità di permettere le richieste di accesso da parte di entità esterne a uno o più PC della nostra rete. Questo genere di sofisticazione si rende necessario, per esempio, qualora noi volessimo ospitare un server per partite multi-player online con i nostri amici.

Filippo1974
07-12-2007, 11.33.58
PARTE IV: MESSA IN OPERA DI SERVER
------------------------------

Rieccoci qua per la quarta ed ultima parte della guida.

Fin qui abbiamo fatto parecchie cosette: abbiamo messo in opera una LAN, abbiamo anche fatto in modo che tutti i nostri PC in rete locale fossero in grado di accedere ad internet. Manca però la ciliegina sulla torta.

Come avevo spiegato nella terza parte, grazie alla funzionalità NAT del nostro modem/router, riusciamo a "mappare" gli accessi dei nostri PC ad Internet come se fossero tutti a carico del Gateway. Però questo risolve le cose solo a metà: il NAT infatti funziona fintantoché l'accesso avviene iniziato da dentro la nostra LAN verso l'esterno. Se invece è un'entità esterna a richiedere di aprire una sessione con uno dei PC interni alla LAN, la cosa non funzionerà: difatti, vista "da fuori", la nostra LAN non appare come tale, essendo visibile solo il nostro router e il relativo indirizzo IP assegnato dal provider. Qualunque richiesta di connessione può venire fatta solo verso l'indirizzo IP del modem/router. Bisogna pertanto mettere in atto un meccanismo di "NAT a rovescio", dove richieste di accesso pervenute dall'esterno al Gateway vengano correttamente inoltrate ad uno dei PC della nostra LAN. Questo meccanismo si chiama IP forwarding.

Chiaramente, affinché questo sistema possa venir messo in piedi, è necessario che il modem/router supporti l'IP forwarding, altrimenti non se ne fa nulla. In assenza di IP forwarding, non sarà possibile ospitare nella LAN dei servizi accessibili dall'esterno. Se la nostra intenzione era quella di mettere in LAN un server per partite multi-player, dovremo accontentarci di partecipare a sessioni aperte da altri, senza poter crearne di nostre.

Supposto che il nostro modem/router fornisca il servizio di IP forwarding, dobbiamo fare un'altra precisazione per meglio capire a cosa andiamo incontro.

Finora si è sempre parlato di indirizzi IP per individuare un PC all'interno di una rete. In realtà non è tutto qui, nel senso che l'indirizzo IP da solo non individua completamente una macchina e tutti i servizi che questa può offrire in rete. O meglio: un indirizzo IP individua univocamente un'interfaccia di rete. Un PC dotato di più schede di rete può avere più indirizzi IP, ciascuno per ogni scheda distinta. Se qualcuno volesse, per ipotesi, ospitare un server web, uno email e uno FTP su una singola macchina, probabilmente sarebbe indotto a pensare: mi ci vorrà una scheda di rete distinta per ogni servizio, così a ciascuna scheda assegno un indirizzo IP diverso e di conseguenza su ogni IP che avrò creato associo uno dei servizi che voglio ospitare. Questo è tecnicamente fattibile, ma comporta chiaramente uno spreco di indirizzi IP e di schede di rete. La stessa identica cosa è tranquillamente fattibile con una sola scheda di rete, grazie alle porte.

Una porta è un numero di 16 bit (quindi sono definibili 2^16 = 65536 porte distinte) che, per un dato indirizzo IP, identifica un particolare servizio disponibile a quell'indirizzo IP. Volendo essere rigorosi, quindi, quando noi cerchiamo di accedere ad un servizio (un sito web, o un server di posta, e via dicendo) dovremmo non solo sapere l'indirizzo IP della macchina che rende disponibile quel servizio, ma anche la PORTA alla quale il servizio è associato. Naturalmente, per i servizi più utilizzati (web, email, FTP, condivisione cartelle di Windows, ecc.) esiste una porta di default, e quindi in realtà noi raramente ci troveremo a dover specificare la porta relativa al servizio che vogliamo usare, in quanto verrà in generale implicitamente usata la porta di default per quel servizio. Per i curiosi, un elenco delle porte di default per i servizi principali è visibile qui:

http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers

Da questa lista, noterete anche un'altra cosa: per individuare in modo davvero univoco un servizio, è necessario conoscere tre parametri: l'indirizzo IP dell'interfaccia di rete, il numero della porta e anche il protocollo di trasporto (TCP o UDP). L'associazione tra protocollo di trasporto impiegato (TCP o UDP) e la porta alla quale è accessibile un determinato servizio viene solitamente indicata con l'espressione "Porta TCP xxxx" o "Porta UDP xxxx", intendendo con questo che un certo servizio utilizza il protocollo TCP o UDP e la porta numero xxxx. Ad esempio, i server web utilizzano di default la porta 80 e il protocollo di trasporto TCP. Quindi, si potrà dire che di default i server web "rispondono sulla porta TCP 80".

Ora possiamo tornare a parlare di IP forwarding. Dunque, vogliamo ospitare un servizio accessibile dall'esterno su uno dei nostri PC in LAN? Bene. Allora innanzitutto dobbiamo sapere su quale PORTA il nostro servizio andrà a mettersi in ascolto, in attesa di richieste di connessione. Quando saremo in possesso di questo dato, potremo attivare il servizio che intendiamo mettere a disposizione, e quindi andare a STABILIRE una REGOLA DI IP FORWARDING nel nostro modem/router. Se poi il modem/router fornisce anche funzioni di firewall, sarà il caso che stabiliamo una REGOLA DI FIREWALL, secondo cui il traffico in arrivo su quella porta non venga scartato. Altrimenti le richieste di accesso non giungeranno mai al destinatario dentro la nostra LAN. Di solito comunque le funzionalità di firewall e di IP forwarding sono impostate in modo congiunto, sicché la creazione di una regola di IP forwarding implica automaticamente la creazione di una regola di firewall.

Chiariamo il tutto con un esempio (i cui valori sono totalmente inventati): supponiamo di voler mettere in piedi un server per un gioco di guida on-line. La macchina che abbiamo deciso di destinare per ospitare il software server ha indirizzo IP 192.168.0.10. Per default, il software server utilizza la porta 2000 e il protocollo UDP per accettare richieste di connessione. Quello che dovremo quindi fare sul modem/router sarà di creare questa regola: tutto il traffico UDP proveniente da qualunque IP esterno e destinato alla porta 2000 dovrà essere inoltrato all'IP 192.168.0.10, stessa porta.

Dovremo cercare di fornire quanti più dati possibile in sede di creazione della regola, per evitare che venga inoltrato verso il PC server più traffico del dovuto. La creazione di una regola di IP forwarding, infatti, per sua stessa natura è una potenziale vulnerabilità, perché apre una "breccia" per "vedere" dall'esterno un componente della nostra LAN. Per questo motivo, sarà bene il caso di assicurarsi che entrino solo i dati che vogliamo noi.

Se abbiamo fatto tutto per bene, non sarà necessario fare altro: i nostri amici che vorranno accedere al nostro server multi-player non dovranno fare altro che inserire l'indirizzo IP assegnato dal provider al nostro modem/router (e che potremo recuperare di solito accedendo al menu di gestione del modem/router stesso); ci penserà il router stesso, grazie alla regola di IP forwarding, a far pervenire i dati al PC da noi destinato a server, senza che questo sia realmente visibile dall'esterno.

Su questo ultimo punto vorrei fare una doverosa puntualizzazione: quando comunicate ai vostri amici l'indirizzo IP del vostro router, sarà il caso che lo facciate attraverso canali sicuri. Quindi evitate di postare l'IP del vostro router su un forum pubblico e robe simili. E' sempre meglio evitare che il mondo sappia che quella sera ci sarà un server privato raggiungibile sulla tal porta del tal indirizzo IP. Se il software server che avete installato ha delle falle di sicurezza, e un hacker ne è a conoscenza, comunicare al mondo a quale IP sarà disponibile il server sarà il più bel regalo che potrete fare ai malintenzionati (e il più brutto per voi...)

Ai fini della sicurezza, si può adottare un ulteriore accorgimento. Alcuni modem/router particolarmente sofisticati offrono il supporto alla cosiddetta DMZ, acronimo di De-Militarized Zone. Si tratta di una zona della nostra LAN, nella quale trovano specificamente posto le macchine destinate a offrire servizi accessibili sia dall'interno che dall'esterno. La particolarità della DMZ è che le macchine che vi risiedono non possono iniziare una sessione di comunicazione indirizzata verso altri PC della LAN al di fuori della DMZ. In altre parole, le macchine situate nella DMZ, pur essendo parte della LAN, non possono comunicare con il resto della rete locale, se non in risposta ad una specifica richiesta. Questo fa sì che, nel malaugurato caso in cui un hacker riesca a prendere il controllo dall'esterno di una macchina server nella DMZ, non sia comunque possibile che da lì si contattino altre macchine della LAN. La DMZ è quindi una sorta di "strada cieca" per chi dovesse riuscire ad intrufolarsi.

Se il vostro modem/router offre un supporto di questo tipo, è senz'altro consigliabile utilizzarlo, specie se intendete lasciare una macchina server disponibile 24 ore su 24.