IP Sub-Networking Mini-Howto

Robert Hart, hartr@interweft.com.au

v1.0, 31 March 1997


Questo documento descrive il perché e il come realizzare una sottorete in una rete IP, sia essa di Classe A, B o C, in modo tale che funzioni correttamente in presenza di un numero elevato di reti interconnesse. Traduzione a cura di Stefano di Sandro <stedis@radiolink.net>, ultima revisione 24 Gennaio 2000.

1. Copyright

This document is distributed under the terms of the GNU Public License (GPL).

This document is directly supported by InterWeft IT Consultants (Melbourne, Australia).

Questo documento è distribuito secondo i termini della GNU Public License (GPL).

Questo documento è direttamente supportato da InterWeft IT Consultants (Melbourne, Australia).

La versione aggiornata di questo documento è disponibile presso il sito WWW di InterWeft all'indirizzo InterWeft IT Consultants e presso il The Linux Documentation Project.

2. Introduzione

Con la progressiva evoluzione del numero degli indirizzi IP verso una specie protetta, è importante fare un uso efficiente di questa risorsa sempre più scarsa.

Questo documento spiega come suddividere un singolo indirizzo di rete IP in modo tale da poter essere usato per molte reti diverse.

Questo documento tratta specificatamente degli indirizzi di rete di classe C, ma allo stesso modo i principi esposti possono essere applicati alle reti di classe A e B.

2.1 Altre risorse informative

Vi è un buon numero di risorse informative di una certa rilevanza, sia specifica che di base, a proposito degli indirizzi IP. Quelle che l'autore raccomanda sono:

3. Anatomia di un indirizzo IP

Prima di immergerci nelle delizie del "sub-networking", abbiamo bisogno di stabilire alcuni concetti base sugli indirizzi IP.

3.1 Gli indirizzi IP appartengono alle Interfacce - NON agli host!

Per prima cosa, eliminiamo la causa di un errore fondamentale - gli indirizzi IP non sono assegnati agli host, ma bensì alle interfacce di rete presenti su un host.

Come? - E cosa sono?

Mentre molti (se non tutti) i computer di una rete IP avranno installata una singola interfaccia di rete (e avranno di conseguenza un singolo indirizzo IP), questo non accade sempre. Computer e altri dispositivi possono avere diverse (addirittura molte) interfacce di rete ciascuna delle quali con il proprio indirizzo IP.

Quindi un dispositivo con 6 interfacce attive (come un router) avrà 6 indirizzi IP - uno per ogni interfaccia connessa a una diversa rete. La ragione di ciò sarà chiara non appena daremo un'occhiata a una rete IP.

A dispetto di questo però, la gran parte della gente parla di indirizzo di questo host quando vuole riferirsi a un indirizzo IP. Ricordate soltanto che si tratta di un modo veloce per indicare l'indirizzo IP di questa interfaccia su questo host. Molti (ma non la maggior parte) dei dispositivi in Internet hanno un'unica interfaccia e quindi un solo indirizzo IP.

3.2 Indirizzi IP come "Quartetti Puntati"

Nella loro implementazione corrente (IPv4), gli indirizzi IP consistono di 4 byte - e forniscono un totale di 32 bit di informazione disponibile. Sono numeri piuttosto grandi (anche se espressi in notazione decimale). Così per aumentare la leggibilità (ma anche per ragioni di organizzazione) gli indirizzi IP vengono normalmente scritti con la notazione puntata. L'indirizzo

192.168.1.24
ne è un esempio - 4 numeri (decimali) separati con un punto (.) l'uno dall'altro.

Dal momento che ciascuno dei quattro numeri è la rappresentazione decimale di un byte, ciascuno dei quattro numeri può rappresentare i valori compresi tra 0 e 255 (per un totale di 256 valori diversi - si ricordi cha anche lo zero è un valore).

