Rudimenti di TCP/IP v4 (12/01/04)

Guida pratica per costruire una piccola rete

Rev. 2.0

 

Indice delle guide

 

Mi scuso per sicuri errori grammaticali, spero che i pochi che lo leggeranno non ne siano infastiditi.

Il tempo e gli impegni non mi permettono altro che questi semplici articoli.

1.   Cosa è necessario sapere

Come su Internet, anche nelle reti locali il protocollo più diffuso è il TCP/IP; acronimo di Trasmission Control Protocol / Internet Protocol.

In questo articolo discuteremo solamente delle intranet, più in particolare delle vostre reti locali.

Bisogna ricordare che quando si parla di TCP/IP non si parla di un solo protocollo, ma di una intera suite di essi; qui ci limiteremo a descrivere e implementare lo stack IP, ovvero una parte del primo gradino della suite.

Questo perché ogni protocollo o servizio che si trova al di sopra dell’IP va oltre lo scopo del testo, poiché si tratta di un livello più alto e più complesso; ovvero ignoreremo tutto quello che può essere il web (HTTP), la posta elettronica (POP e SMTP), le porte TCP e UDP, l’ICMP ecc…

Ci limiteremo a far comunicare due computer ovunque si trovino, il resto viene in seguito.

 

Questo è un articolo base, quindi cercherò di spiegarmi nel modo più semplice; senza entrare in particolari non necessari allo scopo del testo.

2.   Riferimenti al modello OSI

Il modello OSI è uno standard aperto proposto come traccia per poter meglio comprendere e progettare i protocolli di comunicazione tra i sistemi; esso ha lo scopo di definire dei confini, dei compiti e quindi delle responsabilità per ogni elemento che lo compone.

Qui riporto un approssimativo riferimento tra il TCP/IP e il modello OSI; approssimativo poiché non è sempre così rigido, esistono, infatti, numerosi protocolli che viaggiano a cavallo tra più livelli (OSPF tra Internet e Transport) o che si poggiano su protocolli del medesimo livello (ICPM poiché lavora sull’IP).

Ma tutto ciò non c’interessa, perché noi lavoreremo solo sul livello Internet e in particolare sul protocollo IP.

Quello che segue non è propriamente necessario per fare in modo che riusciate a configurare la vostra rete, ma vi da quel livello di conoscenza base che potrebbe esservi utile; se il vostro scopo è solamente quello di rendervi operativi e trovate questo paragrafo molto complesso, non esitate a passare al successivo.

Cerchiamo di capire innanzitutto cosa significano questi livelli.

Il livello fisico (“Physical”) è quello che definisce come i dispositivi di rete debbano comunicare, ad esempio a che intensità debbano viaggiare i segnali e a quale frequenza.

Il “Data Link” connette tra loro questi dispositivi definendo la modalità di scambio di informazioni, chi abbia diritto di accedere al mezzo fisico in questo momento e come possa contattare un determinato dispositivo appartenente alla propria rete.

“Internet” estende questa capacità di comunicazione rendendo ogni dispositivo teoricamente raggiungibile e rintracciabile in una rete che non è direttamente connessa, ma distribuita (Internet ad esempio, ma anche Intranet).

Il “Transport” (per quanto concerne questo articolo) si occupa della comunicazione corretta e completa tra le applicazioni; è laddove vengono definite le porte che permettono di mettere in comunicazione l’applicazione corretta con la sua controparte remota.

Infine “Application”, sono tutti quei protocolli che sono a diretto contatto con l’utente e con le applicazioni che lui usa. Questo non significa che le applicazioni stiano solo qua; ci sono servizi che lavorano anche su livelli inferiori, ma raramente sono sotto il controllo dell’utente.

 

Perché vi sto parlando di tutto questo?

E’ molto importante aver ben chiaro in mente questi limiti; molto spesso si cerca la fonte di problemi nel posto sbagliato, quando non si è capaci di fare questa distinzione.

Quindi meglio avere subito in mente di cosa si sta parlando: qui tratteremo il livello Network e nient’altro!

Niente posta elettronica, cartelle condivise e permessi… solo connettività Internet!

3.   Nomi e indirizzi

Innanzi tutto chiariamo la differenza tra un nome e un indirizzo.

Entrambi servono ad identificare un host (utilizzerò questa parola al posto di computer o macchina poiché più generica), ma sono diversamente significativi; sarò più chiaro in seguito.

Prendiamo un nome DNS tipo: www.contoso.it.

