Spiegazione del subnetting e della notazione CIDR (con esempi)
IPAddress-Lookup.com ·
Se ti è mai capitato di fissare un indirizzo come 192.168.1.0/24 e vi siete chiesti cosa significassero effettivamente quella barra e quel numero, siete proprio nel posto giusto. Il subnetting e la notazione CIDR sono alla base della progettazione, della sicurezza e dell’instradamento delle reti moderne, eppure l’argomento ha la reputazione di essere intimidatorio. Ma non deve necessariamente esserlo. Una volta compreso che un indirizzo IP è in realtà solo una stringa di bit e che una maschera di sottorete indica semplicemente dove finisce la parte "rete" e dove inizia quella "host", tutto il resto va a posto. In questa guida svilupperemo il concetto partendo dai principi fondamentali, analizzeremo diversi esempi reali in modo esaustivo e ti forniremo una scheda riassuntiva da tenere accanto alla tastiera. Lungo il percorso potrai verificare personalmente ogni calcolo con il nostro strumento "Calcolatore di sottoreti".
Che cos’è una sottorete e perché la si crea?
Una sottorete, abbreviazione di subnetwork, è una suddivisione logica di una rete IP più ampia. Anziché collocare ogni dispositivo su un’unica enorme rete piatta, gli ingegneri suddividono lo spazio di indirizzamento in blocchi più piccoli e autonomi. Ogni blocco è una sottorete con un proprio intervallo di indirizzi, un proprio indirizzo di rete e un proprio indirizzo di broadcast. I router smistano il traffico tra le sottoreti, mentre i dispositivi all’interno di una singola sottorete possono comunicare tra loro direttamente senza l’intervento di un router.
Il subnetting non è un’operazione superflua. Esistono diverse ragioni concrete per cui le reti vengono suddivise in questo modo:
- Efficienza e risparmio di indirizzi. Assegnare a un’organizzazione un unico blocco gigantesco comporta uno spreco di indirizzi. La suddivisione in sottoreti consente di allocare esattamente il numero di indirizzi di cui un reparto, un piano o una filiale ha effettivamente bisogno, anziché arrotondare per eccesso alla classe più grande disponibile.
- Domini di broadcast più piccoli. Alcuni tipi di traffico, come le richieste ARP, vengono trasmessi in broadcast a tutti gli host di una sottorete. In una rete piatta con migliaia di dispositivi, questo traffico diventa paralizzante. La suddivisione in sottoreti mantiene piccoli i domini di broadcast e garantisce la velocità della rete.
- Segmentazione di sicurezza. Collocando server, rete Wi-Fi per gli ospiti e postazioni di lavoro interne su sottoreti separate, è possibile applicare regole firewall ed elenchi di controllo degli accessi tra di esse. Un dispositivo ospite compromesso non può raggiungere un server di database se i due si trovano su sottoreti isolate.
- Routing più semplice e veloce. I router prendono decisioni in base ai prefissi di rete. Le sottoreti ben progettate possono essere sintetizzate in un unico percorso, riducendo le tabelle di routing e velocizzando le decisioni di inoltro su Internet.
Un breve ripasso sui concetti binari: bit, ottetti e maschere
Un indirizzo IPv4 è lungo 32 bit. Lo scriviamo come quattro numeri decimali separati da punti, ad esempio 192.168.1.10, ma ciascuno di questi numeri è in realtà un gruppo binario di 8 bit chiamato ottetto. Otto bit per ottetto, quattro ottetti, equivalgono a 32 bit in totale. Ogni ottetto può contenere un valore compreso tra 0 e 255, poiché otto bit possono rappresentare 2^8 = 256 valori distinti.
Le posizioni dei bit in un ottetto hanno i valori di ordine 128, 64, 32, 16, 8, 4, 2 e 1. Per effettuare la conversione, si sommano le posizioni che contengono un 1. Ad esempio, l’ottetto 11000000 è 128 + 64 = 192, e 10101000 è 128 + 32 + 8 = 168. Quindi 192.168.1.10 in binario è:
- 192 =
11000000 - 168 =
10101000 - 1 =
00000001 - 10 =
00001010
La subnet mask è un altro valore a 32 bit, ma è speciale: è sempre una sequenza di 1 seguita da una sequenza di 0. Gli 1 indicano la parte di rete dell'indirizzo e gli 0 indicano la parte host. Una subnet mask di 255.255.255.0 è 11111111.11111111.11111111.00000000 in binario, ovvero 24 uno seguiti da 8 zero. Per individuare la rete a cui appartiene un indirizzo, si esegue un AND bit a bit tra l’indirizzo e la maschera: ovunque la maschera contenga un 1, il bit dell’indirizzo viene mantenuto; ovunque la maschera contenga uno 0, il bit diventa 0. Quell’operazione AND è il calcolo più importante in assoluto in tutto il processo di suddivisione in sottoreti.
Indirizzamento per classi: una breve lezione di storia
Agli albori di Internet, gli indirizzi venivano assegnati in «classi» fisse in base al valore del primo ottetto. Questo sistema è chiamato «indirizzamento per classi» e, sebbene sia ormai obsoleto, comprenderlo spiega perché il CIDR abbia rappresentato un miglioramento così significativo.
- La classe A copriva i primi ottetti da 1 a 126 e utilizzava una porzione di rete a 8 bit (maschera
255.0.0.0, una/8) e assegnava a ciascuna rete circa 16,7 milioni di host. - La classe B copriva i valori da 128 a 191, utilizzava una porzione di rete a 16 bit (maschera
255.255.0.0, a/16) e offriva circa 65.000 host per rete. - La classe C copriva gli indirizzi da 192 a 223, utilizzava una porzione di rete a 24 bit (maschera
255.255.255.0, a/24) e forniva solo 254 host utilizzabili.
Il problema era la rigidità. Un’organizzazione che necessitava di 2.000 indirizzi era troppo grande per una Classe C (254 host), ma doveva ricevere una Classe B (65.000 host), sprecando oltre 60.000 indirizzi. Con la crescita esponenziale di Internet, questo spreco rischiava di esaurire completamente lo spazio IPv4. Era necessaria una soluzione più flessibile.
Ecco il CIDR: la notazione spiegata bit per bit
Il CIDR, o Classless Inter-Domain Routing, è stato introdotto nel 1993 per sostituire il rigido sistema a classi. Anziché legare la dimensione della rete al primo ottetto, il CIDR consente di collocare il confine tra rete e host in qualsiasi punto dei 32 bit. Lo esprimiamo con la ormai familiare notazione con la barra, chiamata prefisso CIDR.
Il numero dopo la barra è semplicemente il numero di bit pari a 1 nella maschera di sottorete, in altre parole quanti bit appartengono alla rete. Quindi:
/8significa 8 bit di rete, maschera255.0.0.0(la vecchia dimensione di Classe A)./16significa 16 bit di rete, maschera255.255.0.0(la vecchia dimensione di Classe B)./24significa 24 bit di rete, maschera255.255.255.0(la vecchia dimensione di Classe C)./26significa 26 bit di rete, maschera255.255.255.192, lasciando solo 6 bit di host.
La formula magica per calcolare quanti indirizzi contiene un prefisso è 2^(32 − n), dove n è la lunghezza del prefisso. Poiché l’intero spazio IPv4 è di 32 bit, sottraendo i bit di rete rimangono i bit di host, e 2 elevato a tale potenza fornisce il numero totale di indirizzi nel blocco. Per un /24 questo caso sono 2^(32−24) = 2^8 = 256 indirizzi totali. Per un /26 sono 2^(32−26) = 2^6 = 64 indirizzi. Maggiore è il numero del prefisso, più piccola è la sottorete.
Calcolo dei valori chiave di una sottorete
Ogni sottorete ha una serie di indirizzi speciali che dovrete identificare. Ecco cosa significa ciascuno di essi e come trovarlo.
- Indirizzo di rete. Il primissimo indirizzo del blocco. Tutti i bit host sono 0. Questo identifica la sottorete stessa e non può essere assegnato a un dispositivo.
- Indirizzo di broadcast. L’ultimo indirizzo del blocco. Tutti i bit host sono 1. Il traffico inviato a questo indirizzo raggiunge tutti gli host della sottorete, quindi non è utilizzabile come indirizzo host.
- Primo host utilizzabile. Un indirizzo sopra l’indirizzo di rete (rete + 1).
- Ultimo host utilizzabile. Un indirizzo al di sotto dell’indirizzo di broadcast (broadcast − 1).
- Numero totale di indirizzi. 2^(32 − n).
- Host utilizzabili. Il totale meno 2, poiché gli indirizzi di rete e di broadcast sono riservati. La formula è 2^(32 − n) − 2.
C’è un altro valore che vale la pena conoscere: la maschera jolly. È l’inverso della maschera di sottorete, ottenuta invertendo ogni bit (sottraendo 255 da ciascun ottetto). Laddove una maschera di sottorete di 255.255.255.0 seleziona la rete, la sua maschera jolly 0.0.0.255 seleziona l’intervallo di host. Le maschere jolly compaiono costantemente nelle liste di controllo degli accessi Cisco e nella configurazione OSPF, quindi vale la pena riconoscerle.
Esempio pratico 1: 192.168.1.0/24
Cominciamo con il caso più semplice possibile. Un /24 termina nettamente su un confine di ottetto, quindi non sono necessarie operazioni binarie complesse. Con 24 bit di rete, la porzione host è l’intero ultimo ottetto.
| Proprietà | Valore |
|---|---|
| Notazione CIDR | 192.168.1.0/24 |
| Maschera di sottorete | 255.255.255.0 |
| Maschera jolly | 0.0.0.255 |
| Indirizzo di rete | 192.168.1.0 |
| Indirizzo di broadcast | 192.168.1.255 |
| Primo host utilizzabile | 192.168.1.1 |
| Ultimo host utilizzabile | 192.168.1.254 |
| Totale indirizzi | 256 (2^8) |
| Host utilizzabili | 254 |
Questa è la classica rete domestica e per piccoli uffici. Tutto, da .1 a .254 è disponibile per i dispositivi, .0 indica il nome della rete, mentre .255 è l'indirizzo di broadcast.
Esempio pratico 2: 10.0.0.0/26
Ora consideriamo un prefisso che non cade su un confine di ottetto. Un /26 indica 26 bit di rete, quindi l’ultimo ottetto viene suddiviso: i primi due bit appartengono alla rete e i restanti sei bit sono bit di host. Sei bit di host danno 2^6 = 64 indirizzi totali per sottorete. Ciò significa che /26 le sottreti si susseguono con incrementi di 64 nell’ottetto finale: 0, 64, 128, 192.
Concentrandosi sul primo blocco 10.0.0.0/26, la maschera di rete è 255.255.255.192 perché 11000000 nell’ultimo ottetto è pari a 192.
| Proprietà | Valore |
|---|---|
| Notazione CIDR | 10.0.0.0/26 |
| Maschera di sottorete | 255.255.255.192 |
| Maschera jolly | 0.0.0.63 |
| Indirizzo di rete | 10.0.0.0 |
| Indirizzo di broadcast | 10.0.0.63 |
| Primo host utilizzabile | 10.0.0.1 |
| Ultimo host utilizzabile | 10.0.0.62 |
| Totale indirizzi | 64 (2^6) |
| Host utilizzabili | 62 |
La sottorete successiva nella sequenza sarebbe 10.0.0.64/26 (host da .65 a .126, broadcast .127), poi 10.0.0.128/26, e infine 10.0.0.192/26. Si noti come la dimensione del blocco, 64, sia esattamente il "numero magico" che determina dove inizia ogni sottorete.
Esempio pratico 3: 172.16.5.0/28
Il nostro ultimo esempio riduce ulteriormente le dimensioni della sottorete. Una /28 ha 28 bit di rete e solo 4 bit di host, per un totale di 2^4 = 16 indirizzi e solo 14 host utilizzabili. L’ottetto finale è utilizzato 11110000 per la porzione di rete, che equivale a 240, quindi la maschera è 255.255.255.240. Le sottoreti si incrementano a passi di 16.
| Proprietà | Valore |
|---|---|
| Notazione CIDR | 172.16.5.0/28 |
| Maschera di sottorete | 255.255.255.240 |
| Maschera jolly | 0.0.0.15 |
| Indirizzo di rete | 172.16.5.0 |
| Indirizzo di broadcast | 172.16.5.15 |
| Primo host utilizzabile | 172.16.5.1 |
| Ultimo host utilizzabile | 172.16.5.14 |
| Totale indirizzi | 16 (2^4) |
| Host utilizzabili | 14 |
A /28 è una dimensione molto diffusa per le piccole reti punto-punto e per i segmenti di server strettamente controllati in cui si desidera disporre solo di pochi indirizzi. Se servissero solo due host, ad esempio per un collegamento tra due router, si scenderebbe fino a un /30, che offre esattamente 2 indirizzi utilizzabili.
La tabella di riferimento per il subnetting
Anziché ricalcolare ogni volta le potenze di due, memorizzate o aggiungete ai preferiti la tabella qui sotto. Copre i prefissi più comuni da /24 fino a /30, indicando la maschera, il carattere jolly, la dimensione del blocco (numero totale di indirizzi) e il numero di host utilizzabili.
| CIDR | Maschera di sottorete | Carattere jolly | Indirizzi totali | Host utilizzabili |
|---|---|---|---|---|
| /24 | 255.255.255.0 | 0.0.0.255 | 256 | 254 |
| /25 | 255.255.255.128 | 0.0.0.127 | 128 | 126 |
| /26 | 255.255.255.192 | 0.0.0.63 | 64 | 62 |
| /27 | 255.255.255.224 | 0.0.0.31 | 32 | 30 |
| /28 | 255.255.255.240 | 0.0.0.15 | 16 | 14 |
| /29 | 255.255.255.248 | 0.0.0.7 | 8 | 6 |
| /30 | 255.255.255.252 | 0.0.0.3 | 4 | 2 |
Si noti l’elegante schema: ogni passo di un bit nel prefisso dimezza il numero di host, e ogni valore della maschera nell’ultimo ottetto è uno tra 128, 192, 224, 240, 248, 252. Questi sono gli unici valori validi che l’ottetto finale della maschera può assumere.
VLSM: sottoreti di dimensioni diverse
Il subnetting tradizionale suddivide una rete in parti di dimensioni uguali, il che rappresenta uno spreco quando i vari reparti hanno esigenze molto diverse. Il Variable Length Subnet Masking (VLSM) risolve questo problema consentendo di applicare lunghezze di prefisso diverse all’interno della stessa rete complessiva. In pratica, si crea una sottorete all’interno di una sottorete.
Supponiamo di possedere 192.168.10.0/24 e devi servire un reparto di 100 host, uno di 50 host e due collegamenti router di 2 host ciascuno. Con il VLSM assegneresti:
- A
/25(126 host) per il reparto più grande:192.168.10.0/25. - A
/26(62 host) per il reparto medio:192.168.10.128/26. - Due
/30blocchi (2 host ciascuno) per i collegamenti dei router, ricavati dallo spazio rimanente.
La regola d’oro del VLSM è quella di assegnare prima le sottoreti più grandi e procedere poi verso il basso, in modo che i blocchi si incastrino perfettamente senza sovrapporsi. È così che i piani di indirizzamento reali evitano gli sprechi, lasciando comunque spazio per la crescita.
Una nota sui prefissi IPv6
Tutto quanto sopra riguarda l’IPv4, ma la notazione CIDR si applica direttamente anche all’IPv6, solo con numeri molto più grandi. Un indirizzo IPv6 è di 128 bit anziché 32, quindi i prefissi arrivano fino a /128. Il più importante da conoscere è il /64: secondo una convenzione consolidata, una singola sottorete IPv6 è un /64, che riserva i primi 64 bit al prefisso di rete e gli ultimi 64 bit all’host, ovvero all’“identificatore di interfaccia”. Ciò lascia 2^64 indirizzi per sottorete, un numero quasi inimmaginabile, motivo per cui IPv6 raramente si preoccupa di quelle acrobazie di risparmio di indirizzi che caratterizzano il subnetting di IPv4. Se desideri un confronto più approfondito tra i due protocolli, consulta la nostra guida su IPv4 vs IPv6.
Riassumendo
La suddivisione in sottoreti si riduce a tre concetti fondamentali: un indirizzo IP è composto da 32 bit, la maschera determina dove termina la rete e la formula 2^(32 − n) indica la dimensione di ciascun blocco. Una volta padroneggiati questi concetti, il resto è semplice aritmetica. Inizia identificando il prefisso, convertilo in una dimensione di blocco, individua gli indirizzi di rete e di broadcast: l’intervallo utilizzabile si trova tra di essi. Esercitati su alcuni esempi e il processo diventerà naturale. Se vuoi verificare immediatamente il tuo lavoro, inserisci un indirizzo e un prefisso qualsiasi nel nostro strumento Calcolatore di sottoreti e confronta i risultati con i tuoi.
Domande frequenti
Perché sottraiamo 2 dal numero totale di indirizzi per ottenere gli host utilizzabili?
In ogni sottorete IPv4 due indirizzi sono riservati e non possono essere assegnati ai dispositivi: l’indirizzo di rete (tutti i bit host impostati a 0), che identifica la sottorete, e l’indirizzo di broadcast (tutti i bit host impostati a 1), utilizzato per raggiungere contemporaneamente tutti gli host. Sottraendo questi due si ottiene il numero di indirizzi che è effettivamente possibile assegnare agli host, ovvero 2^(32 − n) − 2.
Qual è la differenza tra una maschera di sottorete e un prefisso CIDR?
Esprimono esattamente la stessa informazione in due formati diversi. Una maschera di sottorete come 255.255.255.0 è un valore decimale con punti a 32 bit, mentre il prefisso CIDR /24 è semplicemente il numero di bit impostati a 1 in quella maschera. Qualsiasi maschera può essere scritta come prefisso e viceversa; la notazione CIDR è semplicemente più breve e meno soggetta a errori.
Cosa significa in realtà il /24 in un indirizzo IP?
Il numero dopo la barra indica la lunghezza del prefisso, ovvero quanti dei 32 bit dell’indirizzo definiscono la rete. Un /24 riserva i primi 24 bit alla rete e lascia 8 bit agli host, generando 256 indirizzi totali (2^8) e 254 utilizzabili. È equivalente alla subnet mask 255.255.255.0.
Perché il CIDR ha sostituito l’indirizzamento per classi?
L’indirizzamento classful costringeva le dimensioni delle reti a fare salti enormi: 254 host, poi 65.000, poi 16 milioni, senza alcuna via di mezzo. Alle organizzazioni venivano regolarmente assegnati molti più indirizzi di quelli di cui avevano bisogno, con conseguente spreco dello spazio IPv4 limitato. Il CIDR consente di fissare il confine della rete su qualsiasi bit, in modo che i blocchi possano essere dimensionati in base alle esigenze, e permette inoltre di raggruppare le rotte, riducendo le tabelle di routing.
A cosa serve una maschera jolly?
Una maschera jolly è l’inverso bit per bit di una maschera di sottorete, ottenuta sottraendo 255 da ciascun ottetto. Mentre una maschera di sottorete corrisponde alla porzione di rete, una maschera jolly specifica quali bit possono variare. Appare principalmente nelle liste di controllo degli accessi Cisco e nei protocolli di routing come OSPF per descrivere in modo conciso gli intervalli di indirizzi.
Le stesse regole di sottorete si applicano anche a IPv6?
Il concetto CIDR è identico: una lunghezza del prefisso seguita da una barra indica il confine della rete. La differenza sta nella scala. Gli indirizzi IPv6 sono di 128 bit anziché 32, e la dimensione standard della sottorete è di /64, che fornisce 2^64 indirizzi host per sottorete. Poiché lo spazio è così vasto, la suddivisione in sottoreti IPv6 si concentra sulla struttura e sulla gerarchia piuttosto che sullo sfruttamento fino all’ultimo indirizzo disponibile.