Una parte dell'indirizzo indentifica la rete a cui un host appartiene, i restanti bit identificano l'host stesso (ehm - l'interfaccia di rete). L'esatta suddivisione tra bit usati per indirizzare la rete e quelli disponibili per identificare gli host (interfacce) in quella rete sono determinati dalla 'classe' della rete.

3.3 Le Classi delle reti IP

Esistono tre classi di indirizzi IP

Riassumendo:

Classe della rete         Intervallo di valori disponibili 
                          sul primo byte (decimale)
        A                     da 1 a 126
        B                     da 128 a 191
        C                     da 192 a 254
Sono altresì previsti indirizzi speciali riservati alle reti "non connesse" - reti cioè che usano IP, ma non sono collegate alla Internet. Questi indirizzi sono:

Sì noterà come questo documento utilizzi queste sequenze di valori per evitare di generare 'confusione' con le reti reali e i loro host.

3.4 Indirizzi di rete, di interfaccia e di broadcast

Gli indirizzi IP possono avere tre differenti significati:

Riassumendo per essere più chiari:

Per una rete di Classe A...
(un byte nello spazio di indirizzamento di rete seguito da tre byte
per lo spazio destinato agli host)

        10.0.0.0 è un indirizzo di rete di classe A perché
                tutti i bit dello spazio destinato agli host sono 0
        10.0.1.0 è un host di quella rete
        10.255.255.255.255 è l'indirizzo di broadcast di quella rete  
                perché tutti i bit dello spazio destinato agli host
                sono 1

Per una rete di Classe B...
(due byte nello spazio di indirizzamento di rete seguito da due byte
per lo spazio destinato agli host)

        172.17.0.0 indirizzo di classe B
        172.17.0.1 un host in questa rete
        172.17.255.255 indirizzo di broadcast
        
Per una rete di Classe C...
(tre byte nello spazio di indirizzamento di rete seguito da un byte
per lo spazio destinato agli host)

        192.168.3.0 indirizzo di classe C
        192.168.3.42 un host in questa rete
        192.168.3.255 indirizzo di broacast
Tutti gli indiriizi di rete IP ancora disponibili per essere utilizzati oggi sono soltanto indirizzi di classe C.

3.5 La maschera di rete

Una maschera di rete (netmask) è più propriamente chiamata maschera di sottorete. Comunque ci si può generalmente riferire a essa come a una maschera di rete.

È sulla maschera di rete e sulle implicazioni che produrrà nella interpretazione degli indirizzi locali di una rete, che ci concentreremo adesso, dal momento che essa determinerà la realizzazione stessa della sottorete.

La maschera di (sotto)rete standard è costituita da tutti '1' nei bit relativi alla rete e da tutti '0' nei bit relativi agli host. Questo significa che le maschere standard per le tre classi di rete sono:

Vi sono due aspetti importanti da ricordare a questo proposito:

4. Cosa sono le sottoreti?

Una sottorete rappresenta un modo per prendere un singolo indirizzo di rete IP e suddividerlo localmente in maniera tale che questo stesso indirizzo possa essere utilizzato su diverse reti locali interconnesse. Si ricordi che un singolo indirizzo di rete IP può essere usato soltanto per una rete.

La parola chiave è locale: per tutto quanto riguarda il mondo che sta all'esterno rispetto alla macchine e alle reti fisiche coinvolte nell'operazione di realizzazione delle sottoreti a partire da un'unica rete IP, nulla è cambiato - il tutto viene visto ancora come un'unica rete IP. Questo concetto è importante - il "sub-networking" è una configurazione locale ed è invisibile al resto del mondo.

5. Perché usare le sottoreti?

La ragione che sta dietro a questa soluzione risale alla prime caratteristiche di IP - quando una manciata di siti utilizzavano indirizzi di classe A permettendo a milioni di host di connettersi ad essi.

È evidente che si presenterebbero enormi problemi di traffico e di amministrazione se tutti i computer di un grande sito dovessero essere connessi alla stessa rete: provare a gestire un tale mostro sarebbe un incubo e la rete potrebbe (quasi certamente) collassare sotto il carico del suo stesso traffico (saturazione).

Adottando il "sub-networking": la rete di Classe A può essere suddivisa in diverse (anche molte) reti separate, l'amministrazione delle quali può facilmente a sua volta essere ripartita.

Questo consente di realizzare piccole reti, facilmente gestibili - in grado anche, in una certa misura, di utilizzare tecnologie differenti. Si ricordi che non si possono mescolare Ethernet, Token Ring, FDDI, ATM ecc sulla stessa rete fisica - ma possono sempre essere interconnesse.

Altre ragioni per usare le sottoreti sono:

6. Come predisporre una sottorete a partire da un indirizzo IP

Avete deciso di suddividere il vostro indirizzo di rete IP per usarlo in tante sottoreti, come potete fare? Di seguito sono elencati i passi salienti da compiere, che verrano spiegati in dettaglio più avanti:

Per i propositi di questo esempio si assumerà di disporre di una rete classe C, il cui unico indirizzo è: 192.168.1.0

Questa classe ci rende disponibili fino a un massimo di 254 interfacce (host), più l'indirizzo di rete (192.168.1.0) e l'indirizzo di broadcast (192.168.1.255).

6.1 Impostare le connessioni fisiche

Avrete bisogno di installare le corrette infrastrutture di cablaggio per interconnettere tutti i dispositivi previsti in modo compatibile con la struttura fisica del sito.

Avrete bisogno di approntare dei meccanismi per connettere insieme i vari segmenti (router, convertitori per mezzi diversi ecc.)

Una discussione dettagliata di questi aspetti è ovviamente impossibile in questa sede. Se doveste averne bisogno esistono consulenti che offrono proprio questo tipo di servizio di progettazione e installazione di reti. È anche disponibile dell'aiuto gratuito in un certo numero di newsgroup (si veda comp.os.linux.networking).

6.2 Determinare la grandezza della sottorete

Il numero di possibili sottoreti che si possono creare si scontra con un certo numero di indirizzi IP 'sprecati' come conseguenza di questa operazione.

Ogni rete IP possiede due indirizzi non assegnabili direttamente agli host - l'indirizzo di rete in sè e l'indirizzo di broadcast. Quando si creano delle sotoreti, ciascuna di esse ha bisogno che le venga riservata una coppia di questi indirizzi - essi devono essere numeri validi all'interno dell'intervallo di indirizzi relativo a ciascuna sottorete.

Quindi, suddividendo un rete in due sottoreti separate troveremo due indirizzi di rete e due indirizzi di broadcast - con la conseguenza di aumentare il numero degli indirizzi 'inutilizzabili' per le interfacce (host); creando 4 sottoreti gli indirizzi che si "perdono" diventano otto, e così via.

Il limite minimo nelle dimensioni di una sottorete consta di 4 indirizzi IP:

Perché poi si voglia realizzare una rete tanto piccola è un'altra questione! Con un singolo host tutto il traffico deve dirigersi verso un'altra rete. In ogni caso l'esempio è utile per comprendere gli effetti della diminuzione degli indirizzi utili, nella creazione di sottoreti.

Inizialmente l'indirizzo IP a disposizione può essere suddiviso in 2^n (n rappresenta il numero di bit a disposizione degli host nell'indirizzo, diminuito di uno) indirizzi di sottorete di uguali dimensioni (una sottorete potrà essere poi ulteriormente suddivisa).