Va letto da destra a sinistra e ci informa che nel dominio della rete italiana abbiamo un dominio “contoso” al quale interno si trova l’host www.

Questo dominio è puramente logico e non fisico, infatti la macchina www potrebbe benissimo trovarsi fisicamente nella Cambogia del nord o in orbita su qualche satellite; in questo modo non ci è dato saperlo e probabilmente non ci interessa neppure.

Allora sorge una domanda: come fa una macchina a rintracciarlo, se questo nome non mi dice assolutamente nulla di dove si trovi?

Semplice, esiste una rubrica o meglio un’intera infrastruttura di rubriche; si chiamano DNS server o server di nomi di dominio.

 

I DNS server hanno il compito di tradurre questi nomi in indirizzi IP numerici, molto più chiari per le macchine poiché definiscono una reale gerarchia; questi indirizzi IP hanno il formato tipo 151.99.250.4, ovvero 4 numeri decimali da 0 a 255 (o più correttamente 4 ottetti di bit).

Come questi DNS funzionino per ora non ha importanza, approfondiremo in seguito; ora l’importante è capirne l’importanza.

Gli indirizzi IP si leggono diversamente, da sinistra a destra, e il loro significato è più complesso dei nomi; i punti non separano necessariamente una gerarchia, ma sicuramente posso dire che le macchine che cominciano per 151.99 si trovino “vicino”; vicino nell’albero di rete, anche se a centinaia di chilometri di distanza.

 

Infine esiste un secondo tipo di nome, quello più comune che è usato per nominare i computer.

Quante volte vi è capitato di connettervi ad un computer usando solo il suo nome? Esempio PCUFFICIO o PCANDREA ecc… (Benché questi non siano nomi che consiglio di usare, sono quelli più comuni che mi capita di trovare).

Questo non è solo il nome del computer, ma anche il suo nome NETBIOS e in rete locale si può usare; si usa solo localmente, mentre su internet non ha valore.

Nell’implementazione MS il nome NETBIOS aggiunto al dominio di appartenenza forma il FQDN (Fully Qualified Domain Name) o, come lo abbiamo chiamato per semplicità, nome DNS.

Es. PC01 + CONTOSO.IT = PC01.CONTOSO.IT

 

Ricordiamoci questi 3 nomi: indirizzo IP, nome DNS (o FQDN) e nome NETBIOS.

4.   Subnet

Spieghiamo ora come creare una sottorete o subnet e che scopo abbia.

Indirizzo IP di una scheda e Subnet Mask sono strettamente legati e viaggiano sempre assieme; un tempo c’era anche una relazione tra di essi (non cominciate a ridere ;-) è vero!), ma ora non è più necessaria.

Per capirla, dobbiamo tradurre l’indirizzo in formato binario; è semplice, basta usare la calcolatrice di Windows in formato scientifico.

Prendiamo l’indirizzo di prima (151.99.250.4) e trasformiamolo in binario, ottetto per ottetto.

Otteniamo 10010111.01100011.11111010.00000100 (ricordate sempre gli 0 prima dei numeri per riempire i 4 ottetti).

Associamoci all’indirizzo IP una semplice subnet mask 255.255.0.0, ovvero 11111111.11111111.00000000.00000000

 

Il passo successivo è quello di azzerare con gli ‘0’ della maschera i valori dell’indirizzo IP e mantenere il resto.

 

IP

1

0

0

1

0

1

1

1

.

0

1

1

0

0

0

1

1

.

1

1

1

1

1

0

1

0

.

0

0

0

0

0

1

0

0

Maschera

1

1

1

1

1

1

1

1

.

1

1

1

1

1

1

1

1

.

0

0

0

0

0

0

0

0

.

0

0

0

0

0

0

0

0

Subnet

1

0

0

1

0

1

1

1

.

0

1

1

0

0

0

1

1

.

0

0

0

0

0

0

0

0

.

0

0

0

0

0

0

0

0

 

La sottorete ottenuta sarà 10010111.01100011.00000000.00000000, ovvero 151.99.0.0; questo indirizzo viene anche usato per il nome della sottorete.

Cosa significa?

Tutti gli indirizzi che cominciano per 151.99 si trovano nella stessa sottorete; quindi il computer 151.99.250.5 si trova nella stessa sottorete, come 151.99.124.32.

 

Operativamente cosa significa?

Se io tento di chiamare il computer 151.99.124.32 dal 151.99.250.4 non ho bisogno di muovermi all’esterno dalla sottorete e mi basta “urlare” il suo indirizzo tramite un “broadcast locale”.