Si deve cercare di essere pragmatici durante la progettazione - è opportuno stimare il numero minimo di singole sottoreti che sia consistente con i vincoli fisici, di gestione, tecnologici e di sicurezza.

6.3 Calcolare la maschera di sottorete e l'indirizzo di rete

La maschera di sottorete è l'oggetto magico che consente la suddivisione locale di una rete in sottoreti multiple.

La maschera di rete, se non vi sono suddivisioni è semplicemente realizzata ponendo a '1' tutti i bit dello spazio di indirizzamento di rete e a '0' tutti i bit destinati agli host.

Quindi, per le tre classi, avremo le seguenti maschere standard:

Il modo con cui si realizza una sottorete è chiedere in prestito uno o più bit allo spazio degli host e fare in modo che le interfacce interpretino localmente questi bit presi in prestito come parte dei bit relativi allo spazio di rete. Allora, per ottenere due sottoreti chiederemo un bit allo spazio degli host mettendo a '1' il bit appropriato nella maschera di rete.

Per un indirizzo di classe C, questa sarà la maschera di rete:

Per la rete di classe C del nostro esempio (192.168.1.0), quelle di seguito sono alcune delle soluzioni possibili:


No di
sottoreti    Host        Rete                       Maschera
----------|--------|---------------|-------------------------------------
2            126        255.255.255.128 (11111111.11111111.11111111.10000000)
4             62        255.255.255.192 (11111111.11111111.11111111.11000000)
8             30        255.255.255.224 (11111111.11111111.11111111.11100000)
16            14        255.255.255.240 (11111111.11111111.11111111.11110000)
32             6        255.255.255.248 (11111111.11111111.11111111.11111000)
64             2        255.255.255.252 (11111111.11111111.11111111.11111100)

Non vi è nessuna ragione di principio che obblighi a procedere secondo questa tecnica in cui i bit della maschera di rete sono aggiunti a partire dal bit più significativo degli host procedendo verso il meno significativo. Però se non si fa così gli indirizzi che risulteranno saranno molto strani, rendendo a noi umani la vita difficile nel determinare a quale sottorete appartenga un particolare indirizzo, visto che non siamo abili a pensare in numeri binari (i computer invece trattano e tratteranno qualunque schema verrà loro sottoposto con definita equanimità).