Al contrario per chiamare 151.108.112.44 dovrò uscire dalla mia rete e cercarlo altrove, questo si ottiene tramite i gateway… vedremo in seguito.

 

Vediamo ora subnet mask più complesse: 255.255.240.0 ovvero 11111111.11111111.11110000.00000000 è abbastanza comune.

Non è così semplice in decimale dire qual è il valore della sottorete, perché un numero è mascherato a metà.

L’importante è ricordare che i primi 20 bit (in questo caso) debbano essere uguali.

La conversione a binario diventa così essenziale.

Ricordate inoltre che nelle maschere non si spezzano mai le sequenze di 1 per inserire uno 0, è una pratica sconsigliata.

 

Perché si creano subnet? Per poter utilizzare dei gateway e definire un confine alla propria rete; ne parleremo in seguito.

5.   Subnetting

Prima dell’introduzione del subnetting esistevano regole rigide sulla costruzione delle subnet, parte di quel retaggio rimane ancora in uso.

Ancora, questo paragrafo è puramente culturale, saltatelo se ne sentite la necessità.

 

Innanzi tutto s’identifica la classe leggendo i bit più significativi del primo ottetto, quelli che iniziano ad esempio con uno ‘0’ sono di classe A; la successiva classe B ha un ‘1’ subito seguito da uno ‘0’, mentre la classe C deve avere due ‘1’ e uno ‘0’.

Esiste ovviamente anche una classe D, ma è riservata e non ne parleremo qui.

 

Classe A

0

x

x

x

x

x

x

x

255.0.0.0

Classe B

1

0

x

x

x

x

x

x

255.255.0.0

Classe C

1

1

0

x

x

x

x

x

255.255.255.0

 

Ogni classe possiede una subnet alla quale essa è associata e con la quale andrebbe usata, ma oggi questa è solo una indicazione e non più una regola.

Infatti nella rete 192.168.x.x (che vedremo dopo) appartenente alla classe C, spesso si associano sottoreti più piccole o più grandi; esse ci permettono di avere un maggior numero di sottoreti con pochi host o viceversa.

Ad esempio, se associamo una sottorete più ridotta con maschera 255.255.255.240, avremo solo 4 bit per gli host (ovvero 2^4 – 2 = 14 indirizzi, il perché a dopo) e 4 bit in più per definire le sottoreti.

6.   Indirizzi IP privati

La tentazione più comune è sempre stata quella di inventarsi gli indirizzi IP nei computer della rete e sperare che vada tutto.

E’ un grave errore, anche nel caso funzioni; spieghiamo il perché…

 

Gli indirizzi in Internet hanno una rigida diffusione e non esistono 2 macchine con lo stesso indirizzo, come neppure 2 sottoreti; altrimenti non si sarebbe più sicuri di che strada prendere per raggiungerli, provenendo da due direzioni differenti ci si potrebbe imbattere in una o l’altra sottorete e quindi contattare 2 host differenti.

Per questo è importante sapere quali indirizzi vanno utilizzati per i propri host; se per caso io assegnassi al mio computer l’indirizzo 207.46.245.156, scoprirei che corrisponde all’host www.microsoft.com; dopo questo errore, non potrei in nessun modo sperare di vedere le pagine internet del sito Microsoft.

Tutto ciò perché sarà il mio computer a rispondere una volta che il DNS mi avrà comunicato che www.microsoft.com=207.46.245.156!

Dopotutto 207.46.254.156 è in locale e non mi serve uscire su internet… ricordate le subnet?

 

Anzi, non avrò solo mascherato la macchina 207.46.245.156, ma se avessi sperperato utilizzando una subnet mask del tipo 255.0.0.0 non vedrei tutti gli host che iniziano per 207! Ben 16 milioni!!!

Perché? Ovvio, il mio stack IP tenterebbe sempre di contattare l’host stando in locale.

 

Allora come si può fare? Che indirizzi posso dare alla mia rete senza andare in conflitto con quelli assegnati su Internet?

Semplice, basta consultare l’RFC 1918 che ci dice quali indirizzi possiamo usare per le intranet, in altre parole le reti locali.

 

Il capitolo 3 elenca i seguenti:

 

Inizio

10.0.0.0

172.16.0.0

192.168.0.0

Fine

10.255.255.255

172.31.255.255

192.168.255.255

Maschera max.

255.0.0.0

255.240.0.0

255.255.0.0

 

Sconsiglio ai novizi di utilizzare quella di mezzo, è molto più semplice la prima che è anche la più facile da ricordare.

Inoltre si possono utilizzare gli interi ottetti a piacimento per suddividere le macchine in “gruppi”. Esempio, le macchine 10.1.x.x sono al piano terra, mentre le 10.2.x.x al primo…

Nel caso la vostra rete locale sia spezzata da uno o più router troverete utile usare la maschera 255.255.0.0; com’è facile calcolare si avranno 8 bit per le reti (l’intero secondo ottetto) e 16 per gli host, ai quali corrispondono 256 reti e 65.536 – 2 host.

Si evita di utilizzare gli estremi della sottorete (il primo e l’ultimo numero) perché sono riservati; si usa, infatti, indicare la subnet utilizzando il primo indirizzo a disposizione (ovvero 10.0.0.0) e il broadcast con l’ultimo (10.255.255.255).

 

Quelli appena elencati sono i Private Address e non sono da nessuna parte presenti in Internet e non possono in nessun modo essere raggiunti da Internet. Significa che i computer che li possiedono non saranno visibili su internet (perché non-routable), ma in rete locale sì.

Altra cosa da notare è che esiste un altro insieme di indirizzi: 169.254.0.0169.254.255.255 con maschera 255.255.0.0

Essi sono utilizzati dall’APIPA (Automatic Private IP Addressing) quando un server DHCP non è disponibile.

I server DHCP sono quelli che si occupano di assegnare ad una macchina un indirizzo IP, quando non ne è stato configurato uno manualmente.

Quando una scheda di rete viene impostata per ottenere automaticamente l’indirizzo IP, essa cerca inizialmente un server DHCP che le dica come configurarsi e se non lo trova si auto-configura nella classe APIPA.

Immaginate un portatile che viene connesso a numerose reti… se in ognuna di esse ci fosse un servizio DHCP, non ci sarebbero problemi.

E qualora non ci fosse, tutti i computer si troverebbero in ogni caso nella classe APIPA e potrebbero tranquillamente comunicare.

7.   Gateway

A che servono?

Sono le porte di uscita della nostra subnet. Spesso portano su internet, ma in reti complesse connettono tra loro più subnet (Internet è costruita proprio così).

Quando sono usati?

Ogni volta che si richiede un indirizzo che non si trovi nella subnet, la scheda di rete chiede al default gateway di stabilire la connessione a nome suo.

Ma cosa sono?

Gateway è un nome generico che definisce anche i router e i bridge; oggi sono molto comuni i router ADSL, sono dispositivi che permettono di condividere una singola connessione internet ADSL con più macchine.

E’ ora facile capire perché tutti i computer locali debbano stare nella stessa subnet; altrimenti la scheda di rete (anzi lo stack IP) andrebbe a chiedere al router di metterla in comunicazione, ma non è corretto.

 

Si capisce facilmente che i gateway possiedono 2 indirizzi IP, uno per ciascuna rete che connettono, entrambi gli indirizzi devono appartenere alle rispettive subnet; spesso si utilizza il primo o ultimo indirizzo disponibile della subnet (escludendo i “tutti 0” e “tutti 1”, ad esempio 192.168.0.1 o 192.168.255.254).

Questi dispositivi fungono spesso da DHCP e DNS forwarder.

8.   DHCP

Velocemente, ne abbiamo infatti già parlato precedentemente; sono server o servizi che si occupano di auto-configurare i dispositivi di rete, impostano in genere indirizzi IP, maschera, default gateway e DNS.

Si trovano spesso su router (ADSL o ISDN) e impostano (ovviamente) gateway e DNS affinché puntino su se stessi.

Anche il servizio di condivisione internet (ICS) di Windows 2000 o superiori ha un mini DHCP (come anche un mini DNS e un mini router).

Attenzione a non impostare 2 DHCP server sulla stessa rete, se non siete esperti.

 

Possono essere utilizzati per configurare una grossa quantità di parametri, tra i più importanti i server di posta e il suffisso di dominio.

E’ possibile muoversi, ad esempio, con un portatile da una rete all’altra senza doverne toccare la configurazione, se configurati adeguatamente.

9.   Il necessario per una piccola rete

Sintetizzando, cosa serve affinché i computer si “vedano” e riescano a navigare?

Se esiste un router che fornisce servizio di DHCP (oppure avete attivato l’ICS, la condivisione internet di Windows), basta che ponete le schede affinché acquisiscano automaticamente la configurazione.