Una volta decisa la maschera di rete, si deve lavorare sugli indirizzi di rete e di broadcast - e sugli intervalli di indirizzi resisi disponibili a questo punto, per ciascuna sottorete. Ancora, considerando solo una rete di Classe C, elenchiamo soltanto la parte finale dell'indirizzo:


Netmask         Subnets Network B'cast  MinIP   MaxIP   Hosts  Total Hosts
--------------------------------------------------------------------------
    128            2       0     127       1     126    126     
                         128     255     129     254    126             252

    192            4       0      63       1      62     62
                              64         127      65     126     62
                                 128     191     129     190     62
                                 192     255     193     254     62             248

    224            8       0      31       1      30     30
                              32          63      33      62     30
                                  64      95      65      94     30
                                  96     127      97     126     30
                                 128     159     129     158     30
                                 160     191     161     190     30
                                 192     223     193     222     30
                                 224     255     225     254     30             240

Come si può vedere, c'è una sequenza perfettamente definita in questi numeri che li rende piuttosto facili da verificare. La parte 'spiacevole' della realizzazione delle sottoreti è visibile nei termini di una riduzione del numero degli indirizzi disponibili per gli host, a mano a mano che si aumenta il numero delle sottoreti.

Con le informazioni fino a qui accumulate si può procedere ad assegnare host, indirizzi di rete e maschere di rete.

7. Instradamento

Se utilizate Linux su un PC con due interfacce di rete come router tra due (o più) sottoreti, dovrete verificare che il kernel supporti l'IP Forwarding. Lanciate un comando di questo tipo:


        cat /proc/ksyms | grep ip_forward

Dovreste ottenere qualcosa del genere...


00141364 ip_forward_Rf71ac834

Se non accade significa che il supporto per l'IP forwarding non è disponibile e dovrete ricompilare e reinstallare il kernel riconfigurato.

Per il nostro esempio, facciamo l'ipotesi che si voglia suddividere l'indirizzo di classe C 192.168.1.0 in 4 sottoreti (ognuna dele quali disponga di 62 indirizzi liberi per le interfacce). Poi due di queste sottoreti si vuole che siano riaccorpate a costituire un'unica rete più grande, ottenendo così fisicamente tre reti.

Si avrà:


Rete            Broadcast               Maschera                        Hosts
192.168.1.0     192.168.1.63    255.255.255.192         62
192.168.1.64    192.168.1.127   255.255.255.192         62
182.168.1.128   192.168.1.255   255.255.255.126         124 (see note)

Nota: la ragione per la quale l'ultima rete ha soltanto 124 indirizzi utili (invece di 126 come ci si sarebbe aspettati) sta nel fatto che essa è una 'super rete' composta di due sottoreti. Gli host delle altre due reti interpreteranno 192.168.1.192 come indirizzo di rete della sottorete 'non esistente'. E 192.168.1.191 come indirizzo di broadcast della sottorete 'non esistente'.

Quindi, se si utilizzasse 192.168.1.191 o 192 come indirizzi di host sulla terza rete, le macchine delle sottoreti più piccole non sarebbero in grado di comunicare tra loro.

Ciò mette in evidenza un aspetto importante della questione - gli indirizzi utilizzabili sono determinati dalla sottorete PIÙ PICCOLA in un determinato spazio di indirizzamento.

7.1 Le tabelle di instradamento

Si assuma che un computer con un sistema Linux agisca come router per questa sottorete. Esso avrà tre interfacce di rete per le LAN e, con ogni probabilità una quarta interfaccia verso Internet (che rappresenterà il suo instradamento predefinito - dafault route).

Facciamo l'ipotesi che la macchina Linux utilizzi il più basso degli indirizzi IP disponibili in ciascuna sottorete per ognuna delle proprie interfacce. La configurazione di rete sarà del tipo seguente:


Interfaccia     Indirizzo               Maschera
eth0            192.168.1.1             255.255.255.192
eth1            192.168.1.65    255.255.255.192
eth2            192.168.1.129   255.255.255.128

L'instradamento (routing) che Linux predisporrà potrà essere:


Destinazione    Gateway         Maschera        Iface
192.168.1.0     0.0.0.0         255.255.255.192         eth0
192.168.1.64    0.0.0.0         255.255.255.192         eth1
192.168.1.128   0.0.0.0         255.255.255.128         eth2

Su ciascuna sottorete, gli host dovrebbero essere configurati con il proprio indirizzo IP e la maschera relativa alla rete cui appartengono. In ciascun host verrà dichiarato come suo gateway/router il PC Linux con l'indirizzo che esso ha nella sottorete in cui si trova l'host stesso.

Robert Hart Melbourne, Australia March 1997.