Altrimenti dovete impostare la configurazione a mano; scegliete un insieme di indirizzi privati come indicato nel paragrafo 6 e impostate il DNS e il gateway sull’indirizzo del router.

Ricordate che l’interfaccia del router deve trovarsi nella stessa subnet dei vostri dispositivi.

 

Tutto qui, è breve, ma non semplice.

Se non avete capito rileggete attentamente i paragrafi precedenti.

10.         DNS e Active Directory

Questo paragrafo tratta la relazione tra il server DNS e i domini Active Directory, se non possedete un dominio Active Directory dato da server Windows 2000 o 2003 saltate il paragrafo.

 

Come già detto il DNS spesso non si trova nella rete locale e il router fa le veci del DNS remoto del provider di accesso ad internet.

Ma qualora fosse necessario istallare un DNS locale, cosa dovremmo fare?

Se ad esempio volessimo creare un dominio Active Directory con Windows 2003 Server, avremmo bisogno di un DNS locale? Certo!

 

In Active Directory il servizio DNS serve per definire lo scheletro della stessa, AD non potrebbe funzionare senza.

Quindi è chiaro che il DNS non può essere quello del nostro provider ISP, ma ne abbiamo bisogno uno locale configurato come serve a noi.

Una volta creato il servizio DNS locale e configurati i client per puntare al DNS del dominio AD, noteremo che non riusciremo più a navigare su internet… come mai?

Il server locale non ha informazioni per il resto della rete (internet), allora dobbiamo abilitare l’inoltro su altri server DNS che possiedano queste informazioni.

Egli stesso si informerà da altri se non riuscirà a risolvere le nostre richieste personalmente.

 

Per abilitare l’inoltro su un servizio DNS Windows basta rimuovere la zona “.” dalla console DNS nelle “Forward Lookup Zones”, chiudere e riaprire la console e premere proprietà sul server DNS.

Nel tab Forwarders potremmo configurarli come necessario. Da notare è che spesso il router funge da DNS proxy per l’ISP, quindi è corretto puntare ad esso e non farsi dare gli indirizzi dall’ISP (perché essi un giorno potrebbero cambiare).

 

Un’eccezione alla regola è Windows 2003 che è già configurata per contattare i Root DNS Server e quindi non ha bisogno di un inoltro, anzi è sconsigliato per ragioni di sicurezza.

11.         Troubleshooting

I seguenti strumenti sono da utilizzare per identificare gli errori più comuni; sono comandi eseguibili dal prompt dei comandi.

NB spesso i firewall bloccano l’utilizzo di questi strumenti, quindi verificate che siano disattivati tutti sul percorso e sui computer prima di utilizzarli; ricordate alla fine di riattivarli.

a)      IPConfig

Visualizza la configurazione di ogni scheda di rete presente sul computer.

Con “IPConfig /all” (oppure “/showall” per versioni precedenti di Windows) potete mostrare l’intera configurazione.

Spesso con solo questo comando si può capire dove sta il problema.

Esso è anche lo strumento che ci può dire come mai un server DHCP ha configurato erroneamente un computer o magari non è stato configurato per niente (ricordate APIPA?).

b)      Ping

Il modo più semplice per trovare un computer è inviare una chiamata allo stesso, iniziate sempre con “ping INDIRIZZOIP”.

Infatti è possibile pingare tutti e tre i nominativi nel paragrafo 3, ma pingare un nome DNS o un NETBIOS comporta sempre del lavoro aggiuntivo al protocollo che potrebbe confonderci le idee.

 

Infatti implicano la risoluzione di nomi, compito aggiuntivo che in questa fase non è di nostro interesse.

Se un “ping NOMEDNS” non funziona, potrebbe anche darsi che il server DNS non sia raggiungibile, quindi provate successivamente con un “ping DNSSERVER”.

c)       Tracert

Il trace route è uno strumento avanzato che ci permette di esaminare il percorso intrapreso dai pacchetti prima di raggiungere la destinazione finale ed eventualmente trovare l’interruzione.

12.         Conclusioni

Non è un argomento semplice, per questo motivo, invito sempre le persone a impostare le reti nel modo più semplice possibile.

Ci siamo anche soffermati su pochissimi aspetti delle stesse, l’argomento è vastissimo; ora sapete come collegare due host, ma questo non è sicuramente tutto.

Se il ping funziona, significa che i due computer comunicano, ma avere accesso alle risorse è tutto un altro discorso!

Andrea Gallazzi [MS MVP Windows Security]

andreamvp@krisopea.it